[llvm] d3d71b8 - [X86] Add shuffle tests cases showing missed opportunity to use VALIGN

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 30 10:34:05 PDT 2023


Author: Simon Pilgrim
Date: 2023-08-30T18:32:55+01:00
New Revision: d3d71b8d5be8d8c2f494044099f9a44ffe18c878

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

LOG: [X86] Add shuffle tests cases showing missed opportunity to use VALIGN

Added: 
    

Modified: 
    llvm/test/CodeGen/X86/vector-shuffle-512-v8.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/X86/vector-shuffle-512-v8.ll b/llvm/test/CodeGen/X86/vector-shuffle-512-v8.ll
index 96ba108716fa2c..6069b3f834d71d 100644
--- a/llvm/test/CodeGen/X86/vector-shuffle-512-v8.ll
+++ b/llvm/test/CodeGen/X86/vector-shuffle-512-v8.ll
@@ -1664,6 +1664,35 @@ define <8 x i64> @shuffle_v8i64_6caa87e5(<8 x i64> %a, <8 x i64> %b) {
   ret <8 x i64> %shuffle
 }
 
+define <8 x i64> @shuffle_v8i64_34567zzz(<8 x i64> %a, <8 x i64> %b) {
+; AVX512F-LABEL: shuffle_v8i64_34567zzz:
+; AVX512F:       # %bb.0:
+; AVX512F-NEXT:    vpxor %xmm1, %xmm1, %xmm1
+; AVX512F-NEXT:    vmovdqa64 {{.*#+}} zmm2 = [3,4,5,6,7,13,14,15]
+; AVX512F-NEXT:    vpermt2q %zmm1, %zmm2, %zmm0
+; AVX512F-NEXT:    retq
+;
+; AVX512F-32-LABEL: shuffle_v8i64_34567zzz:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    vpxor %xmm1, %xmm1, %xmm1
+; AVX512F-32-NEXT:    vmovdqa64 {{.*#+}} zmm2 = [3,0,4,0,5,0,6,0,7,0,13,0,14,0,15,0]
+; AVX512F-32-NEXT:    vpermt2q %zmm1, %zmm2, %zmm0
+; AVX512F-32-NEXT:    retl
+  %valign = shufflevector <8 x i64> %a, <8 x i64> zeroinitializer, <8 x i32> <i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 8, i32 8>
+  ret <8 x i64> %valign
+}
+
+define <8 x i64> @shuffle_v8i64_zz012345(<8 x i64> %a, <8 x i64> %b) {
+; ALL-LABEL: shuffle_v8i64_zz012345:
+; ALL:       # %bb.0:
+; ALL-NEXT:    movb $-4, %al
+; ALL-NEXT:    kmovw %eax, %k1
+; ALL-NEXT:    vpexpandq %zmm0, %zmm0 {%k1} {z}
+; ALL-NEXT:    ret{{[l|q]}}
+  %valign = shufflevector <8 x i64> %a, <8 x i64> zeroinitializer, <8 x i32> <i32 8, i32 8, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5>
+  ret <8 x i64> %valign
+}
+
 define <8 x double> @shuffle_v8f64_082a4c6e(<8 x double> %a, <8 x double> %b) {
 ; ALL-LABEL: shuffle_v8f64_082a4c6e:
 ; ALL:       # %bb.0:


        


More information about the llvm-commits mailing list