@@ -98,6 +98,36 @@ define <16 x i8> @combine_shuffle_vrotli_v4i32(<4 x i32> %a0) {
98
98
}
99
99
declare <4 x i32 > @llvm.fshl.v4i32 (<4 x i32 >, <4 x i32 >, <4 x i32 >)
100
100
101
+
102
+ define <8 x i32 > @concat_vrotli_v4i32 (<4 x i32 > %a0 , <4 x i32 > %a1 ) {
103
+ ; CHECK-LABEL: concat_vrotli_v4i32:
104
+ ; CHECK: # %bb.0:
105
+ ; CHECK-NEXT: vprold $3, %xmm0, %xmm0
106
+ ; CHECK-NEXT: vprold $3, %xmm1, %xmm1
107
+ ; CHECK-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
108
+ ; CHECK-NEXT: ret{{[l|q]}}
109
+ %r0 = tail call <4 x i32 > @llvm.fshl.v4i32 (<4 x i32 > %a0 , <4 x i32 > %a0 , <4 x i32 > splat (i32 3 ))
110
+ %r1 = tail call <4 x i32 > @llvm.fshl.v4i32 (<4 x i32 > %a1 , <4 x i32 > %a1 , <4 x i32 > splat (i32 3 ))
111
+ %shuffle = shufflevector <4 x i32 > %r0 , <4 x i32 > %r1 , <8 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 >
112
+ ret <8 x i32 > %shuffle
113
+ }
114
+
115
+ define <8 x i32 > @concat_vrotlv_v4i32 (<4 x i32 > %a0 , <4 x i32 > %a1 , <8 x i32 > %a2 ) {
116
+ ; CHECK-LABEL: concat_vrotlv_v4i32:
117
+ ; CHECK: # %bb.0:
118
+ ; CHECK-NEXT: vextracti128 $1, %ymm2, %xmm3
119
+ ; CHECK-NEXT: vprolvd %xmm2, %xmm0, %xmm0
120
+ ; CHECK-NEXT: vprolvd %xmm3, %xmm1, %xmm1
121
+ ; CHECK-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
122
+ ; CHECK-NEXT: ret{{[l|q]}}
123
+ %lo = shufflevector <8 x i32 > %a2 , <8 x i32 > poison, <4 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 >
124
+ %hi = shufflevector <8 x i32 > %a2 , <8 x i32 > poison, <4 x i32 > <i32 4 , i32 5 , i32 6 , i32 7 >
125
+ %r0 = tail call <4 x i32 > @llvm.fshl.v4i32 (<4 x i32 > %a0 , <4 x i32 > %a0 , <4 x i32 > %lo )
126
+ %r1 = tail call <4 x i32 > @llvm.fshl.v4i32 (<4 x i32 > %a1 , <4 x i32 > %a1 , <4 x i32 > %hi )
127
+ %shuffle = shufflevector <4 x i32 > %r0 , <4 x i32 > %r1 , <8 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 >
128
+ ret <8 x i32 > %shuffle
129
+ }
130
+
101
131
define void @PR46178 (ptr %0 ) {
102
132
; X86-LABEL: PR46178:
103
133
; X86: # %bb.0:
@@ -174,11 +204,11 @@ define i64 @PR55050() {
174
204
; X86-NEXT: xorl %edx, %edx
175
205
; X86-NEXT: xorl %eax, %eax
176
206
; X86-NEXT: testb %dl, %dl
177
- ; X86-NEXT: jne .LBB10_2
207
+ ; X86-NEXT: jne .LBB12_2
178
208
; X86-NEXT: # %bb.1: # %if
179
209
; X86-NEXT: xorl %eax, %eax
180
210
; X86-NEXT: xorl %edx, %edx
181
- ; X86-NEXT: .LBB10_2 : # %exit
211
+ ; X86-NEXT: .LBB12_2 : # %exit
182
212
; X86-NEXT: retl
183
213
;
184
214
; X64-LABEL: PR55050:
0 commit comments