@@ -6,8 +6,7 @@ declare void @llvm.assume(i1)
6
6
7
7
define i1 @mul_unkV_oddC_eq (i32 %v ) {
8
8
; CHECK-LABEL: @mul_unkV_oddC_eq(
9
- ; CHECK-NEXT: [[MUL:%.*]] = mul i32 [[V:%.*]], 3
10
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[MUL]], 0
9
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[V:%.*]], 0
11
10
; CHECK-NEXT: ret i1 [[CMP]]
12
11
;
13
12
%mul = mul i32 %v , 3
@@ -28,8 +27,7 @@ define i1 @mul_unkV_oddC_eq_nonzero(i32 %v) {
28
27
29
28
define <2 x i1 > @mul_unkV_oddC_ne_vec (<2 x i64 > %v ) {
30
29
; CHECK-LABEL: @mul_unkV_oddC_ne_vec(
31
- ; CHECK-NEXT: [[MUL:%.*]] = mul <2 x i64> [[V:%.*]], <i64 3, i64 3>
32
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <2 x i64> [[MUL]], zeroinitializer
30
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <2 x i64> [[V:%.*]], zeroinitializer
33
31
; CHECK-NEXT: ret <2 x i1> [[CMP]]
34
32
;
35
33
%mul = mul <2 x i64 > %v , <i64 3 , i64 3 >
@@ -72,7 +70,7 @@ define i1 @mul_unkV_oddC_sge(i8 %v) {
72
70
define i1 @mul_reused_unkV_oddC_ne (i64 %v ) {
73
71
; CHECK-LABEL: @mul_reused_unkV_oddC_ne(
74
72
; CHECK-NEXT: [[MUL:%.*]] = mul i64 [[V:%.*]], 3
75
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i64 [[MUL ]], 0
73
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i64 [[V ]], 0
76
74
; CHECK-NEXT: call void @use64(i64 [[MUL]])
77
75
; CHECK-NEXT: ret i1 [[CMP]]
78
76
;
@@ -87,8 +85,7 @@ define i1 @mul_assumeoddV_unkV_eq(i16 %v, i16 %v2) {
87
85
; CHECK-NEXT: [[LB:%.*]] = and i16 [[V2:%.*]], 1
88
86
; CHECK-NEXT: [[ODD:%.*]] = icmp ne i16 [[LB]], 0
89
87
; CHECK-NEXT: call void @llvm.assume(i1 [[ODD]])
90
- ; CHECK-NEXT: [[MUL:%.*]] = mul i16 [[V:%.*]], [[V2]]
91
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i16 [[MUL]], 0
88
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i16 [[V:%.*]], 0
92
89
; CHECK-NEXT: ret i1 [[CMP]]
93
90
;
94
91
%lb = and i16 %v2 , 1
@@ -105,7 +102,7 @@ define i1 @mul_reusedassumeoddV_unkV_ne(i64 %v, i64 %v2) {
105
102
; CHECK-NEXT: [[ODD:%.*]] = icmp ne i64 [[LB]], 0
106
103
; CHECK-NEXT: call void @llvm.assume(i1 [[ODD]])
107
104
; CHECK-NEXT: [[MUL:%.*]] = mul i64 [[V]], [[V2:%.*]]
108
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i64 [[MUL ]], 0
105
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i64 [[V2 ]], 0
109
106
; CHECK-NEXT: call void @use64(i64 [[MUL]])
110
107
; CHECK-NEXT: ret i1 [[CMP]]
111
108
;
@@ -120,9 +117,7 @@ define i1 @mul_reusedassumeoddV_unkV_ne(i64 %v, i64 %v2) {
120
117
121
118
define <2 x i1 > @mul_setoddV_unkV_ne (<2 x i32 > %v1 , <2 x i32 > %v2 ) {
122
119
; CHECK-LABEL: @mul_setoddV_unkV_ne(
123
- ; CHECK-NEXT: [[V:%.*]] = or <2 x i32> [[V1:%.*]], <i32 1, i32 1>
124
- ; CHECK-NEXT: [[MUL:%.*]] = mul <2 x i32> [[V]], [[V2:%.*]]
125
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <2 x i32> [[MUL]], zeroinitializer
120
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <2 x i32> [[V2:%.*]], zeroinitializer
126
121
; CHECK-NEXT: ret <2 x i1> [[CMP]]
127
122
;
128
123
%v = or <2 x i32 > %v1 , <i32 1 , i32 1 >
@@ -190,8 +185,7 @@ define i1 @mul_assumenzV_unkV_nsw_ne(i32 %v, i32 %v2) {
190
185
; CHECK-LABEL: @mul_assumenzV_unkV_nsw_ne(
191
186
; CHECK-NEXT: [[NZ:%.*]] = icmp ne i32 [[V:%.*]], 0
192
187
; CHECK-NEXT: call void @llvm.assume(i1 [[NZ]])
193
- ; CHECK-NEXT: [[MUL:%.*]] = mul nsw i32 [[V]], [[V2:%.*]]
194
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[MUL]], 0
188
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[V2:%.*]], 0
195
189
; CHECK-NEXT: ret i1 [[CMP]]
196
190
;
197
191
%nz = icmp ne i32 %v , 0
@@ -229,9 +223,7 @@ define <2 x i1> @mul_unkV_unkV_nsw_nuw_ne(<2 x i16> %v, <2 x i16> %v2) {
229
223
230
224
define i1 @mul_setnzV_unkV_nuw_eq (i8 %v1 , i8 %v2 ) {
231
225
; CHECK-LABEL: @mul_setnzV_unkV_nuw_eq(
232
- ; CHECK-NEXT: [[V:%.*]] = or i8 [[V1:%.*]], 2
233
- ; CHECK-NEXT: [[MUL:%.*]] = mul nuw i8 [[V]], [[V2:%.*]]
234
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[MUL]], 0
226
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[V2:%.*]], 0
235
227
; CHECK-NEXT: ret i1 [[CMP]]
236
228
;
237
229
%v = or i8 %v1 , 2
@@ -245,8 +237,7 @@ define i1 @mul_brnzV_unkV_nuw_eq(i64 %v, i64 %v2) {
245
237
; CHECK-NEXT: [[NZ_NOT:%.*]] = icmp eq i64 [[V2:%.*]], 0
246
238
; CHECK-NEXT: br i1 [[NZ_NOT]], label [[FALSE:%.*]], label [[TRUE:%.*]]
247
239
; CHECK: true:
248
- ; CHECK-NEXT: [[MUL:%.*]] = mul nuw i64 [[V:%.*]], [[V2]]
249
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[MUL]], 0
240
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[V:%.*]], 0
250
241
; CHECK-NEXT: ret i1 [[CMP]]
251
242
; CHECK: false:
252
243
; CHECK-NEXT: call void @use64(i64 [[V]])
0 commit comments