@@ -98,6 +98,36 @@ define <16 x i8> @combine_shuffle_vrotli_v4i32(<4 x i32> %a0) {
9898}
9999declare <4 x i32 > @llvm.fshl.v4i32 (<4 x i32 >, <4 x i32 >, <4 x i32 >)
100100
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+
101131define void @PR46178 (ptr %0 ) {
102132; X86-LABEL: PR46178:
103133; X86: # %bb.0:
@@ -174,11 +204,11 @@ define i64 @PR55050() {
174204; X86-NEXT: xorl %edx, %edx
175205; X86-NEXT: xorl %eax, %eax
176206; X86-NEXT: testb %dl, %dl
177- ; X86-NEXT: jne .LBB10_2
207+ ; X86-NEXT: jne .LBB12_2
178208; X86-NEXT: # %bb.1: # %if
179209; X86-NEXT: xorl %eax, %eax
180210; X86-NEXT: xorl %edx, %edx
181- ; X86-NEXT: .LBB10_2 : # %exit
211+ ; X86-NEXT: .LBB12_2 : # %exit
182212; X86-NEXT: retl
183213;
184214; X64-LABEL: PR55050:
0 commit comments