Skip to content

Commit eae1d61

Browse files
committed
[X86] Add test coverage for #107289
1 parent 9e9971b commit eae1d61

File tree

1 file changed

+54
-2
lines changed

1 file changed

+54
-2
lines changed

llvm/test/CodeGen/X86/vector-shuffle-combining.ll

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3533,6 +3533,58 @@ define <4 x i32> @PR63700(i128 %0) {
35333533
ret <4 x i32> %shuffle.i11
35343534
}
35353535

3536+
define <16 x i8> @PR107289(<16 x i8> %0) {
3537+
; SSE2-LABEL: PR107289:
3538+
; SSE2: # %bb.0:
3539+
; SSE2-NEXT: movq %xmm0, %rax
3540+
; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
3541+
; SSE2-NEXT: movq %xmm0, %rcx
3542+
; SSE2-NEXT: shldq $8, %rax, %rcx
3543+
; SSE2-NEXT: shlq $8, %rax
3544+
; SSE2-NEXT: movq %rcx, %xmm1
3545+
; SSE2-NEXT: movq %rax, %xmm0
3546+
; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
3547+
; SSE2-NEXT: retq
3548+
;
3549+
; SSSE3-LABEL: PR107289:
3550+
; SSSE3: # %bb.0:
3551+
; SSSE3-NEXT: movq %xmm0, %rax
3552+
; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
3553+
; SSSE3-NEXT: movq %xmm0, %rcx
3554+
; SSSE3-NEXT: shldq $8, %rax, %rcx
3555+
; SSSE3-NEXT: shlq $8, %rax
3556+
; SSSE3-NEXT: movq %rcx, %xmm1
3557+
; SSSE3-NEXT: movq %rax, %xmm0
3558+
; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
3559+
; SSSE3-NEXT: retq
3560+
;
3561+
; SSE41-LABEL: PR107289:
3562+
; SSE41: # %bb.0:
3563+
; SSE41-NEXT: pextrq $1, %xmm0, %rax
3564+
; SSE41-NEXT: movq %xmm0, %rcx
3565+
; SSE41-NEXT: shldq $8, %rcx, %rax
3566+
; SSE41-NEXT: shlq $8, %rcx
3567+
; SSE41-NEXT: movq %rax, %xmm1
3568+
; SSE41-NEXT: movq %rcx, %xmm0
3569+
; SSE41-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
3570+
; SSE41-NEXT: retq
3571+
;
3572+
; AVX-LABEL: PR107289:
3573+
; AVX: # %bb.0:
3574+
; AVX-NEXT: vpextrq $1, %xmm0, %rax
3575+
; AVX-NEXT: vmovq %xmm0, %rcx
3576+
; AVX-NEXT: shldq $8, %rcx, %rax
3577+
; AVX-NEXT: shlq $8, %rcx
3578+
; AVX-NEXT: vmovq %rax, %xmm0
3579+
; AVX-NEXT: vmovq %rcx, %xmm1
3580+
; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
3581+
; AVX-NEXT: retq
3582+
%src = bitcast <16 x i8> %0 to i128
3583+
%shl = shl i128 %src, 8
3584+
%res = bitcast i128 %shl to <16 x i8>
3585+
ret <16 x i8> %res
3586+
}
3587+
35363588
; Test case reported on D105827
35373589
define void @SpinningCube() {
35383590
; SSE2-LABEL: SpinningCube:
@@ -3641,9 +3693,9 @@ define void @autogen_SD25931() {
36413693
; CHECK-LABEL: autogen_SD25931:
36423694
; CHECK: # %bb.0: # %BB
36433695
; CHECK-NEXT: .p2align 4, 0x90
3644-
; CHECK-NEXT: .LBB141_1: # %CF242
3696+
; CHECK-NEXT: .LBB142_1: # %CF242
36453697
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
3646-
; CHECK-NEXT: jmp .LBB141_1
3698+
; CHECK-NEXT: jmp .LBB142_1
36473699
BB:
36483700
%Cmp16 = icmp uge <2 x i1> zeroinitializer, zeroinitializer
36493701
%Shuff19 = shufflevector <2 x i1> zeroinitializer, <2 x i1> %Cmp16, <2 x i32> <i32 3, i32 1>

0 commit comments

Comments
 (0)