brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 7aaddc0 Raw
60 lines · plain
1// RUN: cir-opt %s -cir-canonicalize -o - -split-input-file | FileCheck %s2 3!s32i = !cir.int<s, 32>4!s64i = !cir.int<s, 64>5 6module  {7  cir.func @fold_shuffle_vector_op_test() -> !cir.vector<4 x !s32i> {8    %vec_1 = cir.const #cir.const_vector<[#cir.int<1> : !s32i, #cir.int<3> : !s32i, #cir.int<5> : !s32i, #cir.int<7> : !s32i]> : !cir.vector<4 x !s32i>9    %vec_2 = cir.const #cir.const_vector<[#cir.int<2> : !s32i, #cir.int<4> : !s32i, #cir.int<6> : !s32i, #cir.int<8> : !s32i]> : !cir.vector<4 x !s32i>10    %new_vec = cir.vec.shuffle(%vec_1, %vec_2 : !cir.vector<4 x !s32i>) [#cir.int<0> : !s64i, #cir.int<4> : !s64i,11      #cir.int<1> : !s64i, #cir.int<5> : !s64i] : !cir.vector<4 x !s32i>12    cir.return %new_vec : !cir.vector<4 x !s32i>13  }14 15  // CHECK: cir.func{{.*}} @fold_shuffle_vector_op_test() -> !cir.vector<4 x !s32i> {16  // CHECK-NEXT: %[[RES:.*]] = cir.const #cir.const_vector<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i,17  // CHECK-SAME: #cir.int<4> : !s32i]> : !cir.vector<4 x !s32i>18  // CHECK-NEXT: cir.return %[[RES]] : !cir.vector<4 x !s32i>19}20 21// -----22 23!s32i = !cir.int<s, 32>24!s64i = !cir.int<s, 64>25 26module  {27  cir.func @fold_shuffle_vector_op_test() -> !cir.vector<6 x !s32i> {28    %vec_1 = cir.const #cir.const_vector<[#cir.int<1> : !s32i, #cir.int<3> : !s32i, #cir.int<5> : !s32i, #cir.int<7> : !s32i]> : !cir.vector<4 x !s32i>29    %vec_2 = cir.const #cir.const_vector<[#cir.int<2> : !s32i, #cir.int<4> : !s32i, #cir.int<6> : !s32i, #cir.int<8> : !s32i]> : !cir.vector<4 x !s32i>30    %new_vec = cir.vec.shuffle(%vec_1, %vec_2 : !cir.vector<4 x !s32i>) [#cir.int<0> : !s64i, #cir.int<4> : !s64i,31      #cir.int<1> : !s64i, #cir.int<5> : !s64i, #cir.int<2> : !s64i, #cir.int<6> : !s64i] : !cir.vector<6 x !s32i>32    cir.return %new_vec : !cir.vector<6 x !s32i>33  }34 35  // CHECK: cir.func{{.*}} @fold_shuffle_vector_op_test() -> !cir.vector<6 x !s32i> {36  // CHECK-NEXT: %[[RES:.*]] = cir.const #cir.const_vector<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i,37  // CHECK-SAME: #cir.int<4> : !s32i, #cir.int<5> : !s32i, #cir.int<6> : !s32i]> : !cir.vector<6 x !s32i>38  // CHECK-NEXT: cir.return %[[RES]] : !cir.vector<6 x !s32i>39}40 41// -----42 43!s32i = !cir.int<s, 32>44!s64i = !cir.int<s, 64>45 46module  {47  cir.func @fold_shuffle_vector_op_test() -> !cir.vector<4 x !s32i> {48    %vec_1 = cir.const #cir.const_vector<[#cir.int<1> : !s32i, #cir.int<3> : !s32i, #cir.int<5> : !s32i, #cir.int<7> : !s32i]> : !cir.vector<4 x !s32i>49    %vec_2 = cir.const #cir.const_vector<[#cir.int<2> : !s32i, #cir.int<4> : !s32i, #cir.int<6> : !s32i, #cir.int<8> : !s32i]> : !cir.vector<4 x !s32i>50    %new_vec = cir.vec.shuffle(%vec_1, %vec_2 : !cir.vector<4 x !s32i>) [#cir.int<-1> : !s64i, #cir.int<4> : !s64i,51      #cir.int<1> : !s64i, #cir.int<5> : !s64i] : !cir.vector<4 x !s32i>52    cir.return %new_vec : !cir.vector<4 x !s32i>53  }54 55  // CHECK: cir.func{{.*}} @fold_shuffle_vector_op_test() -> !cir.vector<4 x !s32i> {56  // CHECK: cir.const #cir.const_vector<[#cir.undef : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i,57  // CHECK-SAME: #cir.int<4> : !s32i]> : !cir.vector<4 x !s32i>58  // CHECK-NEXT: cir.return %[[RES]] : !cir.vector<4 x !s32i>59}60