diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/vector-fshr-rot-512.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/vector-fshr-rot-512.ll | 46 |
1 files changed, 8 insertions, 38 deletions
diff --git a/llvm/test/CodeGen/X86/vector-fshr-rot-512.ll b/llvm/test/CodeGen/X86/vector-fshr-rot-512.ll index 792f172e4d1..e38420a473c 100644 --- a/llvm/test/CodeGen/X86/vector-fshr-rot-512.ll +++ b/llvm/test/CodeGen/X86/vector-fshr-rot-512.ll @@ -16,14 +16,7 @@ declare <64 x i8> @llvm.fshr.v64i8(<64 x i8>, <64 x i8>, <64 x i8>) define <8 x i64> @var_funnnel_v8i64(<8 x i64> %x, <8 x i64> %amt) nounwind { ; AVX512-LABEL: var_funnnel_v8i64: ; AVX512: # %bb.0: -; AVX512-NEXT: vpbroadcastq {{.*#+}} zmm2 = [63,63,63,63,63,63,63,63] -; AVX512-NEXT: vpandq %zmm2, %zmm1, %zmm3 -; AVX512-NEXT: vpsrlvq %zmm3, %zmm0, %zmm3 -; AVX512-NEXT: vpxor %xmm4, %xmm4, %xmm4 -; AVX512-NEXT: vpsubq %zmm1, %zmm4, %zmm1 -; AVX512-NEXT: vpandq %zmm2, %zmm1, %zmm1 -; AVX512-NEXT: vpsllvq %zmm1, %zmm0, %zmm0 -; AVX512-NEXT: vporq %zmm3, %zmm0, %zmm0 +; AVX512-NEXT: vprorvq %zmm1, %zmm0, %zmm0 ; AVX512-NEXT: retq %res = call <8 x i64> @llvm.fshr.v8i64(<8 x i64> %x, <8 x i64> %x, <8 x i64> %amt) ret <8 x i64> %res @@ -32,14 +25,7 @@ define <8 x i64> @var_funnnel_v8i64(<8 x i64> %x, <8 x i64> %amt) nounwind { define <16 x i32> @var_funnnel_v16i32(<16 x i32> %x, <16 x i32> %amt) nounwind { ; AVX512-LABEL: var_funnnel_v16i32: ; AVX512: # %bb.0: -; AVX512-NEXT: vpbroadcastd {{.*#+}} zmm2 = [31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31] -; AVX512-NEXT: vpandd %zmm2, %zmm1, %zmm3 -; AVX512-NEXT: vpsrlvd %zmm3, %zmm0, %zmm3 -; AVX512-NEXT: vpxor %xmm4, %xmm4, %xmm4 -; AVX512-NEXT: vpsubd %zmm1, %zmm4, %zmm1 -; AVX512-NEXT: vpandd %zmm2, %zmm1, %zmm1 -; AVX512-NEXT: vpsllvd %zmm1, %zmm0, %zmm0 -; AVX512-NEXT: vpord %zmm3, %zmm0, %zmm0 +; AVX512-NEXT: vprorvd %zmm1, %zmm0, %zmm0 ; AVX512-NEXT: retq %res = call <16 x i32> @llvm.fshr.v16i32(<16 x i32> %x, <16 x i32> %x, <16 x i32> %amt) ret <16 x i32> %res @@ -325,14 +311,7 @@ define <8 x i64> @splatvar_funnnel_v8i64(<8 x i64> %x, <8 x i64> %amt) nounwind ; AVX512-LABEL: splatvar_funnnel_v8i64: ; AVX512: # %bb.0: ; AVX512-NEXT: vpbroadcastq %xmm1, %zmm1 -; AVX512-NEXT: vmovdqa {{.*#+}} xmm2 = [63,63] -; AVX512-NEXT: vpand %xmm2, %xmm1, %xmm3 -; AVX512-NEXT: vpsrlq %xmm3, %zmm0, %zmm3 -; AVX512-NEXT: vpxor %xmm4, %xmm4, %xmm4 -; AVX512-NEXT: vpsubq %xmm1, %xmm4, %xmm1 -; AVX512-NEXT: vpand %xmm2, %xmm1, %xmm1 -; AVX512-NEXT: vpsllq %xmm1, %zmm0, %zmm0 -; AVX512-NEXT: vporq %zmm3, %zmm0, %zmm0 +; AVX512-NEXT: vprorvq %zmm1, %zmm0, %zmm0 ; AVX512-NEXT: retq %splat = shufflevector <8 x i64> %amt, <8 x i64> undef, <8 x i32> zeroinitializer %res = call <8 x i64> @llvm.fshr.v8i64(<8 x i64> %x, <8 x i64> %x, <8 x i64> %splat) @@ -343,16 +322,7 @@ define <16 x i32> @splatvar_funnnel_v16i32(<16 x i32> %x, <16 x i32> %amt) nounw ; AVX512-LABEL: splatvar_funnnel_v16i32: ; AVX512: # %bb.0: ; AVX512-NEXT: vpbroadcastd %xmm1, %zmm1 -; AVX512-NEXT: vpbroadcastd {{.*#+}} xmm2 = [31,31,31,31] -; AVX512-NEXT: vpand %xmm2, %xmm1, %xmm3 -; AVX512-NEXT: vpmovzxdq {{.*#+}} xmm3 = xmm3[0],zero,xmm3[1],zero -; AVX512-NEXT: vpsrld %xmm3, %zmm0, %zmm3 -; AVX512-NEXT: vpxor %xmm4, %xmm4, %xmm4 -; AVX512-NEXT: vpsubd %xmm1, %xmm4, %xmm1 -; AVX512-NEXT: vpand %xmm2, %xmm1, %xmm1 -; AVX512-NEXT: vpmovzxdq {{.*#+}} xmm1 = xmm1[0],zero,xmm1[1],zero -; AVX512-NEXT: vpslld %xmm1, %zmm0, %zmm0 -; AVX512-NEXT: vpord %zmm3, %zmm0, %zmm0 +; AVX512-NEXT: vprorvd %zmm1, %zmm0, %zmm0 ; AVX512-NEXT: retq %splat = shufflevector <16 x i32> %amt, <16 x i32> undef, <16 x i32> zeroinitializer %res = call <16 x i32> @llvm.fshr.v16i32(<16 x i32> %x, <16 x i32> %x, <16 x i32> %splat) @@ -544,7 +514,7 @@ define <64 x i8> @splatvar_funnnel_v64i8(<64 x i8> %x, <64 x i8> %amt) nounwind define <8 x i64> @constant_funnnel_v8i64(<8 x i64> %x) nounwind { ; AVX512-LABEL: constant_funnnel_v8i64: ; AVX512: # %bb.0: -; AVX512-NEXT: vprolvq {{.*}}(%rip), %zmm0, %zmm0 +; AVX512-NEXT: vprorvq {{.*}}(%rip), %zmm0, %zmm0 ; AVX512-NEXT: retq %res = call <8 x i64> @llvm.fshr.v8i64(<8 x i64> %x, <8 x i64> %x, <8 x i64> <i64 4, i64 14, i64 50, i64 60, i64 4, i64 14, i64 50, i64 60>) ret <8 x i64> %res @@ -553,7 +523,7 @@ define <8 x i64> @constant_funnnel_v8i64(<8 x i64> %x) nounwind { define <16 x i32> @constant_funnnel_v16i32(<16 x i32> %x) nounwind { ; AVX512-LABEL: constant_funnnel_v16i32: ; AVX512: # %bb.0: -; AVX512-NEXT: vprolvd {{.*}}(%rip), %zmm0, %zmm0 +; AVX512-NEXT: vprorvd {{.*}}(%rip), %zmm0, %zmm0 ; AVX512-NEXT: retq %res = call <16 x i32> @llvm.fshr.v16i32(<16 x i32> %x, <16 x i32> %x, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11>) ret <16 x i32> %res @@ -769,7 +739,7 @@ define <64 x i8> @constant_funnnel_v64i8(<64 x i8> %x) nounwind { define <8 x i64> @splatconstant_funnnel_v8i64(<8 x i64> %x) nounwind { ; AVX512-LABEL: splatconstant_funnnel_v8i64: ; AVX512: # %bb.0: -; AVX512-NEXT: vprolq $50, %zmm0, %zmm0 +; AVX512-NEXT: vprorq $14, %zmm0, %zmm0 ; AVX512-NEXT: retq %res = call <8 x i64> @llvm.fshr.v8i64(<8 x i64> %x, <8 x i64> %x, <8 x i64> <i64 14, i64 14, i64 14, i64 14, i64 14, i64 14, i64 14, i64 14>) ret <8 x i64> %res @@ -778,7 +748,7 @@ define <8 x i64> @splatconstant_funnnel_v8i64(<8 x i64> %x) nounwind { define <16 x i32> @splatconstant_funnnel_v16i32(<16 x i32> %x) nounwind { ; AVX512-LABEL: splatconstant_funnnel_v16i32: ; AVX512: # %bb.0: -; AVX512-NEXT: vprold $28, %zmm0, %zmm0 +; AVX512-NEXT: vprord $4, %zmm0, %zmm0 ; AVX512-NEXT: retq %res = call <16 x i32> @llvm.fshr.v16i32(<16 x i32> %x, <16 x i32> %x, <16 x i32> <i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4>) ret <16 x i32> %res |