[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / X86 / pr34592.ll
blobecbdc24f5453fe6fdea4db7453f7971f7c43facf
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx2 -O0 | FileCheck %s
4 define <16 x i64> @pluto(<16 x i64> %arg, <16 x i64> %arg1, <16 x i64> %arg2, <16 x i64> %arg3, <16 x i64> %arg4) {
5 ; CHECK-LABEL: pluto:
6 ; CHECK:       # %bb.0: # %bb
7 ; CHECK-NEXT:    pushq %rbp
8 ; CHECK-NEXT:    .cfi_def_cfa_offset 16
9 ; CHECK-NEXT:    .cfi_offset %rbp, -16
10 ; CHECK-NEXT:    movq %rsp, %rbp
11 ; CHECK-NEXT:    .cfi_def_cfa_register %rbp
12 ; CHECK-NEXT:    andq $-32, %rsp
13 ; CHECK-NEXT:    subq $32, %rsp
14 ; CHECK-NEXT:    vmovaps %ymm4, %ymm10
15 ; CHECK-NEXT:    vmovaps %ymm3, %ymm9
16 ; CHECK-NEXT:    vmovaps %ymm1, %ymm8
17 ; CHECK-NEXT:    vmovaps %ymm0, %ymm4
18 ; CHECK-NEXT:    vmovaps 240(%rbp), %ymm1
19 ; CHECK-NEXT:    vmovaps 208(%rbp), %ymm3
20 ; CHECK-NEXT:    vmovaps 176(%rbp), %ymm0
21 ; CHECK-NEXT:    vmovaps 144(%rbp), %ymm0
22 ; CHECK-NEXT:    vmovaps 112(%rbp), %ymm11
23 ; CHECK-NEXT:    vmovaps 80(%rbp), %ymm11
24 ; CHECK-NEXT:    vmovaps 48(%rbp), %ymm11
25 ; CHECK-NEXT:    vmovaps 16(%rbp), %ymm11
26 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm4 = ymm6[0,1,2,3,4,5],ymm2[6,7]
27 ; CHECK-NEXT:    vmovaps %xmm3, %xmm6
28 ; CHECK-NEXT:    # implicit-def: $ymm2
29 ; CHECK-NEXT:    vinserti128 $1, %xmm6, %ymm2, %ymm2
30 ; CHECK-NEXT:    vpalignr {{.*#+}} ymm0 = ymm4[8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4,5,6,7],ymm4[24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20,21,22,23]
31 ; CHECK-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,0]
32 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5],ymm0[6,7]
33 ; CHECK-NEXT:    vextracti128 $1, %ymm7, %xmm2
34 ; CHECK-NEXT:    vmovq {{.*#+}} xmm6 = xmm2[0],zero
35 ; CHECK-NEXT:    # implicit-def: $ymm2
36 ; CHECK-NEXT:    vmovaps %xmm6, %xmm2
37 ; CHECK-NEXT:    # kill: def $xmm4 killed $xmm4 killed $ymm4
38 ; CHECK-NEXT:    vinserti128 $1, %xmm4, %ymm2, %ymm2
39 ; CHECK-NEXT:    vmovaps %xmm7, %xmm4
40 ; CHECK-NEXT:    vpslldq {{.*#+}} xmm6 = zero,zero,zero,zero,zero,zero,zero,zero,xmm4[0,1,2,3,4,5,6,7]
41 ; CHECK-NEXT:    # implicit-def: $ymm4
42 ; CHECK-NEXT:    vmovaps %xmm6, %xmm4
43 ; CHECK-NEXT:    vpalignr {{.*#+}} ymm3 = ymm3[8,9,10,11,12,13,14,15],ymm5[0,1,2,3,4,5,6,7],ymm3[24,25,26,27,28,29,30,31],ymm5[16,17,18,19,20,21,22,23]
44 ; CHECK-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,1,0,3]
45 ; CHECK-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
46 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm7[0,1],ymm1[2,3],ymm7[4,5,6,7]
47 ; CHECK-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,1,1,3]
48 ; CHECK-NEXT:    vpshufd {{.*#+}} ymm4 = ymm5[0,1,0,1,4,5,4,5]
49 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm4[6,7]
50 ; CHECK-NEXT:    movq %rbp, %rsp
51 ; CHECK-NEXT:    popq %rbp
52 ; CHECK-NEXT:    .cfi_def_cfa %rsp, 8
53 ; CHECK-NEXT:    retq
54 bb:
55   %tmp = select <16 x i1> <i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 true, i1 true, i1 false, i1 false, i1 false, i1 false>, <16 x i64> %arg, <16 x i64> %arg1
56   %tmp5 = select <16 x i1> <i1 true, i1 false, i1 false, i1 true, i1 true, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false>, <16 x i64> %arg2, <16 x i64> zeroinitializer
57   %tmp6 = select <16 x i1> <i1 false, i1 true, i1 true, i1 true, i1 false, i1 false, i1 false, i1 false, i1 true, i1 true, i1 false, i1 false, i1 false, i1 true, i1 true, i1 true>, <16 x i64> %arg3, <16 x i64> %tmp5
58   %tmp7 = shufflevector <16 x i64> %tmp, <16 x i64> %tmp6, <16 x i32> <i32 11, i32 18, i32 24, i32 9, i32 14, i32 29, i32 29, i32 6, i32 14, i32 28, i32 8, i32 9, i32 22, i32 12, i32 25, i32 6>
59   ret <16 x i64> %tmp7