@@ -10,9 +10,9 @@ define void @test() #0 {
10
10
; CHECK-NEXT: bb:
11
11
; CHECK-NEXT: br label [[BB1:%.*]]
12
12
; CHECK: bb1:
13
- ; CHECK-NEXT: [[TMP:%.*]] = phi i32 [ undef , [[BB1]] ], [ undef , [[BB:%.*]] ]
14
- ; CHECK-NEXT: [[TMP2:%.*]] = phi i32 [ [[TMP18:%.*]], [[BB1]] ], [ undef , [[BB]] ]
15
- ; CHECK-NEXT: [[TMP3:%.*]] = mul i32 undef , [[TMP]]
13
+ ; CHECK-NEXT: [[TMP:%.*]] = phi i32 [ 1 , [[BB1]] ], [ 2 , [[BB:%.*]] ]
14
+ ; CHECK-NEXT: [[TMP2:%.*]] = phi i32 [ [[TMP18:%.*]], [[BB1]] ], [ 3 , [[BB]] ]
15
+ ; CHECK-NEXT: [[TMP3:%.*]] = mul i32 4 , [[TMP]]
16
16
; CHECK-NEXT: [[TMP4:%.*]] = mul i32 [[TMP3]], [[TMP]]
17
17
; CHECK-NEXT: [[TMP5:%.*]] = mul i32 [[TMP4]], [[TMP]]
18
18
; CHECK-NEXT: [[TMP6:%.*]] = mul i32 [[TMP5]], [[TMP]]
34
34
br label %bb1
35
35
36
36
bb1: ; preds = %bb1, %bb
37
- %tmp = phi i32 [ undef , %bb1 ], [ undef , %bb ]
38
- %tmp2 = phi i32 [ %tmp18 , %bb1 ], [ undef , %bb ]
39
- %tmp3 = mul i32 undef , %tmp
37
+ %tmp = phi i32 [ 1 , %bb1 ], [ 2 , %bb ]
38
+ %tmp2 = phi i32 [ %tmp18 , %bb1 ], [ 3 , %bb ]
39
+ %tmp3 = mul i32 4 , %tmp
40
40
%tmp4 = mul i32 %tmp3 , %tmp
41
41
%tmp5 = mul i32 %tmp4 , %tmp
42
42
%tmp6 = mul i32 %tmp5 , %tmp
@@ -60,35 +60,35 @@ define void @test_2(ptr addrspace(1) %arg, i32 %arg1) #0 {
60
60
; CHECK-NEXT: bb:
61
61
; CHECK-NEXT: br label [[BB2:%.*]]
62
62
; CHECK: bb2:
63
- ; CHECK-NEXT: [[TMP:%.*]] = phi i32 [ undef , [[BB:%.*]] ], [ undef , [[BB2]] ]
64
- ; CHECK-NEXT: [[TMP3:%.*]] = phi i32 [ 0, [[BB]] ], [ undef , [[BB2]] ]
63
+ ; CHECK-NEXT: [[TMP:%.*]] = phi i32 [ 3 , [[BB:%.*]] ], [ 3 , [[BB2]] ]
64
+ ; CHECK-NEXT: [[TMP3:%.*]] = phi i32 [ 0, [[BB]] ], [ 3 , [[BB2]] ]
65
65
; CHECK-NEXT: [[TMP0:%.*]] = mul i32 [[TMP]], 8
66
- ; CHECK-NEXT: [[OP_RDX:%.*]] = add i32 undef , [[TMP0]]
66
+ ; CHECK-NEXT: [[OP_RDX:%.*]] = add i32 27 , [[TMP0]]
67
67
; CHECK-NEXT: call void @use(i32 [[OP_RDX]])
68
68
; CHECK-NEXT: br label [[BB2]]
69
69
;
70
70
bb:
71
71
br label %bb2
72
72
73
73
bb2: ; preds = %bb2, %bb
74
- %tmp = phi i32 [ undef , %bb ], [ undef , %bb2 ]
75
- %tmp3 = phi i32 [ 0 , %bb ], [ undef , %bb2 ]
76
- %tmp4 = add i32 %tmp , undef
77
- %tmp5 = add i32 undef , %tmp4
74
+ %tmp = phi i32 [ 3 , %bb ], [ 3 , %bb2 ]
75
+ %tmp3 = phi i32 [ 0 , %bb ], [ 3 , %bb2 ]
76
+ %tmp4 = add i32 %tmp , 3
77
+ %tmp5 = add i32 3 , %tmp4
78
78
%tmp6 = add i32 %tmp , %tmp5
79
- %tmp7 = add i32 undef , %tmp6
79
+ %tmp7 = add i32 3 , %tmp6
80
80
%tmp8 = add i32 %tmp , %tmp7
81
- %tmp9 = add i32 undef , %tmp8
81
+ %tmp9 = add i32 3 , %tmp8
82
82
%tmp10 = add i32 %tmp , %tmp9
83
- %tmp11 = add i32 undef , %tmp10
83
+ %tmp11 = add i32 3 , %tmp10
84
84
%tmp12 = add i32 %tmp , %tmp11
85
- %tmp13 = add i32 undef , %tmp12
85
+ %tmp13 = add i32 3 , %tmp12
86
86
%tmp14 = add i32 %tmp , %tmp13
87
- %tmp15 = add i32 undef , %tmp14
87
+ %tmp15 = add i32 3 , %tmp14
88
88
%tmp16 = add i32 %tmp , %tmp15
89
- %tmp17 = add i32 undef , %tmp16
89
+ %tmp17 = add i32 3 , %tmp16
90
90
%tmp18 = add i32 %tmp , %tmp17
91
- %tmp19 = add i32 undef , %tmp18
91
+ %tmp19 = add i32 3 , %tmp18
92
92
call void @use (i32 %tmp19 )
93
93
br label %bb2
94
94
}
@@ -103,8 +103,8 @@ define i64 @test_3() #0 {
103
103
; CHECK: bb2:
104
104
; CHECK-NEXT: br label [[BB3]]
105
105
; CHECK: bb3:
106
- ; CHECK-NEXT: [[VAL:%.*]] = phi i32 [ undef , [[BB1]] ], [ undef , [[BB2:%.*]] ]
107
- ; CHECK-NEXT: [[VAL4:%.*]] = phi i32 [ undef , [[BB1]] ], [ undef , [[BB2]] ]
106
+ ; CHECK-NEXT: [[VAL:%.*]] = phi i32 [ 3 , [[BB1]] ], [ 3 , [[BB2:%.*]] ]
107
+ ; CHECK-NEXT: [[VAL4:%.*]] = phi i32 [ 3 , [[BB1]] ], [ 3 , [[BB2]] ]
108
108
; CHECK-NEXT: [[TMP0:%.*]] = insertelement <32 x i32> poison, i32 [[VAL4]], i32 0
109
109
; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <32 x i32> [[TMP0]], <32 x i32> poison, <32 x i32> zeroinitializer
110
110
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @llvm.vector.reduce.mul.v32i32(<32 x i32> [[TMP1]])
@@ -136,7 +136,7 @@ define i64 @test_3() #0 {
136
136
; CHECK-NEXT: [[OP_RDX25:%.*]] = mul i32 [[OP_RDX21]], [[OP_RDX22]]
137
137
; CHECK-NEXT: [[OP_RDX26:%.*]] = mul i32 [[OP_RDX23]], [[OP_RDX24]]
138
138
; CHECK-NEXT: [[OP_RDX27:%.*]] = mul i32 [[OP_RDX25]], [[OP_RDX26]]
139
- ; CHECK-NEXT: [[VAL64:%.*]] = add i32 undef , [[OP_RDX27]]
139
+ ; CHECK-NEXT: [[VAL64:%.*]] = add i32 3 , [[OP_RDX27]]
140
140
; CHECK-NEXT: [[VAL65:%.*]] = sext i32 [[VAL64]] to i64
141
141
; CHECK-NEXT: ret i64 [[VAL65]]
142
142
;
@@ -150,8 +150,8 @@ bb2: ; No predecessors!
150
150
br label %bb3
151
151
152
152
bb3: ; preds = %bb2, %bb1
153
- %val = phi i32 [ undef , %bb1 ], [ undef , %bb2 ]
154
- %val4 = phi i32 [ undef , %bb1 ], [ undef , %bb2 ]
153
+ %val = phi i32 [ 3 , %bb1 ], [ 3 , %bb2 ]
154
+ %val4 = phi i32 [ 3 , %bb1 ], [ 3 , %bb2 ]
155
155
%val5 = mul i32 %val , %val4
156
156
%val6 = mul i32 %val5 , %val4
157
157
%val7 = mul i32 %val6 , %val4
@@ -211,7 +211,7 @@ bb3: ; preds = %bb2, %bb1
211
211
%val61 = mul i32 %val60 , %val4
212
212
%val62 = mul i32 %val61 , %val4
213
213
%val63 = mul i32 %val62 , %val4
214
- %val64 = add i32 undef , %val63
214
+ %val64 = add i32 3 , %val63
215
215
%val65 = sext i32 %val64 to i64
216
216
ret i64 %val65
217
217
}
0 commit comments