[llvm] 6bf8133 - [X86] Add test coverage for PR44915 / Issue #44260

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Sun May 15 09:05:31 PDT 2022


Author: Simon Pilgrim
Date: 2022-05-15T17:05:19+01:00
New Revision: 6bf8133f9f34a17d4e7378af05e7eb71ea2c21a6

URL: https://github.com/llvm/llvm-project/commit/6bf8133f9f34a17d4e7378af05e7eb71ea2c21a6
DIFF: https://github.com/llvm/llvm-project/commit/6bf8133f9f34a17d4e7378af05e7eb71ea2c21a6.diff

LOG: [X86] Add test coverage for PR44915 / Issue #44260

Added: 
    llvm/test/CodeGen/X86/pr44915.ll

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/X86/pr44915.ll b/llvm/test/CodeGen/X86/pr44915.ll
new file mode 100644
index 000000000000..7bc88f7bb154
--- /dev/null
+++ b/llvm/test/CodeGen/X86/pr44915.ll
@@ -0,0 +1,75 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --no_x86_scrub_sp
+; RUN: llc < %s -mtriple=i686-- | FileCheck %s --check-prefixes=X86
+; RUN: llc < %s -mtriple=x86_64-pc-linux-gnu | FileCheck %s --check-prefixes=X64
+
+define i32 @extract3(i15*, i32) nounwind {
+; X86-LABEL: extract3:
+; X86:       # %bb.0: # %_L1
+; X86-NEXT:    pushl %ebx
+; X86-NEXT:    pushl %esi
+; X86-NEXT:    subl $8, %esp
+; X86-NEXT:    movl 24(%esp), %esi
+; X86-NEXT:    andl $7, %esi
+; X86-NEXT:    movl 20(%esp), %eax
+; X86-NEXT:    movzwl (%eax), %ebx
+; X86-NEXT:    movl %ebx, %ecx
+; X86-NEXT:    shrb $3, %cl
+; X86-NEXT:    andb $7, %cl
+; X86-NEXT:    movb %bl, %ch
+; X86-NEXT:    andb $7, %ch
+; X86-NEXT:    movl %ebx, %eax
+; X86-NEXT:    shrl $6, %eax
+; X86-NEXT:    andb $7, %al
+; X86-NEXT:    movl %ebx, %edx
+; X86-NEXT:    shrl $9, %edx
+; X86-NEXT:    andb $7, %dl
+; X86-NEXT:    shrl $12, %ebx
+; X86-NEXT:    movb %bl, 4(%esp)
+; X86-NEXT:    movb %dl, 3(%esp)
+; X86-NEXT:    movb %al, 2(%esp)
+; X86-NEXT:    movb %ch, (%esp)
+; X86-NEXT:    movb %cl, 1(%esp)
+; X86-NEXT:    movzbl (%esp,%esi), %eax
+; X86-NEXT:    andl $7, %eax
+; X86-NEXT:    addl $8, %esp
+; X86-NEXT:    popl %esi
+; X86-NEXT:    popl %ebx
+; X86-NEXT:    retl
+;
+; X64-LABEL: extract3:
+; X64:       # %bb.0: # %_L1
+; X64-NEXT:    # kill: def $esi killed $esi def $rsi
+; X64-NEXT:    movzwl (%rdi), %eax
+; X64-NEXT:    movl %eax, %ecx
+; X64-NEXT:    shrl $9, %ecx
+; X64-NEXT:    andl $7, %ecx
+; X64-NEXT:    movd %ecx, %xmm0
+; X64-NEXT:    movl %eax, %ecx
+; X64-NEXT:    shrl $6, %ecx
+; X64-NEXT:    andl $7, %ecx
+; X64-NEXT:    movd %ecx, %xmm1
+; X64-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
+; X64-NEXT:    movl %eax, %ecx
+; X64-NEXT:    andl $7, %ecx
+; X64-NEXT:    movd %ecx, %xmm0
+; X64-NEXT:    movl %eax, %ecx
+; X64-NEXT:    shrl $3, %ecx
+; X64-NEXT:    andl $7, %ecx
+; X64-NEXT:    movd %ecx, %xmm2
+; X64-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
+; X64-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
+; X64-NEXT:    shrl $12, %eax
+; X64-NEXT:    movd %eax, %xmm1
+; X64-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
+; X64-NEXT:    movdqa %xmm0, -24(%rsp)
+; X64-NEXT:    andl $7, %esi
+; X64-NEXT:    movzwl -24(%rsp,%rsi,2), %eax
+; X64-NEXT:    andl $7, %eax
+; X64-NEXT:    retq
+_L1:
+  %2 = load i15, i15* %0
+  %3 = bitcast i15 %2 to <5 x i3>
+  %4 = extractelement <5 x i3> %3, i32 %1
+  %5 = zext i3 %4 to i32
+  ret i32 %5
+}


        


More information about the llvm-commits mailing list