Skip to content

Commit a4b1fde

Browse files
committed
[X86] Add known bits test for PEXT. NFC
1 parent 4fc69ab commit a4b1fde

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

llvm/test/CodeGen/X86/bmi2-x86_64.ll

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,18 @@ define i64 @pext64_load(i64 %x, i64* %y) {
7474
ret i64 %tmp
7575
}
7676

77+
define i64 @pext64_knownbits(i64 %x, i64 %y) {
78+
; CHECK-LABEL: pext64_knownbits:
79+
; CHECK: # %bb.0:
80+
; CHECK-NEXT: movabsq $6148914691236517205, %rax # imm = 0x5555555555555555
81+
; CHECK-NEXT: pextq %rax, %rdi, %rax
82+
; CHECK-NEXT: movl %eax, %eax
83+
; CHECK-NEXT: retq
84+
%tmp = tail call i64 @llvm.x86.bmi.pext.64(i64 %x, i64 6148914691236517205)
85+
%tmp2 = and i64 %tmp, 4294967295
86+
ret i64 %tmp2
87+
}
88+
7789
declare i64 @llvm.x86.bmi.pext.64(i64, i64)
7890

7991
define i64 @mulx64(i64 %x, i64 %y, i64* %p) {

llvm/test/CodeGen/X86/bmi2.ll

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,26 @@ define i32 @pext32_load(i32 %x, i32* %y) {
252252
ret i32 %tmp
253253
}
254254

255+
define i32 @pext32_knownbits(i32 %x) {
256+
; X86-LABEL: pext32_knownbits:
257+
; X86: # %bb.0:
258+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
259+
; X86-NEXT: movl $1431655765, %ecx # imm = 0x55555555
260+
; X86-NEXT: pextl %ecx, %eax, %eax
261+
; X86-NEXT: movzwl %ax, %eax
262+
; X86-NEXT: retl
263+
;
264+
; X64-LABEL: pext32_knownbits:
265+
; X64: # %bb.0:
266+
; X64-NEXT: movl $1431655765, %eax # imm = 0x55555555
267+
; X64-NEXT: pextl %eax, %edi, %eax
268+
; X64-NEXT: movzwl %ax, %eax
269+
; X64-NEXT: retq
270+
%tmp = tail call i32 @llvm.x86.bmi.pext.32(i32 %x, i32 1431655765)
271+
%tmp2 = and i32 %tmp, 65535
272+
ret i32 %tmp2
273+
}
274+
255275
declare i32 @llvm.x86.bmi.pext.32(i32, i32)
256276

257277
define i32 @mulx32(i32 %x, i32 %y, i32* %p) {

0 commit comments

Comments
 (0)