[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