Home | History | Annotate | Download | only in AArch64
      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
      6 define <8 x i1> @test1() {
      7 entry:
      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]
     29 define <8 x i1>@test2() {
     30 bb:
     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]+}}, #1
     40 define <16 x i1> @test3(i1* %ptr, i32 %v) {
     41 bb:
     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]
     68 define <16 x i1> @test4(i1* %ptr, i32 %v) {
     69 bb:
     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