Skip to content

Commit f24175f

Browse files
committed
Autogen some tests for ease of update
1 parent d7c44a5 commit f24175f

File tree

8 files changed

+1487
-576
lines changed

8 files changed

+1487
-576
lines changed

llvm/test/Analysis/ValueTracking/deref-bitcast-of-gep.ll

Lines changed: 50 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
12
; RUN: opt -S -licm < %s | FileCheck %s
23

34
; Note: the !invariant.load is there just solely to let us call @use()
@@ -10,12 +11,16 @@ declare void @use(i32)
1011

1112
define void @f_0(i8* align 4 dereferenceable(1024) %ptr) {
1213
; CHECK-LABEL: @f_0(
13-
; CHECK: entry:
14-
; CHECK: %val = load i32, i32* %ptr.i32
15-
; CHECK: br label %loop
16-
; CHECK: loop:
17-
; CHECK: call void @use(i32 0)
18-
; CHECK-NEXT: call void @use(i32 %val)
14+
; CHECK-NEXT: entry:
15+
; CHECK-NEXT: [[PTR_GEP:%.*]] = getelementptr i8, i8* [[PTR:%.*]], i32 32
16+
; CHECK-NEXT: [[PTR_I32:%.*]] = bitcast i8* [[PTR_GEP]] to i32*
17+
; CHECK-NEXT: [[VAL:%.*]] = load i32, i32* [[PTR_I32]], align 4
18+
; CHECK-NEXT: br label [[LOOP:%.*]]
19+
; CHECK: loop:
20+
; CHECK-NEXT: call void @use(i32 0)
21+
; CHECK-NEXT: call void @use(i32 [[VAL]])
22+
; CHECK-NEXT: br label [[LOOP]]
23+
;
1924

2025

2126
entry:
@@ -32,18 +37,27 @@ loop:
3237

3338
define void @f_1(i8* align 4 dereferenceable_or_null(1024) %ptr) {
3439
; CHECK-LABEL: @f_1(
40+
; CHECK-NEXT: entry:
41+
; CHECK-NEXT: [[PTR_GEP:%.*]] = getelementptr i8, i8* [[PTR:%.*]], i32 32
42+
; CHECK-NEXT: [[PTR_I32:%.*]] = bitcast i8* [[PTR_GEP]] to i32*
43+
; CHECK-NEXT: [[PTR_IS_NULL:%.*]] = icmp eq i8* [[PTR]], null
44+
; CHECK-NEXT: br i1 [[PTR_IS_NULL]], label [[LEAVE:%.*]], label [[LOOP_PREHEADER:%.*]]
45+
; CHECK: loop.preheader:
46+
; CHECK-NEXT: [[VAL:%.*]] = load i32, i32* [[PTR_I32]], align 4
47+
; CHECK-NEXT: br label [[LOOP:%.*]]
48+
; CHECK: loop:
49+
; CHECK-NEXT: call void @use(i32 0)
50+
; CHECK-NEXT: call void @use(i32 [[VAL]])
51+
; CHECK-NEXT: br label [[LOOP]]
52+
; CHECK: leave:
53+
; CHECK-NEXT: ret void
54+
;
3555
entry:
3656
%ptr.gep = getelementptr i8, i8* %ptr, i32 32
3757
%ptr.i32 = bitcast i8* %ptr.gep to i32*
3858
%ptr_is_null = icmp eq i8* %ptr, null
3959
br i1 %ptr_is_null, label %leave, label %loop
4060

41-
; CHECK: loop.preheader:
42-
; CHECK: %val = load i32, i32* %ptr.i32
43-
; CHECK: br label %loop
44-
; CHECK: loop:
45-
; CHECK: call void @use(i32 0)
46-
; CHECK-NEXT: call void @use(i32 %val)
4761

4862
loop:
4963
call void @use(i32 0)
@@ -57,10 +71,21 @@ leave:
5771

5872
define void @f_2(i8* align 4 dereferenceable_or_null(1024) %ptr) {
5973
; CHECK-LABEL: @f_2(
60-
; CHECK-NOT: load
61-
; CHECK: call void @use(i32 0)
62-
; CHECK-NEXT: %val = load i32, i32* %ptr.i32, align 4, !invariant.load !0
63-
; CHECK-NEXT: call void @use(i32 %val)
74+
; CHECK-NEXT: entry:
75+
; CHECK-NEXT: [[PTR_GEP:%.*]] = getelementptr i8, i8* [[PTR:%.*]], i32 30
76+
; CHECK-NEXT: [[PTR_I32:%.*]] = bitcast i8* [[PTR_GEP]] to i32*
77+
; CHECK-NEXT: [[PTR_IS_NULL:%.*]] = icmp eq i8* [[PTR]], null
78+
; CHECK-NEXT: br i1 [[PTR_IS_NULL]], label [[LEAVE:%.*]], label [[LOOP_PREHEADER:%.*]]
79+
; CHECK: loop.preheader:
80+
; CHECK-NEXT: br label [[LOOP:%.*]]
81+
; CHECK: loop:
82+
; CHECK-NEXT: call void @use(i32 0)
83+
; CHECK-NEXT: [[VAL:%.*]] = load i32, i32* [[PTR_I32]], align 4, !invariant.load !0
84+
; CHECK-NEXT: call void @use(i32 [[VAL]])
85+
; CHECK-NEXT: br label [[LOOP]]
86+
; CHECK: leave:
87+
; CHECK-NEXT: ret void
88+
;
6489

6590
entry:
6691
;; Can't hoist, since the alignment does not work out -- (<4 byte
@@ -83,13 +108,15 @@ leave:
83108

84109
define void @checkLaunder(i8* align 4 dereferenceable(1024) %p) {
85110
; CHECK-LABEL: @checkLaunder(
86-
; CHECK: entry:
87-
; CHECK: %l = call i8* @llvm.launder.invariant.group.p0i8(i8* %p)
88-
; CHECK: %val = load i8, i8* %l
89-
; CHECK: br label %loop
90-
; CHECK: loop:
91-
; CHECK: call void @use(i32 0)
92-
; CHECK-NEXT: call void @use8(i8 %val)
111+
; CHECK-NEXT: entry:
112+
; CHECK-NEXT: [[L:%.*]] = call i8* @llvm.launder.invariant.group.p0i8(i8* [[P:%.*]])
113+
; CHECK-NEXT: [[VAL:%.*]] = load i8, i8* [[L]], align 1
114+
; CHECK-NEXT: br label [[LOOP:%.*]]
115+
; CHECK: loop:
116+
; CHECK-NEXT: call void @use(i32 0)
117+
; CHECK-NEXT: call void @use8(i8 [[VAL]])
118+
; CHECK-NEXT: br label [[LOOP]]
119+
;
93120

94121
entry:
95122
%l = call i8* @llvm.launder.invariant.group.p0i8(i8* %p)

llvm/test/CodeGen/X86/licm-dominance.ll

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,45 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --force-update
12
; RUN: llc -asm-verbose=true < %s | FileCheck %s
23

34
; MachineLICM should check dominance before hoisting instructions.
45
; only the load of a0 is guaranteed to execute, so only it can be hoisted.
5-
; CHECK: movb (%rdi), [[a0reg:%[a-z0-9]+]]
6-
; CHECK: ## %for.body.i
7-
; CHECK: testb [[a0reg]], [[a0reg]]
8-
; CHECK: ## in Loop:
9-
; CHECK: cmpb $1, ({{%[a-z0-9]+}})
10-
; CHECK: cmpb $2, ({{%[a-z0-9]+}})
11-
; CHECK: cmpb $3, ({{%[a-z0-9]+}})
126

137
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
148
target triple = "x86_64-apple-macosx10.7.2"
159

1610
define void @CMSColorWorldCreateParametricData(
17-
i8* dereferenceable(1) %a0,
18-
i8* dereferenceable(1) %a1,
19-
i8* dereferenceable(1) %a2,
20-
i8* dereferenceable(1) %a3,
21-
i64 %count) nounwind uwtable optsize ssp readonly {
11+
; CHECK-LABEL: CMSColorWorldCreateParametricData:
12+
; CHECK: ## %bb.0: ## %entry
13+
; CHECK-NEXT: xorl %eax, %eax
14+
; CHECK-NEXT: movb (%rdi), %dil
15+
; CHECK-NEXT: LBB0_1: ## %for.body.i
16+
; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1
17+
; CHECK-NEXT: testb %dil, %dil
18+
; CHECK-NEXT: je LBB0_5
19+
; CHECK-NEXT: ## %bb.2: ## %if.then26.i
20+
; CHECK-NEXT: ## in Loop: Header=BB0_1 Depth=1
21+
; CHECK-NEXT: cmpb $1, (%rsi)
22+
; CHECK-NEXT: jne LBB0_4
23+
; CHECK-NEXT: ## %bb.3: ## %if.else.i.i
24+
; CHECK-NEXT: ## in Loop: Header=BB0_1 Depth=1
25+
; CHECK-NEXT: cmpb $2, (%rdx)
26+
; CHECK-NEXT: jne LBB0_5
27+
; CHECK-NEXT: LBB0_4: ## %lor.lhs.false.i.i
28+
; CHECK-NEXT: ## in Loop: Header=BB0_1 Depth=1
29+
; CHECK-NEXT: cmpb $3, (%rcx)
30+
; CHECK-NEXT: jne LBB0_6
31+
; CHECK-NEXT: LBB0_5: ## %for.inc.i
32+
; CHECK-NEXT: ## in Loop: Header=BB0_1 Depth=1
33+
; CHECK-NEXT: incq %rax
34+
; CHECK-NEXT: cmpq %r8, %rax
35+
; CHECK-NEXT: jb LBB0_1
36+
; CHECK-NEXT: LBB0_6: ## %if.end28.i
37+
; CHECK-NEXT: retq
38+
i8* dereferenceable(1) %a0,
39+
i8* dereferenceable(1) %a1,
40+
i8* dereferenceable(1) %a2,
41+
i8* dereferenceable(1) %a3,
42+
i64 %count) nounwind uwtable optsize ssp readonly {
2243
entry:
2344
br label %for.body.i
2445

0 commit comments

Comments
 (0)