brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.0 KiB · 02a252f Raw
136 lines · plain
1 2// RUN: mlir-translate --no-implicit-module --test-spirv-roundtrip %s | FileCheck %s3// RUN: %if spirv-tools %{ mlir-translate --no-implicit-module --serialize-spirv %s | spirv-val %}4 5// Note: Since the output of this test (optionally) gets validated by spirv-val,6// we cannot use splits.7 8spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader, ReplicatedCompositesEXT, TensorsARM, Linkage],9                                                       [SPV_EXT_replicated_composites, SPV_ARM_tensors]> {10  // CHECK-LABEL: @splat_vector_i3211  spirv.func @splat_vector_i32() -> (vector<3xi32>) "None" {12    // CHECK: spirv.EXT.ConstantCompositeReplicate [1 : i32] : vector<3xi32>13    %1 = spirv.EXT.ConstantCompositeReplicate [1 : i32] : vector<3xi32>14    spirv.ReturnValue %1 : vector<3xi32>15  }16 17  // CHECK-LABEL: @splat_array_of_i3218  spirv.func @splat_array_of_i32() -> (!spirv.array<3 x i32>) "None" {19    // CHECK: spirv.EXT.ConstantCompositeReplicate [1 : i32] : !spirv.array<3 x i32>20    %1 = spirv.EXT.ConstantCompositeReplicate [1 : i32] : !spirv.array<3 x i32>21    spirv.ReturnValue %1 : !spirv.array<3 x i32>22  }23 24  // CHECK-LABEL: @splat_array_of_vectors_of_i3225  spirv.func @splat_array_of_vectors_of_i32() -> (!spirv.array<3 x vector<2xi32>>) "None" {26    // CHECK: spirv.EXT.ConstantCompositeReplicate [dense<[1, 2]> : vector<2xi32>] : !spirv.array<3 x vector<2xi32>>27    %0 = spirv.EXT.ConstantCompositeReplicate [dense<[1, 2]> : vector<2xi32>] : !spirv.array<3 x vector<2xi32>>28    spirv.ReturnValue %0 : !spirv.array<3 x vector<2xi32>>29  }30 31  // CHECK-LABEL: @splat_array_of_splat_array_of_i3232  spirv.func @splat_array_of_splat_array_of_i32() -> (!spirv.array<2 x !spirv.array<3 x i32>>) "None" {33    // CHECK: %0 = spirv.EXT.ConstantCompositeReplicate [3 : i32] : !spirv.array<2 x !spirv.array<3 x i32>>34    %0 = spirv.EXT.ConstantCompositeReplicate [3 : i32] : !spirv.array<2 x !spirv.array<3 x i32>>35    spirv.ReturnValue %0 : !spirv.array<2 x !spirv.array<3 x i32>>36  }37 38  // CHECK-LABEL: @splat_array_of_non_splat_array_of_i3239  spirv.func @splat_array_of_non_splat_array_of_i32() -> (!spirv.array<2 x !spirv.array<3 x i32>>) "None" {40    // CHECK: %0 = spirv.EXT.ConstantCompositeReplicate {{\[}}[1 : i32, 2 : i32, 3 : i32]] : !spirv.array<2 x !spirv.array<3 x i32>>41    %0 = spirv.EXT.ConstantCompositeReplicate [[1 : i32, 2 : i32, 3 : i32]] : !spirv.array<2 x !spirv.array<3 x i32>>42    spirv.ReturnValue %0 : !spirv.array<2 x !spirv.array<3 x i32>>43  }44 45  // CHECK-LABEL: @splat_array_of_splat_vectors_of_i3246  spirv.func @splat_array_of_splat_vectors_of_i32() -> (!spirv.array<2 x vector<2xi32>>) "None" {47    // CHECK: spirv.EXT.ConstantCompositeReplicate [2 : i32] : !spirv.array<2 x vector<2xi32>>48    %0 = spirv.EXT.ConstantCompositeReplicate [2 : i32] : !spirv.array<2 x vector<2xi32>>49    spirv.ReturnValue %0 : !spirv.array<2 x vector<2xi32>>50  }51 52  // CHECK-LABEL: @splat_arm_tensor_of_i3253  spirv.func @splat_arm_tensor_of_i32() -> (!spirv.arm.tensor<2x3xi32>) "None" {54    // CHECK: spirv.EXT.ConstantCompositeReplicate [2 : i32] : !spirv.arm.tensor<2x3xi32>55    %0 = spirv.EXT.ConstantCompositeReplicate [2 : i32] : !spirv.arm.tensor<2x3xi32>56    spirv.ReturnValue %0 : !spirv.arm.tensor<2x3xi32>57  }58 59  // CHECK-LABEL: @splat_array_of_non_splat_array_of_arrays_of_i3260  spirv.func @splat_array_of_non_splat_array_of_arrays_of_i32() -> !spirv.array<2 x !spirv.array<2 x !spirv.array<3 x i32>>> "None" {61    // CHECK: spirv.EXT.ConstantCompositeReplicate {{\[}}{{\[}}[1 : i32, 2 : i32, 3 : i32], [4 : i32, 5 : i32, 6 : i32]]] : !spirv.array<2 x !spirv.array<2 x !spirv.array<3 x i32>>>62    %0 = spirv.EXT.ConstantCompositeReplicate [[[1 : i32, 2 : i32, 3 : i32], [4 : i32, 5 : i32, 6 : i32]]] : !spirv.array<2 x !spirv.array<2 x !spirv.array<3 x i32>>>63    spirv.ReturnValue %0 : !spirv.array<2 x !spirv.array<2 x !spirv.array<3 x i32>>>64  }65 66  // CHECK-LABEL: @null_cc_arm_tensor_of_i3267  spirv.func @null_cc_arm_tensor_of_i32() -> (!spirv.arm.tensor<2x3xi32>) "None" {68    // CHECK: spirv.Constant dense<0> : !spirv.arm.tensor<2x3xi32>69    %0 = spirv.EXT.ConstantCompositeReplicate [0 : i32] : !spirv.arm.tensor<2x3xi32>70    spirv.ReturnValue %0 : !spirv.arm.tensor<2x3xi32>71  }72 73  // CHECK-LABEL: @splat_vector_f3274  spirv.func @splat_vector_f32() -> (vector<3xf32>) "None" {75    // CHECK: spirv.EXT.ConstantCompositeReplicate [1.000000e+00 : f32] : vector<3xf32>76    %1 = spirv.EXT.ConstantCompositeReplicate [1.0 : f32] : vector<3xf32>77    spirv.ReturnValue %1 : vector<3xf32>78  }79 80  // CHECK-LABEL: @splat_array_of_f3281  spirv.func @splat_array_of_f32() -> (!spirv.array<3 x f32>) "None" {82    // CHECK: spirv.EXT.ConstantCompositeReplicate [1.000000e+00 : f32] : !spirv.array<3 x f32>83    %1 = spirv.EXT.ConstantCompositeReplicate [1.0 : f32] : !spirv.array<3 x f32>84    spirv.ReturnValue %1 : !spirv.array<3 x f32>85  }86 87  // CHECK-LABEL: @splat_array_of_splat_array_of_f3288  spirv.func @splat_array_of_splat_array_of_f32() -> (!spirv.array<2 x !spirv.array<3 x f32>>) "None" {89    // CHECK: %0 = spirv.EXT.ConstantCompositeReplicate [3.000000e+00 : f32] : !spirv.array<2 x !spirv.array<3 x f32>>90    %0 = spirv.EXT.ConstantCompositeReplicate [3.0 : f32] : !spirv.array<2 x !spirv.array<3 x f32>>91    spirv.ReturnValue %0 : !spirv.array<2 x !spirv.array<3 x f32>>92  }93 94  // CHECK-LABEL: @splat_array_of_non_splat_array_of_f3295  spirv.func @splat_array_of_non_splat_array_of_f32() -> (!spirv.array<2 x !spirv.array<3 x f32>>) "None" {96    // CHECK: %0 = spirv.EXT.ConstantCompositeReplicate {{\[}}[1.000000e+00 : f32, 2.000000e+00 : f32, 3.000000e+00 : f32]] : !spirv.array<2 x !spirv.array<3 x f32>>97    %0 = spirv.EXT.ConstantCompositeReplicate [[1.0 : f32, 2.0 : f32, 3.0 : f32]] : !spirv.array<2 x !spirv.array<3 x f32>>98    spirv.ReturnValue %0 : !spirv.array<2 x !spirv.array<3 x f32>>99  }100 101  // CHECK-LABEL: @splat_array_of_vectors_of_f32102  spirv.func @splat_array_of_vectors_of_f32() -> (!spirv.array<3 x vector<2xf32>>) "None" {103    // CHECK: spirv.EXT.ConstantCompositeReplicate [dense<[1.000000e+00, 2.000000e+00]> : vector<2xf32>] : !spirv.array<3 x vector<2xf32>>104    %0 = spirv.EXT.ConstantCompositeReplicate [dense<[1.0, 2.0]> : vector<2xf32>] : !spirv.array<3 x vector<2xf32>>105    spirv.ReturnValue %0 : !spirv.array<3 x vector<2xf32>>106  }107 108  // CHECK-LABEL: @splat_array_of_splat_vectors_of_f32109  spirv.func @splat_array_of_splat_vectors_of_f32() -> (!spirv.array<2 x vector<2xf32>>) "None" {110    // CHECK: spirv.EXT.ConstantCompositeReplicate [2.000000e+00 : f32] : !spirv.array<2 x vector<2xf32>>111    %0 = spirv.EXT.ConstantCompositeReplicate [2.0 : f32] : !spirv.array<2 x vector<2xf32>>112    spirv.ReturnValue %0 : !spirv.array<2 x vector<2xf32>>113  }114 115  // CHECK-LABEL: @splat_arm_tensor_of_f32116  spirv.func @splat_arm_tensor_of_f32() -> (!spirv.arm.tensor<2x3xf32>) "None" {117    // CHECK: spirv.EXT.ConstantCompositeReplicate [2.000000e+00 : f32] : !spirv.arm.tensor<2x3xf32>118    %0 = spirv.EXT.ConstantCompositeReplicate [2.0 : f32] : !spirv.arm.tensor<2x3xf32>119    spirv.ReturnValue %0 : !spirv.arm.tensor<2x3xf32>120  }121 122  // CHECK-LABEL: @splat_array_of_non_splat_array_of_arrays_of_f32123  spirv.func @splat_array_of_non_splat_array_of_arrays_of_f32() -> !spirv.array<2 x !spirv.array<2 x !spirv.array<3 x f32>>> "None" {124    // CHECK: spirv.EXT.ConstantCompositeReplicate {{\[}}{{\[}}[1.000000e+00 : f32, 2.000000e+00 : f32, 3.000000e+00 : f32], [4.000000e+00 : f32, 5.000000e+00 : f32, 6.000000e+00 : f32]]] : !spirv.array<2 x !spirv.array<2 x !spirv.array<3 x f32>>>125    %0 = spirv.EXT.ConstantCompositeReplicate [[[1.0 : f32, 2.0 : f32, 3.0 : f32], [4.0 : f32, 5.0 : f32, 6.0 : f32]]] : !spirv.array<2 x !spirv.array<2 x !spirv.array<3 x f32>>>126    spirv.ReturnValue %0 : !spirv.array<2 x !spirv.array<2 x !spirv.array<3 x f32>>>127  }128 129  // CHECK-LABEL: @null_cc_arm_tensor_of_f32130  spirv.func @null_cc_arm_tensor_of_f32() -> (!spirv.arm.tensor<2x3xf32>) "None" {131    // CHECK: spirv.Constant dense<0.000000e+00> : !spirv.arm.tensor<2x3xf32>132    %0 = spirv.EXT.ConstantCompositeReplicate [0.0 : f32] : !spirv.arm.tensor<2x3xf32>133    spirv.ReturnValue %0 : !spirv.arm.tensor<2x3xf32>134  }135}136