Home | History | Annotate | Download | only in ARM
      1 ; RUN: opt < %s  -cost-model -analyze -mtriple=thumbv7-apple-ios6.0.0 -mcpu=swift | FileCheck %s
      2 target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"
      3 target triple = "thumbv7-apple-ios6.0.0"
      4 
      5 ; CHECK: shuffle
      6 define void @shuffle() {
      7 
      8 
      9   ;; Reverse shuffles should be lowered to vrev and possibly a vext (for
     10   ;; quadwords)
     11 
     12     ; Vector values
     13   ; CHECK: cost of 1 {{.*}} shuffle
     14   %v7 = shufflevector <2 x i8> undef, <2 x i8>undef, <2 x i32> <i32 1, i32 0>
     15   ; CHECK: cost of 1 {{.*}} shuffle
     16   %v8 = shufflevector <4 x i8> undef, <4 x i8>undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
     17   ; CHECK: cost of 1 {{.*}} shuffle
     18   %v9 = shufflevector <8 x i8> undef, <8 x i8>undef, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
     19   ; CHECK: cost of 2 {{.*}} shuffle
     20   %v10 = shufflevector <16 x i8> undef, <16 x i8>undef, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
     21 
     22   ; CHECK: cost of 1 {{.*}} shuffle
     23   %v11 = shufflevector <2 x i16> undef, <2 x i16>undef, <2 x i32> <i32 1, i32 0>
     24   ; CHECK: cost of 1 {{.*}} shuffle
     25   %v12 = shufflevector <4 x i16> undef, <4 x i16>undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
     26   ; CHECK: cost of 2 {{.*}} shuffle
     27   %v13 = shufflevector <8 x i16> undef, <8 x i16>undef, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
     28 
     29   ; CHECK: cost of 1 {{.*}} shuffle
     30   %v14 = shufflevector <2 x i32> undef, <2 x i32>undef, <2 x i32> <i32 1, i32 0>
     31   ; CHECK: cost of 2 {{.*}} shuffle
     32   %v15 = shufflevector <4 x i32> undef, <4 x i32>undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
     33 
     34   ; CHECK: cost of 1 {{.*}} shuffle
     35   %v16 = shufflevector <2 x float> undef, <2 x float>undef, <2 x i32> <i32 1, i32 0>
     36   ; CHECK: cost of 2 {{.*}} shuffle
     37   %v17 = shufflevector <4 x float> undef, <4 x float>undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
     38 
     39   ret void
     40 }
     41