Skip to content

Commit 3c9064e

Browse files
committed
[X86] Run XOP vector rotation tests with/without AVX2
I noticed this while reviewing D77152 - by only testing bdver4 we weren't checking an XOP target that only had AVX1
1 parent 72439b6 commit 3c9064e

File tree

1 file changed

+44
-18
lines changed

1 file changed

+44
-18
lines changed

llvm/test/CodeGen/X86/rotate_vec.ll

Lines changed: 44 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=bdver4 | FileCheck %s --check-prefixes=CHECK,XOP
2+
; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=bdver2 | FileCheck %s --check-prefixes=CHECK,XOP,XOPAVX1
3+
; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=bdver4 | FileCheck %s --check-prefixes=CHECK,XOP,XOPAVX2
34
; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=skylake-avx512 | FileCheck %s --check-prefixes=CHECK,AVX512
45

56
define <4 x i32> @rot_v4i32_splat(<4 x i32> %x) {
@@ -77,10 +78,20 @@ define <4 x i32> @rot_v4i32_non_splat_2masks(<4 x i32> %x) {
7778
}
7879

7980
define <4 x i32> @rot_v4i32_zero_non_splat(<4 x i32> %x) {
80-
; CHECK-LABEL: rot_v4i32_zero_non_splat:
81-
; CHECK: # %bb.0:
82-
; CHECK-NEXT: vbroadcastss %xmm0, %xmm0
83-
; CHECK-NEXT: retq
81+
; XOPAVX1-LABEL: rot_v4i32_zero_non_splat:
82+
; XOPAVX1: # %bb.0:
83+
; XOPAVX1-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[0,0,0,0]
84+
; XOPAVX1-NEXT: retq
85+
;
86+
; XOPAVX2-LABEL: rot_v4i32_zero_non_splat:
87+
; XOPAVX2: # %bb.0:
88+
; XOPAVX2-NEXT: vbroadcastss %xmm0, %xmm0
89+
; XOPAVX2-NEXT: retq
90+
;
91+
; AVX512-LABEL: rot_v4i32_zero_non_splat:
92+
; AVX512: # %bb.0:
93+
; AVX512-NEXT: vbroadcastss %xmm0, %xmm0
94+
; AVX512-NEXT: retq
8495
%1 = call <4 x i32> @llvm.fshl.v4i32(<4 x i32> %x, <4 x i32> %x, <4 x i32> <i32 0, i32 1, i32 2, i32 3>)
8596
%2 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> zeroinitializer
8697
ret <4 x i32> %2
@@ -97,12 +108,19 @@ define <4 x i32> @rot_v4i32_allsignbits(<4 x i32> %x, <4 x i32> %y) {
97108
}
98109

99110
define <4 x i32> @rot_v4i32_mask_ashr0(<4 x i32> %a0) {
100-
; XOP-LABEL: rot_v4i32_mask_ashr0:
101-
; XOP: # %bb.0:
102-
; XOP-NEXT: vpsravd {{.*}}(%rip), %xmm0, %xmm0
103-
; XOP-NEXT: vprotd $1, %xmm0, %xmm0
104-
; XOP-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0
105-
; XOP-NEXT: retq
111+
; XOPAVX1-LABEL: rot_v4i32_mask_ashr0:
112+
; XOPAVX1: # %bb.0:
113+
; XOPAVX1-NEXT: vpshad {{.*}}(%rip), %xmm0, %xmm0
114+
; XOPAVX1-NEXT: vprotd $1, %xmm0, %xmm0
115+
; XOPAVX1-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0
116+
; XOPAVX1-NEXT: retq
117+
;
118+
; XOPAVX2-LABEL: rot_v4i32_mask_ashr0:
119+
; XOPAVX2: # %bb.0:
120+
; XOPAVX2-NEXT: vpsravd {{.*}}(%rip), %xmm0, %xmm0
121+
; XOPAVX2-NEXT: vprotd $1, %xmm0, %xmm0
122+
; XOPAVX2-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0
123+
; XOPAVX2-NEXT: retq
106124
;
107125
; AVX512-LABEL: rot_v4i32_mask_ashr0:
108126
; AVX512: # %bb.0:
@@ -118,13 +136,21 @@ define <4 x i32> @rot_v4i32_mask_ashr0(<4 x i32> %a0) {
118136
}
119137

120138
define <4 x i32> @rot_v4i32_mask_ashr1(<4 x i32> %a0) {
121-
; XOP-LABEL: rot_v4i32_mask_ashr1:
122-
; XOP: # %bb.0:
123-
; XOP-NEXT: vpsrad $25, %xmm0, %xmm0
124-
; XOP-NEXT: vprotd $1, %xmm0, %xmm0
125-
; XOP-NEXT: vpbroadcastd %xmm0, %xmm0
126-
; XOP-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0
127-
; XOP-NEXT: retq
139+
; XOPAVX1-LABEL: rot_v4i32_mask_ashr1:
140+
; XOPAVX1: # %bb.0:
141+
; XOPAVX1-NEXT: vpsrad $25, %xmm0, %xmm0
142+
; XOPAVX1-NEXT: vprotd $1, %xmm0, %xmm0
143+
; XOPAVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
144+
; XOPAVX1-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0
145+
; XOPAVX1-NEXT: retq
146+
;
147+
; XOPAVX2-LABEL: rot_v4i32_mask_ashr1:
148+
; XOPAVX2: # %bb.0:
149+
; XOPAVX2-NEXT: vpsrad $25, %xmm0, %xmm0
150+
; XOPAVX2-NEXT: vprotd $1, %xmm0, %xmm0
151+
; XOPAVX2-NEXT: vpbroadcastd %xmm0, %xmm0
152+
; XOPAVX2-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0
153+
; XOPAVX2-NEXT: retq
128154
;
129155
; AVX512-LABEL: rot_v4i32_mask_ashr1:
130156
; AVX512: # %bb.0:

0 commit comments

Comments
 (0)