@@ -291,8 +291,7 @@ define i32 @test_icmp_trunc1(i32 %x){
291
291
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i16 [[Y]], 7
292
292
; CHECK-NEXT: br i1 [[CMP]], label [[THEN:%.*]], label [[ELSE:%.*]]
293
293
; CHECK: then:
294
- ; CHECK-NEXT: [[Z:%.*]] = and i32 [[X]], 15
295
- ; CHECK-NEXT: ret i32 [[Z]]
294
+ ; CHECK-NEXT: ret i32 7
296
295
; CHECK: else:
297
296
; CHECK-NEXT: ret i32 0
298
297
;
@@ -313,9 +312,8 @@ define i64 @test_icmp_trunc2(i64 %x) {
313
312
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[CONV]], 12
314
313
; CHECK-NEXT: br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
315
314
; CHECK: if.then:
316
- ; CHECK-NEXT: [[SEXT:%.*]] = shl i64 [[X]], 32
317
- ; CHECK-NEXT: [[RET:%.*]] = ashr exact i64 [[SEXT]], 32
318
- ; CHECK-NEXT: ret i64 [[RET]]
315
+ ; CHECK-NEXT: [[SEXT:%.*]] = and i64 [[X]], 2147483647
316
+ ; CHECK-NEXT: ret i64 [[SEXT]]
319
317
; CHECK: if.else:
320
318
; CHECK-NEXT: ret i64 0
321
319
;
@@ -338,7 +336,7 @@ define i64 @test_icmp_trunc3(i64 %n) {
338
336
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[CONV]], 96
339
337
; CHECK-NEXT: br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
340
338
; CHECK: if.then:
341
- ; CHECK-NEXT: [[RET:%.*]] = and i64 [[N]], 4294967295
339
+ ; CHECK-NEXT: [[RET:%.*]] = and i64 [[N]], 127
342
340
; CHECK-NEXT: ret i64 [[RET]]
343
341
; CHECK: if.else:
344
342
; CHECK-NEXT: ret i64 0
@@ -363,7 +361,7 @@ define i8 @test_icmp_trunc4(i64 %n) {
363
361
; CHECK-NEXT: br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
364
362
; CHECK: if.then:
365
363
; CHECK-NEXT: [[CONV2:%.*]] = trunc i64 [[N]] to i8
366
- ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[CONV2]], 48
364
+ ; CHECK-NEXT: [[ADD:%.*]] = or disjoint i8 [[CONV2]], 48
367
365
; CHECK-NEXT: ret i8 [[ADD]]
368
366
; CHECK: if.else:
369
367
; CHECK-NEXT: ret i8 0
@@ -389,8 +387,8 @@ define i64 @test_icmp_trunc5(i64 %n) {
389
387
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[CONV1]], -13
390
388
; CHECK-NEXT: br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
391
389
; CHECK: if.then:
392
- ; CHECK-NEXT: [[AND :%.*]] = and i64 [[SHR]], 4294967295
393
- ; CHECK-NEXT: [[NOT:%.*]] = xor i64 [[AND ]], 4294967295
390
+ ; CHECK-NEXT: [[TMP0 :%.*]] = and i64 [[SHR]], 15
391
+ ; CHECK-NEXT: [[NOT:%.*]] = xor i64 [[TMP0 ]], 15
394
392
; CHECK-NEXT: ret i64 [[NOT]]
395
393
; CHECK: if.else:
396
394
; CHECK-NEXT: ret i64 13
0 commit comments