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