• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3
4define <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, %xmm8
28; CHECK-NEXT:    # implicit-def: $ymm2
29; CHECK-NEXT:    vinserti128 $1, %xmm8, %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:    vmovaps %xmm7, %xmm2
34; CHECK-NEXT:    vpslldq {{.*#+}} xmm4 = zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0,1,2,3,4,5,6,7]
35; CHECK-NEXT:    # implicit-def: $ymm2
36; CHECK-NEXT:    vmovaps %xmm4, %xmm2
37; 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]
38; CHECK-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,1,0,3]
39; CHECK-NEXT:    vpblendd {{.*#+}} ymm3 = ymm2[0,1,2,3],ymm3[4,5,6,7]
40; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm7[0,1],ymm1[2,3],ymm7[4,5,6,7]
41; CHECK-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,1,1,3]
42; CHECK-NEXT:    vpshufd {{.*#+}} ymm2 = ymm5[0,1,0,1,4,5,4,5]
43; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm2[6,7]
44; CHECK-NEXT:    vextracti128 $1, %ymm7, %xmm2
45; CHECK-NEXT:    vmovq {{.*#+}} xmm4 = xmm2[0],zero
46; CHECK-NEXT:    # implicit-def: $ymm2
47; CHECK-NEXT:    vmovaps %xmm4, %xmm2
48; CHECK-NEXT:    vperm2i128 {{.*#+}} ymm2 = ymm2[0,1],ymm6[0,1]
49; CHECK-NEXT:    movq %rbp, %rsp
50; CHECK-NEXT:    popq %rbp
51; CHECK-NEXT:    .cfi_def_cfa %rsp, 8
52; CHECK-NEXT:    retq
53bb:
54  %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
55  %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
56  %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
57  %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>
58  ret <16 x i64> %tmp7
59}
60