brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · 7fb8af1 Raw
90 lines · plain
1// RUN: mlir-translate --no-implicit-module --test-spirv-roundtrip %s | FileCheck %s2// RUN: %if spirv-tools %{ mlir-translate --no-implicit-module --serialize-spirv %s | spirv-val %}3 4spirv.module Logical Vulkan requires #spirv.vce<v1.3,5             [VulkanMemoryModel, Shader, TensorsARM, Linkage], [SPV_KHR_vulkan_memory_model, SPV_ARM_tensors]> {6  // CHECK-LABEL: @rank_1_arm_tensor_of_i327  spirv.func @rank_1_arm_tensor_of_i32() -> (!spirv.arm.tensor<3xi32>) "None" {8    // CHECK: {{%.*}} = spirv.Constant dense<[1, 2, 3]> : !spirv.arm.tensor<3xi32>9    %0 = spirv.Constant dense<[1, 2, 3]> : !spirv.arm.tensor<3xi32>10    spirv.ReturnValue %0 : !spirv.arm.tensor<3xi32>11  }12 13  // CHECK-LABEL: @rank_2_arm_tensor_of_i3214  spirv.func @rank_2_arm_tensor_of_i32() -> (!spirv.arm.tensor<2x3xi32>) "None" {15    // CHECK: {{%.*}} = spirv.Constant dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : !spirv.arm.tensor<2x3xi32>16    %0 = spirv.Constant dense<[[1, 2, 3], [4, 5, 6]]> : !spirv.arm.tensor<2x3xi32>17    spirv.ReturnValue %0 : !spirv.arm.tensor<2x3xi32>18  }19 20  // CHECK-LABEL: @rank_3_arm_tensor_of_i3221  spirv.func @rank_3_arm_tensor_of_i32() -> (!spirv.arm.tensor<2x2x3xi32>) "None" {22    // CHECK: {{%.*}} = spirv.Constant dense<{{\[}}{{\[}}[1, 2, 3], [4, 5, 6]], {{\[}}[7, 8, 9], [10, 11, 12]]]> : !spirv.arm.tensor<2x2x3xi32>23    %0 = spirv.Constant dense<[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]> : !spirv.arm.tensor<2x2x3xi32>24    spirv.ReturnValue %0 : !spirv.arm.tensor<2x2x3xi32>25  }26 27  // CHECK-LABEL: @rank_4_arm_tensor_of_i3228  spirv.func @rank_4_arm_tensor_of_i32() -> (!spirv.arm.tensor<2x3x4x5xi32>) "None" {29    // CHECK: {{%.*}} = spirv.Constant dense<5> : !spirv.arm.tensor<2x3x4x5xi32>30    %0 = spirv.Constant dense<5> : !spirv.arm.tensor<2x3x4x5xi32>31    spirv.ReturnValue %0 : !spirv.arm.tensor<2x3x4x5xi32>32  }33 34  // CHECK-LABEL: @splat_arm_tensor_of_i3235  spirv.func @splat_arm_tensor_of_i32() -> (!spirv.arm.tensor<2x3xi32>) "None" {36    // CHECK: {{%.*}} = spirv.Constant dense<2> : !spirv.arm.tensor<2x3xi32>37    %0 = spirv.Constant dense<2> : !spirv.arm.tensor<2x3xi32>38    spirv.ReturnValue %0 : !spirv.arm.tensor<2x3xi32>39  }40 41  // CHECK-LABEL: @rank_1_arm_tensor_of_f3242  spirv.func @rank_1_arm_tensor_of_f32() -> (!spirv.arm.tensor<3xf32>) "None" {43    // CHECK: {{%.*}} = spirv.Constant dense<[1.000000e+00, 2.000000e+00, 3.000000e+00]> : !spirv.arm.tensor<3xf32>44    %0 = spirv.Constant dense<[1.0, 2.0, 3.0]> : !spirv.arm.tensor<3xf32>45    spirv.ReturnValue %0 : !spirv.arm.tensor<3xf32>46  }47 48  // CHECK-LABEL: @rank_2_arm_tensor_of_f3249  spirv.func @rank_2_arm_tensor_of_f32() -> (!spirv.arm.tensor<2x3xf32>) "None" {50    // CHECK: {{%.*}} = spirv.Constant dense<{{\[}}[1.000000e+00, 2.000000e+00, 3.000000e+00], [4.000000e+00, 5.000000e+00, 6.000000e+00]]> : !spirv.arm.tensor<2x3xf32>51    %0 = spirv.Constant dense<[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]> : !spirv.arm.tensor<2x3xf32>52    spirv.ReturnValue %0 : !spirv.arm.tensor<2x3xf32>53  }54 55  // CHECK-LABEL: @rank_3_arm_tensor_of_f3256  spirv.func @rank_3_arm_tensor_of_f32() -> (!spirv.arm.tensor<2x2x3xf32>) "None" {57    // CHECK: {{%.*}} = spirv.Constant dense<{{\[}}{{\[}}[1.000000e+00, 2.000000e+00, 3.000000e+00], [4.000000e+00, 5.000000e+00, 6.000000e+00]], {{\[}}[7.000000e+00, 8.000000e+00, 9.000000e+00], [1.000000e+01, 1.100000e+01, 1.200000e+01]]]> : !spirv.arm.tensor<2x2x3xf32>58    %0 = spirv.Constant dense<[[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]], [[7.0, 8.0, 9.0], [10.0, 11.0, 12.0]]]> : !spirv.arm.tensor<2x2x3xf32>59    spirv.ReturnValue %0 : !spirv.arm.tensor<2x2x3xf32>60  }61 62  // CHECK-LABEL: @rank_4_arm_tensor_of_f3263  spirv.func @rank_4_arm_tensor_of_f32() -> (!spirv.arm.tensor<2x3x4x5xf32>) "None" {64    // CHECK: {{%.*}} = spirv.Constant dense<5.000000e+00> : !spirv.arm.tensor<2x3x4x5xf32>65    %0 = spirv.Constant dense<5.0> : !spirv.arm.tensor<2x3x4x5xf32>66    spirv.ReturnValue %0 : !spirv.arm.tensor<2x3x4x5xf32>67  }68 69  // CHECK-LABEL: @splat_arm_tensor_of_f3270  spirv.func @splat_arm_tensor_of_f32() -> (!spirv.arm.tensor<2x3xf32>) "None" {71    // CHECK: {{%.*}} = spirv.Constant dense<2.000000e+00> : !spirv.arm.tensor<2x3xf32>72    %0 = spirv.Constant dense<2.0> : !spirv.arm.tensor<2x3xf32>73    spirv.ReturnValue %0 : !spirv.arm.tensor<2x3xf32>74  }75 76  // CHECK-LABEL: @null_arm_tensor_of_i3277  spirv.func @null_arm_tensor_of_i32() -> (!spirv.arm.tensor<2x3xi32>) "None" {78    // CHECK: spirv.Constant dense<0> : !spirv.arm.tensor<2x3xi32>79    %0 = spirv.Constant dense<0> : !spirv.arm.tensor<2x3xi32>80    spirv.ReturnValue %0 : !spirv.arm.tensor<2x3xi32>81  }82 83  // CHECK-LABEL: @null_arm_tensor_of_f3284  spirv.func @null_arm_tensor_of_f32() -> (!spirv.arm.tensor<2x3xf32>) "None" {85    // CHECK: spirv.Constant dense<0.000000e+00> : !spirv.arm.tensor<2x3xf32>86    %0 = spirv.Constant dense<0.0> : !spirv.arm.tensor<2x3xf32>87    spirv.ReturnValue %0 : !spirv.arm.tensor<2x3xf32>88  }89}90