@@ -11,23 +11,49 @@ define void @hoge() {
11
11
; CHECK-NEXT: ret void
12
12
; CHECK: bb2:
13
13
; CHECK-NEXT: [[T:%.*]] = select i1 undef, i16 undef, i16 15
14
- ; CHECK-NEXT: [[TMP0:%.*]] = insertelement <2 x i16> <i16 poison, i16 undef>, i16 [[T]], i32 0
15
- ; CHECK-NEXT: [[TMP1:%.*]] = sext <2 x i16> [[TMP0]] to <2 x i32>
16
- ; CHECK-NEXT: [[TMP2:%.*]] = sub nsw <2 x i32> <i32 undef, i32 63>, [[TMP1]]
17
- ; CHECK-NEXT: [[TMP3:%.*]] = sub <2 x i32> [[TMP2]], undef
18
- ; CHECK-NEXT: [[TMP4:%.*]] = shufflevector <2 x i32> [[TMP3]], <2 x i32> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
19
- ; CHECK-NEXT: [[TMP5:%.*]] = add <4 x i32> [[TMP4]], <i32 undef, i32 15, i32 31, i32 47>
20
- ; CHECK-NEXT: [[T18:%.*]] = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> [[TMP5]])
14
+ ; CHECK-NEXT: [[T3:%.*]] = sext i16 undef to i32
15
+ ; CHECK-NEXT: [[T4:%.*]] = sext i16 [[T]] to i32
16
+ ; CHECK-NEXT: [[T5:%.*]] = sub nsw i32 undef, [[T4]]
17
+ ; CHECK-NEXT: [[T6:%.*]] = sub i32 [[T5]], undef
18
+ ; CHECK-NEXT: [[T7:%.*]] = sub nsw i32 63, [[T3]]
19
+ ; CHECK-NEXT: [[T8:%.*]] = sub i32 [[T7]], undef
20
+ ; CHECK-NEXT: [[T9:%.*]] = add i32 [[T8]], undef
21
+ ; CHECK-NEXT: [[T10:%.*]] = add nsw i32 [[T6]], 15
22
+ ; CHECK-NEXT: [[T11:%.*]] = icmp sgt i32 [[T9]], [[T10]]
23
+ ; CHECK-NEXT: [[T12:%.*]] = select i1 [[T11]], i32 [[T9]], i32 [[T10]]
24
+ ; CHECK-NEXT: [[T13:%.*]] = add nsw i32 [[T6]], 31
25
+ ; CHECK-NEXT: [[T14:%.*]] = icmp sgt i32 [[T12]], [[T13]]
26
+ ; CHECK-NEXT: [[T15:%.*]] = select i1 [[T14]], i32 [[T12]], i32 [[T13]]
27
+ ; CHECK-NEXT: [[T16:%.*]] = add nsw i32 [[T6]], 47
28
+ ; CHECK-NEXT: [[T17:%.*]] = icmp sgt i32 [[T15]], [[T16]]
29
+ ; CHECK-NEXT: [[T18:%.*]] = select i1 [[T17]], i32 [[T15]], i32 [[T16]]
21
30
; CHECK-NEXT: [[T19:%.*]] = select i1 undef, i32 [[T18]], i32 undef
22
31
; CHECK-NEXT: [[T20:%.*]] = icmp sgt i32 [[T19]], 63
23
- ; CHECK-NEXT: [[TMP7 :%.*]] = sub nsw <2 x i32> undef, [[TMP1 ]]
24
- ; CHECK-NEXT: [[TMP8 :%.*]] = sub <2 x i32> [[TMP7 ]], undef
25
- ; CHECK-NEXT: [[TMP9 :%.*]] = shufflevector <2 x i32> [[TMP8]], <2 x i32> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
26
- ; CHECK-NEXT: [[TMP10 :%.*]] = add nsw <4 x i32> [[TMP9 ]], <i32 -49, i32 -33, i32 -33, i32 -17>
27
- ; CHECK-NEXT: [[T25:%.*]] = call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> [[TMP10]])
28
- ; CHECK-NEXT: [[OP_RDX:%.*]] = icmp slt i32 undef, [[T25]]
32
+ ; CHECK-NEXT: [[T21 :%.*]] = sub nsw i32 undef, [[T3 ]]
33
+ ; CHECK-NEXT: [[T22 :%.*]] = sub i32 [[T21 ]], undef
34
+ ; CHECK-NEXT: [[T23 :%.*]] = sub nsw i32 undef, [[T4]]
35
+ ; CHECK-NEXT: [[T24 :%.*]] = sub i32 [[T23 ]], undef
36
+ ; CHECK-NEXT: [[T25:%.*]] = add nsw i32 [[T24]], -49
37
+ ; CHECK-NEXT: [[OP_RDX:%.*]] = icmp sgt i32 [[T25]], undef
29
38
; CHECK-NEXT: [[OP_RDX1:%.*]] = select i1 [[OP_RDX]], i32 undef, i32 [[T25]]
30
- ; CHECK-NEXT: [[T45:%.*]] = icmp sgt i32 undef, [[OP_RDX1]]
39
+ ; CHECK-NEXT: [[T28:%.*]] = icmp sgt i32 [[OP_RDX1]], undef
40
+ ; CHECK-NEXT: [[T30:%.*]] = select i1 [[T28]], i32 undef, i32 [[OP_RDX1]]
41
+ ; CHECK-NEXT: [[T32:%.*]] = add nsw i32 [[T22]], -33
42
+ ; CHECK-NEXT: [[T31:%.*]] = icmp sgt i32 [[T32]], undef
43
+ ; CHECK-NEXT: [[T35:%.*]] = select i1 [[T31]], i32 undef, i32 [[T32]]
44
+ ; CHECK-NEXT: [[OP_RDX2:%.*]] = icmp sgt i32 [[T35]], [[T30]]
45
+ ; CHECK-NEXT: [[OP_RDX3:%.*]] = select i1 [[OP_RDX2]], i32 [[T30]], i32 [[T35]]
46
+ ; CHECK-NEXT: [[T39:%.*]] = add nsw i32 [[T24]], -33
47
+ ; CHECK-NEXT: [[T36:%.*]] = icmp sgt i32 [[T39]], undef
48
+ ; CHECK-NEXT: [[T37:%.*]] = select i1 [[T36]], i32 undef, i32 [[T39]]
49
+ ; CHECK-NEXT: [[T38:%.*]] = icmp sgt i32 [[T37]], [[OP_RDX3]]
50
+ ; CHECK-NEXT: [[OP_RDX5:%.*]] = select i1 [[T38]], i32 [[OP_RDX3]], i32 [[T37]]
51
+ ; CHECK-NEXT: [[T42:%.*]] = add nsw i32 [[T22]], -17
52
+ ; CHECK-NEXT: [[T41:%.*]] = icmp sgt i32 [[T42]], undef
53
+ ; CHECK-NEXT: [[T40:%.*]] = select i1 [[T41]], i32 undef, i32 [[T42]]
54
+ ; CHECK-NEXT: [[OP_RDX6:%.*]] = icmp sgt i32 [[T40]], [[OP_RDX5]]
55
+ ; CHECK-NEXT: [[OP_RDX7:%.*]] = select i1 [[OP_RDX6]], i32 [[OP_RDX5]], i32 [[T40]]
56
+ ; CHECK-NEXT: [[T45:%.*]] = icmp sgt i32 undef, [[OP_RDX7]]
31
57
; CHECK-NEXT: unreachable
32
58
;
33
59
bb:
0 commit comments