summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/vector-fshr-rot-512.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/X86/vector-fshr-rot-512.ll')
-rw-r--r--llvm/test/CodeGen/X86/vector-fshr-rot-512.ll46
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
OpenPOWER on IntegriCloud