1; RUN: llc < %s -mtriple=arm64-apple-ios7.0 -mcpu=cyclone | FileCheck %s
2
3
4; CHECK: test1
5; CHECK: movi d[[REG0:[0-9]+]], #0000000000000000
6define <8 x i1> @test1() {
7entry:
8  %Shuff = shufflevector <8 x i1> <i1 0, i1 1, i1 2, i1 3, i1 4, i1 5, i1 6,
9                                   i1 7>,
10                         <8 x i1> <i1 0, i1 1, i1 2, i1 3, i1 4, i1 5, i1 6,
11                                   i1 7>,
12                         <8 x i32> <i32 2, i32 undef, i32 6, i32 undef, i32 10,
13                                    i32 12, i32 14, i32 0>
14  ret <8 x i1> %Shuff
15}
16
17; CHECK: lCPI1_0:
18; CHECK:          .byte   0                       ; 0x0
19; CHECK:          .byte   0                       ; 0x0
20; CHECK:          .byte   0                       ; 0x0
21; CHECK:          .byte   0                       ; 0x0
22; CHECK:          .byte   1                       ; 0x1
23; CHECK:          .byte   0                       ; 0x0
24; CHECK:          .byte   0                       ; 0x0
25; CHECK:          .byte   0                       ; 0x0
26; CHECK: test2
27; CHECK: adrp    x[[REG2:[0-9]+]], lCPI1_0@PAGE
28; CHECK: ldr     d[[REG1:[0-9]+]], [x[[REG2]], lCPI1_0@PAGEOFF]
29define <8 x i1>@test2() {
30bb:
31  %Shuff = shufflevector <8 x i1> zeroinitializer,
32     <8 x i1> <i1 0, i1 1, i1 1, i1 0, i1 0, i1 1, i1 0, i1 0>,
33     <8 x i32> <i32 2, i32 undef, i32 6, i32 undef, i32 10, i32 12, i32 14,
34                i32 0>
35  ret <8 x i1> %Shuff
36}
37
38; CHECK: test3
39; CHECK: movi.4s v{{[0-9]+}}, #0x1
40define <16 x i1> @test3(i1* %ptr, i32 %v) {
41bb:
42  %Shuff = shufflevector <16 x i1> <i1 0, i1 1, i1 1, i1 0, i1 0, i1 1, i1 0, i1 0, i1 0, i1 1, i1 1, i1 0, i1 0, i1 1, i1 0, i1 0>, <16 x i1> undef,
43     <16 x i32> <i32 2, i32 undef, i32 6, i32 undef, i32 10, i32 12, i32 14,
44                 i32 0, i32 2, i32 undef, i32 6, i32 undef, i32 10, i32 12,
45                 i32 14, i32 0>
46  ret <16 x i1> %Shuff
47}
48; CHECK: lCPI3_0:
49; CHECK:         .byte   0                       ; 0x0
50; CHECK:         .byte   0                       ; 0x0
51; CHECK:         .byte   0                       ; 0x0
52; CHECK:         .byte   1                       ; 0x1
53; CHECK:         .byte   0                       ; 0x0
54; CHECK:         .byte   0                       ; 0x0
55; CHECK:         .byte   0                       ; 0x0
56; CHECK:         .byte   0                       ; 0x0
57; CHECK:         .byte   0                       ; 0x0
58; CHECK:         .byte   0                       ; 0x0
59; CHECK:         .byte   0                       ; 0x0
60; CHECK:         .byte   0                       ; 0x0
61; CHECK:         .byte   0                       ; 0x0
62; CHECK:         .byte   0                       ; 0x0
63; CHECK:         .byte   0                       ; 0x0
64; CHECK:         .byte   0                       ; 0x0
65; CHECK: _test4:
66; CHECK:         adrp    x[[REG3:[0-9]+]], lCPI3_0@PAGE
67; CHECK:         ldr     q[[REG2:[0-9]+]], [x[[REG3]], lCPI3_0@PAGEOFF]
68define <16 x i1> @test4(i1* %ptr, i32 %v) {
69bb:
70  %Shuff = shufflevector <16 x i1> zeroinitializer,
71     <16 x i1> <i1 0, i1 1, i1 1, i1 0, i1 0, i1 1, i1 0, i1 0, i1 0, i1 1,
72                i1 1, i1 0, i1 0, i1 1, i1 0, i1 0>,
73     <16 x i32> <i32 2, i32 1, i32 6, i32 18, i32 10, i32 12, i32 14, i32 0,
74                 i32 2, i32 31, i32 6, i32 30, i32 10, i32 12, i32 14, i32 0>
75  ret <16 x i1> %Shuff
76}
77