|
1 | | -// RUN: mlir-opt --spirv-convert-to-replicated-const-composite --split-input-file --verify-diagnostics %s -o - | FileCheck %s |
| 1 | +// RUN: mlir-opt --spirv-convert-to-replicated-const-composite --split-input-file --verify-diagnostics %s | FileCheck %s |
2 | 2 |
|
3 | 3 | spirv.module Logical GLSL450 { |
4 | 4 | spirv.func @splat_vector_of_i32() -> (vector<3xi32>) "None" { |
5 | 5 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [2 : i32] : vector<3xi32> |
6 | 6 | %0 = spirv.Constant dense<2> : vector<3xi32> |
7 | 7 | spirv.ReturnValue %0 : vector<3xi32> |
8 | 8 | } |
9 | | -} |
10 | | - |
11 | | -// ----- |
12 | 9 |
|
13 | | -spirv.module Logical GLSL450 { |
14 | 10 | spirv.func @splat_array_of_i32() -> (!spirv.array<3 x i32>) "None" { |
15 | 11 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [1 : i32] : !spirv.array<3 x i32> |
16 | 12 | %0 = spirv.Constant [1 : i32, 1 : i32, 1 : i32] : !spirv.array<3 x i32> |
17 | 13 | spirv.ReturnValue %0 : !spirv.array<3 x i32> |
18 | 14 | } |
19 | | -} |
20 | 15 |
|
21 | | -// ----- |
22 | | - |
23 | | -spirv.module Logical GLSL450 { |
24 | 16 | spirv.func @splat_array_of_splat_array_of_i32() -> (!spirv.array<2 x !spirv.array<3 x i32>>) "None" { |
25 | 17 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [3 : i32] : !spirv.array<2 x !spirv.array<3 x i32>> |
26 | 18 | %0 = spirv.Constant [[3 : i32, 3 : i32, 3 : i32], [3 : i32, 3 : i32, 3 : i32]] : !spirv.array<2 x !spirv.array<3 x i32>> |
27 | 19 | spirv.ReturnValue %0 : !spirv.array<2 x !spirv.array<3 x i32>> |
28 | 20 | } |
29 | | -} |
30 | | - |
31 | | -// ----- |
32 | 21 |
|
33 | | -spirv.module Logical GLSL450 { |
34 | 22 | spirv.func @splat_array_of_non_splat_array_of_i32() -> (!spirv.array<2 x !spirv.array<3 x i32>>) "None" { |
35 | 23 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate {{\[}}[1 : i32, 2 : i32, 3 : i32]] : !spirv.array<2 x !spirv.array<3 x i32>> |
36 | 24 | %0 = spirv.Constant [[1 : i32, 2 : i32, 3 : i32], [1 : i32, 2 : i32, 3 : i32]] : !spirv.array<2 x !spirv.array<3 x i32>> |
37 | 25 | spirv.ReturnValue %0 : !spirv.array<2 x !spirv.array<3 x i32>> |
38 | 26 | } |
39 | | -} |
40 | 27 |
|
41 | | -// ----- |
42 | | - |
43 | | -spirv.module Logical GLSL450 { |
44 | 28 | spirv.func @splat_array_of_vectors_of_i32() -> (!spirv.array<2xvector<2xi32>>) "None" { |
45 | 29 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [dense<[1, 2]> : vector<2xi32>] : !spirv.array<2 x vector<2xi32>> |
46 | 30 | %0 = spirv.Constant [dense<[1, 2]> : vector<2xi32>, dense<[1, 2]> : vector<2xi32>] : !spirv.array<2 x vector<2xi32>> |
47 | 31 | spirv.ReturnValue %0 : !spirv.array<2 x vector<2xi32>> |
48 | 32 | } |
49 | | -} |
50 | | - |
51 | | -// ----- |
52 | 33 |
|
53 | | -spirv.module Logical GLSL450 { |
54 | 34 | spirv.func @splat_array_of_splat_vectors_of_i32() -> (!spirv.array<2 x vector<2xi32>>) "None" { |
55 | 35 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [2 : i32] : !spirv.array<2 x vector<2xi32>> |
56 | 36 | %0 = spirv.Constant [dense<2> : vector<2xi32>, dense<2> : vector<2xi32>] : !spirv.array<2 x vector<2xi32>> |
57 | 37 | spirv.ReturnValue %0 : !spirv.array<2 x vector<2xi32>> |
58 | 38 | } |
59 | | -} |
60 | 39 |
|
61 | | -// ----- |
62 | | - |
63 | | -spirv.module Logical GLSL450 { |
64 | 40 | spirv.func @splat_tensor_of_i32() -> (!spirv.array<2 x !spirv.array<3 x i32>>) "None" { |
65 | 41 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [3 : i32] : !spirv.array<2 x !spirv.array<3 x i32>> |
66 | 42 | %0 = spirv.Constant dense<3> : tensor<2x3xi32> : !spirv.array<2 x !spirv.array<3 x i32>> |
67 | 43 | spirv.ReturnValue %0 : !spirv.array<2 x !spirv.array<3 x i32>> |
68 | 44 | } |
69 | | -} |
70 | | - |
71 | | -// ----- |
72 | 45 |
|
73 | | -spirv.module Logical GLSL450 { |
74 | 46 | spirv.func @splat_arm_tensor_of_i32() -> (!spirv.arm.tensor<2x3xi32>) "None" { |
75 | 47 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [2 : i32] : !spirv.arm.tensor<2x3xi32> |
76 | 48 | %0 = spirv.Constant dense<2> : !spirv.arm.tensor<2x3xi32> |
77 | 49 | spirv.ReturnValue %0 : !spirv.arm.tensor<2x3xi32> |
78 | 50 | } |
79 | | -} |
80 | 51 |
|
81 | | -// ----- |
82 | | - |
83 | | -spirv.module Logical GLSL450 { |
84 | 52 | spirv.func @splat_vector_of_f32() -> (vector<3xf32>) "None" { |
85 | 53 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [2.000000e+00 : f32] : vector<3xf32> |
86 | 54 | %0 = spirv.Constant dense<2.0> : vector<3xf32> |
87 | 55 | spirv.ReturnValue %0 : vector<3xf32> |
88 | 56 | } |
89 | | -} |
90 | | - |
91 | | -// ----- |
92 | 57 |
|
93 | | -spirv.module Logical GLSL450 { |
94 | 58 | spirv.func @splat_array_of_f32() -> (!spirv.array<3 x f32>) "None" { |
95 | 59 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [1.000000e+00 : f32] : !spirv.array<3 x f32> |
96 | 60 | %0 = spirv.Constant [1.0 : f32, 1.0 : f32, 1.0 : f32] : !spirv.array<3 x f32> |
97 | 61 | spirv.ReturnValue %0 : !spirv.array<3 x f32> |
98 | 62 | } |
99 | | -} |
100 | 63 |
|
101 | | -// ----- |
102 | | - |
103 | | -spirv.module Logical GLSL450 { |
104 | 64 | spirv.func @splat_array_of_splat_array_of_f32() -> (!spirv.array<2 x !spirv.array<3 x f32>>) "None" { |
105 | 65 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [3.000000e+00 : f32] : !spirv.array<2 x !spirv.array<3 x f32>> |
106 | 66 | %0 = spirv.Constant [[3.0 : f32, 3.0 : f32, 3.0 : f32], [3.0 : f32, 3.0 : f32, 3.0 : f32]] : !spirv.array<2 x !spirv.array<3 x f32>> |
107 | 67 | spirv.ReturnValue %0 : !spirv.array<2 x !spirv.array<3 x f32>> |
108 | 68 | } |
109 | | -} |
110 | | - |
111 | | -// ----- |
112 | 69 |
|
113 | | -spirv.module Logical GLSL450 { |
114 | 70 | spirv.func @splat_array_of_non_splat_array_of_f32() -> (!spirv.array<2 x !spirv.array<3 x f32>>) "None" { |
115 | 71 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate {{\[}}[1.000000e+00 : f32, 2.000000e+00 : f32, 3.000000e+00 : f32]] : !spirv.array<2 x !spirv.array<3 x f32>> |
116 | 72 | %0 = spirv.Constant [[1.0 : f32, 2.0 : f32, 3.0 : f32], [1.0 : f32, 2.0 : f32, 3.0 : f32]] : !spirv.array<2 x !spirv.array<3 x f32>> |
117 | 73 | spirv.ReturnValue %0 : !spirv.array<2 x !spirv.array<3 x f32>> |
118 | 74 | } |
119 | | -} |
120 | 75 |
|
121 | | -// ----- |
122 | | - |
123 | | -spirv.module Logical GLSL450 { |
124 | 76 | spirv.func @splat_array_of_vectors_of_f32() -> (!spirv.array<2xvector<2xf32>>) "None" { |
125 | 77 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [dense<[1.000000e+00, 2.000000e+00]> : vector<2xf32>] : !spirv.array<2 x vector<2xf32>> |
126 | 78 | %0 = spirv.Constant [dense<[1.0, 2.0]> : vector<2xf32>, dense<[1.0, 2.0]> : vector<2xf32>] : !spirv.array<2 x vector<2xf32>> |
127 | 79 | spirv.ReturnValue %0 : !spirv.array<2 x vector<2xf32>> |
128 | 80 | } |
129 | | -} |
130 | | - |
131 | | -// ----- |
132 | 81 |
|
133 | | -spirv.module Logical GLSL450 { |
134 | 82 | spirv.func @splat_array_of_splat_vectors_of_f32() -> (!spirv.array<2 x vector<2xf32>>) "None" { |
135 | 83 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [2.000000e+00 : f32] : !spirv.array<2 x vector<2xf32>> |
136 | 84 | %0 = spirv.Constant [dense<2.0> : vector<2xf32>, dense<2.0> : vector<2xf32>] : !spirv.array<2 x vector<2xf32>> |
137 | 85 | spirv.ReturnValue %0 : !spirv.array<2 x vector<2xf32>> |
138 | 86 | } |
139 | | -} |
140 | 87 |
|
141 | | -// ----- |
142 | | - |
143 | | -spirv.module Logical GLSL450 { |
144 | 88 | spirv.func @splat_tensor_of_f32() -> (!spirv.array<2 x !spirv.array<3 x f32>>) "None" { |
145 | 89 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [3.000000e+00 : f32] : !spirv.array<2 x !spirv.array<3 x f32>> |
146 | 90 | %0 = spirv.Constant dense<3.0> : tensor<2x3xf32> : !spirv.array<2 x !spirv.array<3 x f32>> |
147 | 91 | spirv.ReturnValue %0 : !spirv.array<2 x !spirv.array<3 x f32>> |
148 | 92 | } |
149 | | -} |
150 | | - |
151 | | -// ----- |
152 | 93 |
|
153 | | -spirv.module Logical GLSL450 { |
154 | 94 | spirv.func @splat_arm_tensor_of_f32() -> (!spirv.arm.tensor<2x3xf32>) "None" { |
155 | 95 | // CHECK: {{%.*}} = spirv.EXT.ConstantCompositeReplicate [2.000000e+00 : f32] : !spirv.arm.tensor<2x3xf32> |
156 | 96 | %0 = spirv.Constant dense<2.0> : !spirv.arm.tensor<2x3xf32> |
157 | 97 | spirv.ReturnValue %0 : !spirv.arm.tensor<2x3xf32> |
158 | 98 | } |
159 | | -} |
160 | | - |
161 | | -// ----- |
162 | 99 |
|
163 | | -spirv.module Logical GLSL450 { |
164 | 100 | spirv.func @array_of_one_i32() -> (!spirv.array<1 x i32>) "None" { |
165 | 101 | // CHECK-NOT: spirv.EXT.ConstantCompositeReplicate |
166 | 102 | %0 = spirv.Constant [1 : i32] : !spirv.array<1 x i32> |
167 | 103 | spirv.ReturnValue %0 : !spirv.array<1 x i32> |
168 | 104 | } |
169 | | -} |
170 | | - |
171 | | -// ----- |
172 | 105 |
|
173 | | -spirv.module Logical GLSL450 { |
174 | 106 | spirv.func @arm_tensor_of_one_i32() -> (!spirv.arm.tensor<1xi32>) "None" { |
175 | 107 | // CHECK-NOT: spirv.EXT.ConstantCompositeReplicate |
176 | 108 | %0 = spirv.Constant dense<1> : !spirv.arm.tensor<1xi32> |
177 | 109 | spirv.ReturnValue %0 : !spirv.arm.tensor<1xi32> |
178 | 110 | } |
179 | | -} |
180 | 111 |
|
181 | | -// ----- |
182 | | - |
183 | | -spirv.module Logical GLSL450 { |
184 | 112 | spirv.func @non_splat_vector_of_i32() -> (vector<3xi32>) "None" { |
185 | 113 | // CHECK-NOT: spirv.EXT.ConstantCompositeReplicate |
186 | 114 | %0 = spirv.Constant dense<[0, 1, 2]> : vector<3xi32> |
187 | 115 | spirv.ReturnValue %0 : vector<3xi32> |
188 | 116 | } |
189 | | -} |
190 | 117 |
|
191 | | -// ----- |
192 | | - |
193 | | -spirv.module Logical GLSL450 { |
194 | 118 | spirv.func @non_splat_array_of_vectors_of_i32() -> (!spirv.array<2xvector<2xi32>>) "None" { |
195 | 119 | // CHECK-NOT: spirv.EXT.ConstantCompositeReplicate |
196 | 120 | %0 = spirv.Constant [dense<[1, 2]> : vector<2xi32>, dense<[1, 3]> : vector<2xi32>] : !spirv.array<2 x vector<2xi32>> |
197 | 121 | spirv.ReturnValue %0 : !spirv.array<2 x vector<2xi32>> |
198 | 122 | } |
199 | | -} |
200 | | - |
201 | | -// ----- |
202 | 123 |
|
203 | | -spirv.module Logical GLSL450 { |
204 | 124 | spirv.func @array_of_one_f32() -> (!spirv.array<1 x f32>) "None" { |
205 | 125 | // CHECK-NOT: spirv.EXT.ConstantCompositeReplicate |
206 | 126 | %0 = spirv.Constant [1.0 : f32] : !spirv.array<1 x f32> |
207 | 127 | spirv.ReturnValue %0 : !spirv.array<1 x f32> |
208 | 128 | } |
209 | | -} |
210 | 129 |
|
211 | | -// ----- |
212 | | - |
213 | | -spirv.module Logical GLSL450 { |
214 | 130 | spirv.func @arm_tensor_of_one_f32() -> (!spirv.arm.tensor<1xf32>) "None" { |
215 | 131 | // CHECK-NOT: spirv.EXT.ConstantCompositeReplicate |
216 | 132 | %0 = spirv.Constant dense<1.0> : !spirv.arm.tensor<1xf32> |
|
0 commit comments