@@ -386,10 +386,9 @@ define i32 @zext_ctpop_extra_use(i16 %x, i32* %q) {
386
386
387
387
define i32 @parity_xor (i32 %arg , i32 %arg1 ) {
388
388
; CHECK-LABEL: @parity_xor(
389
- ; CHECK-NEXT: [[I:%.*]] = tail call i32 @llvm.ctpop.i32(i32 [[ARG:%.*]]), !range [[RNG1]]
390
- ; CHECK-NEXT: [[I2:%.*]] = tail call i32 @llvm.ctpop.i32(i32 [[ARG1:%.*]]), !range [[RNG1]]
391
- ; CHECK-NEXT: [[I3:%.*]] = xor i32 [[I2]], [[I]]
392
- ; CHECK-NEXT: [[I4:%.*]] = and i32 [[I3]], 1
389
+ ; CHECK-NEXT: [[TMP1:%.*]] = xor i32 [[ARG1:%.*]], [[ARG:%.*]]
390
+ ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @llvm.ctpop.i32(i32 [[TMP1]]), !range [[RNG1]]
391
+ ; CHECK-NEXT: [[I4:%.*]] = and i32 [[TMP2]], 1
393
392
; CHECK-NEXT: ret i32 [[I4]]
394
393
;
395
394
%i = tail call i32 @llvm.ctpop.i32 (i32 %arg )
@@ -401,10 +400,9 @@ define i32 @parity_xor(i32 %arg, i32 %arg1) {
401
400
402
401
define i32 @parity_xor_trunc (i64 %arg , i64 %arg1 ) {
403
402
; CHECK-LABEL: @parity_xor_trunc(
404
- ; CHECK-NEXT: [[I:%.*]] = tail call i64 @llvm.ctpop.i64(i64 [[ARG:%.*]]), !range [[RNG5:![0-9]+]]
405
- ; CHECK-NEXT: [[I2:%.*]] = tail call i64 @llvm.ctpop.i64(i64 [[ARG1:%.*]]), !range [[RNG5]]
406
- ; CHECK-NEXT: [[I3:%.*]] = xor i64 [[I2]], [[I]]
407
- ; CHECK-NEXT: [[I4:%.*]] = trunc i64 [[I3]] to i32
403
+ ; CHECK-NEXT: [[TMP1:%.*]] = xor i64 [[ARG1:%.*]], [[ARG:%.*]]
404
+ ; CHECK-NEXT: [[TMP2:%.*]] = call i64 @llvm.ctpop.i64(i64 [[TMP1]]), !range [[RNG5:![0-9]+]]
405
+ ; CHECK-NEXT: [[I4:%.*]] = trunc i64 [[TMP2]] to i32
408
406
; CHECK-NEXT: [[I5:%.*]] = and i32 [[I4]], 1
409
407
; CHECK-NEXT: ret i32 [[I5]]
410
408
;
@@ -418,10 +416,9 @@ define i32 @parity_xor_trunc(i64 %arg, i64 %arg1) {
418
416
419
417
define <2 x i32 > @parity_xor_vec (<2 x i32 > %arg , <2 x i32 > %arg1 ) {
420
418
; CHECK-LABEL: @parity_xor_vec(
421
- ; CHECK-NEXT: [[I:%.*]] = tail call <2 x i32> @llvm.ctpop.v2i32(<2 x i32> [[ARG:%.*]])
422
- ; CHECK-NEXT: [[I2:%.*]] = tail call <2 x i32> @llvm.ctpop.v2i32(<2 x i32> [[ARG1:%.*]])
423
- ; CHECK-NEXT: [[I3:%.*]] = xor <2 x i32> [[I2]], [[I]]
424
- ; CHECK-NEXT: [[I4:%.*]] = and <2 x i32> [[I3]], <i32 1, i32 1>
419
+ ; CHECK-NEXT: [[TMP1:%.*]] = xor <2 x i32> [[ARG1:%.*]], [[ARG:%.*]]
420
+ ; CHECK-NEXT: [[TMP2:%.*]] = call <2 x i32> @llvm.ctpop.v2i32(<2 x i32> [[TMP1]])
421
+ ; CHECK-NEXT: [[I4:%.*]] = and <2 x i32> [[TMP2]], <i32 1, i32 1>
425
422
; CHECK-NEXT: ret <2 x i32> [[I4]]
426
423
;
427
424
%i = tail call <2 x i32 > @llvm.ctpop.v2i32 (<2 x i32 > %arg )
0 commit comments