Skip to content

Commit c2ac1f0

Browse files
committed
[InstCombine] Add pre-commit tests. NFC.
1 parent 6c84d64 commit c2ac1f0

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

llvm/test/Transforms/InstCombine/xor-icmps.ll

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,46 @@ define i1 @test_xor_of_bittest_ne_ne(i8 %x, i8 %y) {
335335
ret i1 %xor
336336
}
337337

338+
define i1 @test_xor_of_bittest_ne_ne_var_pow2(i8 %x, i8 %y, i8 %shamt) {
339+
; CHECK-LABEL: @test_xor_of_bittest_ne_ne_var_pow2(
340+
; CHECK-NEXT: [[POW2:%.*]] = shl nuw i8 1, [[SHAMT:%.*]]
341+
; CHECK-NEXT: [[TMP2:%.*]] = and i8 [[TMP1:%.*]], [[POW2]]
342+
; CHECK-NEXT: [[XOR:%.*]] = icmp ne i8 [[TMP2]], 0
343+
; CHECK-NEXT: [[MASK2:%.*]] = and i8 [[Y:%.*]], [[POW2]]
344+
; CHECK-NEXT: [[CMP2:%.*]] = icmp ne i8 [[MASK2]], 0
345+
; CHECK-NEXT: [[XOR1:%.*]] = xor i1 [[XOR]], [[CMP2]]
346+
; CHECK-NEXT: ret i1 [[XOR1]]
347+
;
348+
%pow2 = shl nuw i8 1, %shamt
349+
%mask1 = and i8 %x, %pow2
350+
%cmp1 = icmp ne i8 %mask1, 0
351+
%mask2 = and i8 %y, %pow2
352+
%cmp2 = icmp ne i8 %mask2, 0
353+
%xor = xor i1 %cmp1, %cmp2
354+
ret i1 %xor
355+
}
356+
357+
define i1 @test_xor_of_bittest_ne_ne_var_pow2_or_zero(i8 %x, i8 %y, i8 %z) {
358+
; CHECK-LABEL: @test_xor_of_bittest_ne_ne_var_pow2_or_zero(
359+
; CHECK-NEXT: [[NZ:%.*]] = sub i8 0, [[Z:%.*]]
360+
; CHECK-NEXT: [[POW2:%.*]] = and i8 [[Z]], [[NZ]]
361+
; CHECK-NEXT: [[TMP3:%.*]] = and i8 [[X:%.*]], [[POW2]]
362+
; CHECK-NEXT: [[XOR:%.*]] = icmp ne i8 [[TMP3]], 0
363+
; CHECK-NEXT: [[MASK2:%.*]] = and i8 [[Y:%.*]], [[POW2]]
364+
; CHECK-NEXT: [[CMP2:%.*]] = icmp ne i8 [[MASK2]], 0
365+
; CHECK-NEXT: [[XOR1:%.*]] = xor i1 [[XOR]], [[CMP2]]
366+
; CHECK-NEXT: ret i1 [[XOR1]]
367+
;
368+
%nz = sub i8 0, %z
369+
%pow2 = and i8 %z, %nz
370+
%mask1 = and i8 %x, %pow2
371+
%cmp1 = icmp ne i8 %mask1, 0
372+
%mask2 = and i8 %y, %pow2
373+
%cmp2 = icmp ne i8 %mask2, 0
374+
%xor = xor i1 %cmp1, %cmp2
375+
ret i1 %xor
376+
}
377+
338378
define i1 @test_xor_of_bittest_eq_eq(i8 %x, i8 %y) {
339379
; CHECK-LABEL: @test_xor_of_bittest_eq_eq(
340380
; CHECK-NEXT: [[Y:%.*]] = xor i8 [[X:%.*]], [[Y1:%.*]]

0 commit comments

Comments
 (0)