Skip to content

Commit e554cec

Browse files
committed
[DAG] Add test showing combineShiftAnd1ToBitTest failing to peek through a truncation
1 parent efda335 commit e554cec

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

llvm/test/CodeGen/X86/test-vs-bittest.ll

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,22 @@ define i64 @is_upper_bit_clear_i64(i64 %x) {
571571
ret i64 %r
572572
}
573573

574+
define i32 @is_upper_bit_clear_i64_trunc(i64 %x) {
575+
; CHECK-LABEL: is_upper_bit_clear_i64_trunc:
576+
; CHECK: # %bb.0:
577+
; CHECK-NEXT: movq %rdi, %rax
578+
; CHECK-NEXT: shrq $42, %rax
579+
; CHECK-NEXT: notl %eax
580+
; CHECK-NEXT: andl $1, %eax
581+
; CHECK-NEXT: # kill: def $eax killed $eax killed $rax
582+
; CHECK-NEXT: retq
583+
%sh = lshr i64 %x, 42
584+
%t = trunc i64 %sh to i32
585+
%m = and i32 %t, 1
586+
%r = xor i32 %m, 1
587+
ret i32 %r
588+
}
589+
574590
define i64 @is_upper_bit_clear_i64_not(i64 %x) {
575591
; CHECK-LABEL: is_upper_bit_clear_i64_not:
576592
; CHECK: # %bb.0:

0 commit comments

Comments
 (0)