@@ -12,8 +12,7 @@ declare void @usei1(i1)
12
12
13
13
define i32 @usub_sat_C1_C2 (i32 %a ){
14
14
; CHECK-LABEL: @usub_sat_C1_C2(
15
- ; CHECK-NEXT: [[ADD:%.*]] = sub nuw i32 64, [[A:%.*]]
16
- ; CHECK-NEXT: [[COND:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[ADD]], i32 14)
15
+ ; CHECK-NEXT: [[COND:%.*]] = call i32 @llvm.usub.sat.i32(i32 50, i32 [[A:%.*]])
17
16
; CHECK-NEXT: ret i32 [[COND]]
18
17
;
19
18
%add = sub nuw i32 64 , %a
@@ -23,9 +22,7 @@ define i32 @usub_sat_C1_C2(i32 %a){
23
22
24
23
define i32 @usub_sat_C1_C2_produce_0 (i32 %a ){
25
24
; CHECK-LABEL: @usub_sat_C1_C2_produce_0(
26
- ; CHECK-NEXT: [[ADD:%.*]] = sub nuw i32 14, [[A:%.*]]
27
- ; CHECK-NEXT: [[COND:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[ADD]], i32 14)
28
- ; CHECK-NEXT: ret i32 [[COND]]
25
+ ; CHECK-NEXT: ret i32 0
29
26
;
30
27
%add = sub nuw i32 14 , %a
31
28
%cond = call i32 @llvm.usub.sat.i32 (i32 %add , i32 14 )
@@ -34,9 +31,7 @@ define i32 @usub_sat_C1_C2_produce_0(i32 %a){
34
31
35
32
define i32 @usub_sat_C1_C2_produce_0_too (i32 %a ){
36
33
; CHECK-LABEL: @usub_sat_C1_C2_produce_0_too(
37
- ; CHECK-NEXT: [[ADD:%.*]] = sub nuw i32 12, [[A:%.*]]
38
- ; CHECK-NEXT: [[COND:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[ADD]], i32 14)
39
- ; CHECK-NEXT: ret i32 [[COND]]
34
+ ; CHECK-NEXT: ret i32 0
40
35
;
41
36
%add = sub nuw i32 12 , %a
42
37
%cond = call i32 @llvm.usub.sat.i32 (i32 %add , i32 14 )
@@ -46,8 +41,7 @@ define i32 @usub_sat_C1_C2_produce_0_too(i32 %a){
46
41
; vector tests
47
42
define <2 x i16 > @usub_sat_C1_C2_splat (<2 x i16 > %a ) {
48
43
; CHECK-LABEL: @usub_sat_C1_C2_splat(
49
- ; CHECK-NEXT: [[ADD:%.*]] = sub nuw <2 x i16> <i16 64, i16 64>, [[A:%.*]]
50
- ; CHECK-NEXT: [[COND:%.*]] = call <2 x i16> @llvm.usub.sat.v2i16(<2 x i16> [[ADD]], <2 x i16> <i16 14, i16 14>)
44
+ ; CHECK-NEXT: [[COND:%.*]] = call <2 x i16> @llvm.usub.sat.v2i16(<2 x i16> <i16 50, i16 50>, <2 x i16> [[A:%.*]])
51
45
; CHECK-NEXT: ret <2 x i16> [[COND]]
52
46
;
53
47
%add = sub nuw <2 x i16 > <i16 64 , i16 64 >, %a
@@ -57,9 +51,7 @@ define <2 x i16> @usub_sat_C1_C2_splat(<2 x i16> %a) {
57
51
58
52
define <2 x i16 > @usub_sat_C1_C2_splat_produce_0 (<2 x i16 > %a ){
59
53
; CHECK-LABEL: @usub_sat_C1_C2_splat_produce_0(
60
- ; CHECK-NEXT: [[ADD:%.*]] = sub nuw <2 x i16> <i16 14, i16 14>, [[A:%.*]]
61
- ; CHECK-NEXT: [[COND:%.*]] = call <2 x i16> @llvm.usub.sat.v2i16(<2 x i16> [[ADD]], <2 x i16> <i16 14, i16 14>)
62
- ; CHECK-NEXT: ret <2 x i16> [[COND]]
54
+ ; CHECK-NEXT: ret <2 x i16> zeroinitializer
63
55
;
64
56
%add = sub nuw <2 x i16 > <i16 14 , i16 14 >, %a
65
57
%cond = call <2 x i16 > @llvm.usub.sat.v2i16 (<2 x i16 > %add , <2 x i16 > <i16 14 , i16 14 >)
@@ -68,9 +60,7 @@ define <2 x i16> @usub_sat_C1_C2_splat_produce_0(<2 x i16> %a){
68
60
69
61
define <2 x i16 > @usub_sat_C1_C2_splat_produce_0_too (<2 x i16 > %a ){
70
62
; CHECK-LABEL: @usub_sat_C1_C2_splat_produce_0_too(
71
- ; CHECK-NEXT: [[ADD:%.*]] = sub nuw <2 x i16> <i16 12, i16 12>, [[A:%.*]]
72
- ; CHECK-NEXT: [[COND:%.*]] = call <2 x i16> @llvm.usub.sat.v2i16(<2 x i16> [[ADD]], <2 x i16> <i16 14, i16 14>)
73
- ; CHECK-NEXT: ret <2 x i16> [[COND]]
63
+ ; CHECK-NEXT: ret <2 x i16> zeroinitializer
74
64
;
75
65
%add = sub nuw <2 x i16 > <i16 12 , i16 12 >, %a
76
66
%cond = call <2 x i16 > @llvm.usub.sat.v2i16 (<2 x i16 > %add , <2 x i16 > <i16 14 , i16 14 >)
0 commit comments