brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · 7a783ae Raw
121 lines · plain
1// RUN: mlir-opt %s -test-lower-to-llvm  | \2// RUN: mlir-runner -e entry -entry-point-result=void  \3// RUN:   -shared-libs=%mlir_c_runner_utils | \4// RUN: FileCheck %s5 6func.func @entry() {7  %f0 = arith.constant 0.0: f328  %f1 = arith.constant 1.0: f329  %f2 = arith.constant 2.0: f3210  %f3 = arith.constant 3.0: f3211  %f4 = arith.constant 4.0: f3212  %f5 = arith.constant 5.0: f3213  %f6 = arith.constant 6.0: f3214  %f7 = arith.constant 7.0: f3215  %f8 = arith.constant 8.0: f3216 17  // Construct test vectors and matrices.18  %0 = vector.broadcast %f1 : f32 to vector<2xf32>19  %a = vector.insert %f2, %0[1] : f32 into vector<2xf32>20  %1 = vector.broadcast %f3 : f32 to vector<2xf32>21  %b = vector.insert %f4, %1[1] : f32 into vector<2xf32>22  %2 = vector.broadcast %f5 : f32 to vector<2xf32>23  %c = vector.insert %f6, %2[1] : f32 into vector<2xf32>24  %3 = vector.broadcast %f7 : f32 to vector<2xf32>25  %d = vector.insert %f8, %3[1] : f32 into vector<2xf32>26  %4 = vector.broadcast %f0 : f32 to vector<2x2xf32>27  %5 = vector.insert %a, %4[0] : vector<2xf32> into vector<2x2xf32>28  %A = vector.insert %b, %5[1] : vector<2xf32> into vector<2x2xf32>29  %6 = vector.broadcast %f0 : f32 to vector<2x2xf32>30  %7 = vector.insert %c, %6[0] : vector<2xf32> into vector<2x2xf32>31  %B = vector.insert %d, %7[1] : vector<2xf32> into vector<2x2xf32>32  %8 = vector.broadcast %f0 : f32 to vector<3x2xf32>33  %9 = vector.insert %a, %8[0] : vector<2xf32> into vector<3x2xf32>34  %10 = vector.insert %b, %9[1] : vector<2xf32> into vector<3x2xf32>35  %C = vector.insert %c, %10[2] : vector<2xf32> into vector<3x2xf32>36  %cst = arith.constant dense<0.000000e+00> : vector<2x4xf32>37  %11 = vector.insert_strided_slice %A, %cst {offsets = [0, 0], strides = [1, 1]} : vector<2x2xf32> into vector<2x4xf32>38  %D = vector.insert_strided_slice %B, %11 {offsets = [0, 2], strides = [1, 1]} : vector<2x2xf32> into vector<2x4xf32>39 40  vector.print %A : vector<2x2xf32>41  vector.print %B : vector<2x2xf32>42  vector.print %C : vector<3x2xf32>43  vector.print %D : vector<2x4xf32>44  //45  // test matrices:46  //47  // CHECK: ( ( 1, 2 ), ( 3, 4 ) )48  // CHECK: ( ( 5, 6 ), ( 7, 8 ) )49  // CHECK: ( ( 1, 2 ), ( 3, 4 ), ( 5, 6 ) )50  // CHECK: ( ( 1, 2, 5, 6 ), ( 3, 4, 7, 8 ) )51 52  %tA = vector.transpose %A, [1, 0] : vector<2x2xf32> to vector<2x2xf32>53  %tB = vector.transpose %B, [1, 0] : vector<2x2xf32> to vector<2x2xf32>54  %tC = vector.transpose %C, [1, 0] : vector<3x2xf32> to vector<2x3xf32>55  %tD = vector.transpose %D, [1, 0] : vector<2x4xf32> to vector<4x2xf32>56 57  vector.print %tA : vector<2x2xf32>58  vector.print %tB : vector<2x2xf32>59  vector.print %tC : vector<2x3xf32>60  vector.print %tD : vector<4x2xf32>61  //62  // transposed matrices:63  //64  // CHECK: ( ( 1, 3 ), ( 2, 4 ) )65  // CHECK: ( ( 5, 7 ), ( 6, 8 ) )66  // CHECK: ( ( 1, 3, 5 ), ( 2, 4, 6 ) )67  // CHECK: ( ( 1, 3 ), ( 2, 4 ), ( 5, 7 ), ( 6, 8 ) )68 69  %idD = vector.transpose %D, [0, 1] : vector<2x4xf32> to vector<2x4xf32>70  %ttD = vector.transpose %tD, [1, 0] : vector<4x2xf32> to vector<2x4xf32>71 72  vector.print %idD : vector<2x4xf32>73  vector.print %ttD : vector<2x4xf32>74  //75  // back to original after transpose matrices:76  //77  // CHECK: ( ( 1, 2, 5, 6 ), ( 3, 4, 7, 8 ) )78  // CHECK: ( ( 1, 2, 5, 6 ), ( 3, 4, 7, 8 ) )79 80  // Construct test tensor.81  %p = vector.broadcast %f1 : f32 to vector<2x2x2xf32>82  %q = vector.insert %f2, %p[0, 0, 1] : f32 into vector<2x2x2xf32>83  %r = vector.insert %f3, %q[0, 1, 0] : f32 into vector<2x2x2xf32>84  %s = vector.insert %f4, %r[0, 1, 1] : f32 into vector<2x2x2xf32>85  %t = vector.insert %f5, %s[1, 0, 0] : f32 into vector<2x2x2xf32>86  %u = vector.insert %f6, %t[1, 0, 1] : f32 into vector<2x2x2xf32>87  %v = vector.insert %f7, %u[1, 1, 0] : f32 into vector<2x2x2xf32>88  %w = vector.insert %f8, %v[1, 1, 1] : f32 into vector<2x2x2xf32>89 90  vector.print %w : vector<2x2x2xf32>91  //92  // test tensors:93  //94  // CHECK: ( ( ( 1, 2 ), ( 3, 4 ) ), ( ( 5, 6 ), ( 7, 8 ) ) )95 96  %tP = vector.transpose %w, [0, 1, 2] : vector<2x2x2xf32> to vector<2x2x2xf32>97  %tQ = vector.transpose %w, [0, 2, 1] : vector<2x2x2xf32> to vector<2x2x2xf32>98  %tR = vector.transpose %w, [1, 0, 2] : vector<2x2x2xf32> to vector<2x2x2xf32>99  %tS = vector.transpose %w, [2, 0, 1] : vector<2x2x2xf32> to vector<2x2x2xf32>100  %tT = vector.transpose %w, [1, 2, 0] : vector<2x2x2xf32> to vector<2x2x2xf32>101  %tU = vector.transpose %w, [2, 1, 0] : vector<2x2x2xf32> to vector<2x2x2xf32>102 103  vector.print %tP : vector<2x2x2xf32>104  vector.print %tQ : vector<2x2x2xf32>105  vector.print %tR : vector<2x2x2xf32>106  vector.print %tS : vector<2x2x2xf32>107  vector.print %tT : vector<2x2x2xf32>108  vector.print %tU : vector<2x2x2xf32>109  //110  // transposed tensors:111  //112  // CHECK: ( ( ( 1, 2 ), ( 3, 4 ) ), ( ( 5, 6 ), ( 7, 8 ) ) )113  // CHECK: ( ( ( 1, 3 ), ( 2, 4 ) ), ( ( 5, 7 ), ( 6, 8 ) ) )114  // CHECK: ( ( ( 1, 2 ), ( 5, 6 ) ), ( ( 3, 4 ), ( 7, 8 ) ) )115  // CHECK: ( ( ( 1, 3 ), ( 5, 7 ) ), ( ( 2, 4 ), ( 6, 8 ) ) )116  // CHECK: ( ( ( 1, 5 ), ( 2, 6 ) ), ( ( 3, 7 ), ( 4, 8 ) ) )117  // CHECK: ( ( ( 1, 5 ), ( 3, 7 ) ), ( ( 2, 6 ), ( 4, 8 ) ) )118 119  return120}121