@@ -40,8 +40,8 @@ def AIEVec_AddElemOp:
4040 Pure,
4141 AllTypesMatch<["lhs", "rhs", "result"]>
4242 ]>,
43- Arguments<(ins AnyVector :$lhs, AnyVector :$rhs)>,
44- Results<(outs AnyVector :$result)> {
43+ Arguments<(ins AnyVectorOfNonZeroRank :$lhs, AnyVectorOfNonZeroRank :$rhs)>,
44+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
4545 let summary = "AIE vector add elem";
4646 let description = [{
4747 AMD-specific AIE2 intrinsic that allows you to perform addition operation
@@ -57,8 +57,8 @@ def AIEVec_SubElemOp:
5757 Pure,
5858 AllTypesMatch<["lhs", "rhs", "result"]>
5959 ]>,
60- Arguments<(ins AnyVector :$lhs, AnyVector :$rhs)>,
61- Results<(outs AnyVector :$result)> {
60+ Arguments<(ins AnyVectorOfNonZeroRank :$lhs, AnyVectorOfNonZeroRank :$rhs)>,
61+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
6262 let summary = "AIE vector sub elem";
6363 let description = [{
6464 AMD-specific AIE2 intrinsic that allows you to perform substraction operation
@@ -73,9 +73,10 @@ def AIEVec_FMAElemOp :
7373 AIEVec_Op<"mac_elem", [
7474 Pure
7575 ]>,
76- Arguments<(ins AnyVector:$lhs, AnyVector:$rhs, AnyVector:$acc,
76+ Arguments<(ins AnyVectorOfNonZeroRank:$lhs, AnyVectorOfNonZeroRank:$rhs,
77+ AnyVectorOfNonZeroRank:$acc,
7778 DefaultValuedAttr<BoolAttr, "false">:$fmsub)>,
78- Results<(outs AnyVector :$result)> {
79+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
7980 let summary = "AIE2 element-wise vector fused multiply-add";
8081 let description = [{
8182 AMD-specific multiply-add operation. It multiplies two 1-D vectors in the same channel,
@@ -130,9 +131,9 @@ def AIEVec_BroadcastOp:
130131 AIEVec_Op<"broadcast", [
131132 Pure
132133 ]>,
133- Arguments<(ins AnyVector :$source,
134+ Arguments<(ins AnyVectorOfNonZeroRank :$source,
134135 DefaultValuedAttr<ConfinedAttr<AIEI8Attr, [IntNonNegative]>, "0">:$idx)>,
135- Results<(outs AnyVector :$result)> {
136+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
136137 let summary = "AIE2 broadcast";
137138 let description = [{
138139 AMD-specific broadcast intrinsic. Extract element index from vector and broadcasts its
@@ -150,7 +151,7 @@ def AIEVec_BroadcastScalarOp:
150151 Pure
151152 ]>,
152153 Arguments<(ins AnyTypeOf<[BF16, F32, I32, I16, I8]>:$source)>,
153- Results<(outs AnyVector :$result)> {
154+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
154155 let summary = "AIE2 broadcast scalar";
155156 let description = [{
156157 AMD-specific broadcast scalar intrinsic. Broadcasts input value to all vector lanes.
@@ -166,9 +167,9 @@ def AIEVec_UPSOp:
166167 AIEVec_Op<"ups", [
167168 Pure
168169 ]>,
169- Arguments<(ins AnyVector :$source,
170+ Arguments<(ins AnyVectorOfNonZeroRank :$source,
170171 DefaultValuedAttr<ConfinedAttr<AIEI8Attr, [IntNonNegative]>, "0">:$shift)>,
171- Results<(outs AnyVector :$result)> {
172+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
172173 let summary = "AIE ups";
173174 let description = [{
174175 AMD-specific upshift intrinsic. Moves data from AIE vector data type
@@ -187,8 +188,9 @@ def AIEVec_CastOp:
187188 AIEVec_Op<"cast", [
188189 Pure
189190 ]>,
190- Arguments<(ins AnyVector:$source, DefaultValuedAttr<BoolAttr, "false">:$isResAcc)>,
191- Results<(outs AnyVector:$result)> {
191+ Arguments<(ins AnyVectorOfNonZeroRank:$source,
192+ DefaultValuedAttr<BoolAttr, "false">:$isResAcc)>,
193+ Results<(outs AnyVectorOfNonZeroRank:$result)> {
192194 let summary = "AIE cast";
193195 let description = [{
194196 AIE2 cast intrinsic. Cast values from source data type to result data types.
@@ -205,8 +207,8 @@ def AIEVec_SRSOp:
205207 AIEVec_Op<"srs", [
206208 Pure
207209 ]>,
208- Arguments<(ins AnyVector :$source, AnyInteger:$shift)>,
209- Results<(outs AnyVector :$result)> {
210+ Arguments<(ins AnyVectorOfNonZeroRank :$source, AnyInteger:$shift)>,
211+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
210212 let summary = "AIE srs";
211213 let description = [{
212214 AMD-specific shift-round-saturate intrinsic. Moves values from
@@ -227,8 +229,8 @@ def AIEVec_UPDOp:
227229 DefaultValuedAttr<AIEI32Attr, "0">:$offset,
228230 DefaultValuedAttr<ConfinedAttr<AIEI8Attr,
229231 [IntMinValue<0>, IntMaxValue<1>]>, "0">:$index,
230- Optional<AnyVector >:$vector)>,
231- Results<(outs AnyVector :$result)> {
232+ Optional<AnyVectorOfNonZeroRank >:$vector)>,
233+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
232234 let summary = "AIE upd";
233235 let description = [{
234236 AMD-specific update intrinsic. General upd intrinsic updates contiguous
@@ -250,8 +252,8 @@ def AIEVec_ConcatOp:
250252 AIEVec_Op<"concat", [
251253 Pure, InferTypeOpAdaptor,
252254 ]>,
253- Arguments<(ins Variadic<AnyVector >:$sources)>,
254- Results<(outs AnyVector :$result)> {
255+ Arguments<(ins Variadic<AnyVectorOfNonZeroRank >:$sources)>,
256+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
255257 let summary = "AIE concat";
256258 let description = [{
257259 AMD-specific concat intrinsic. Concatenates two or more smaller
@@ -265,9 +267,9 @@ def AIEVec_ExtOp:
265267 AIEVec_Op<"ext", [
266268 Pure
267269 ]>,
268- Arguments<(ins AnyVector :$source,
270+ Arguments<(ins AnyVectorOfNonZeroRank :$source,
269271 ConfinedAttr<AIEI8Attr, [IntMinValue<0>, IntMaxValue<8>]>:$index)>,
270- Results<(outs AnyVector :$result)> {
272+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
271273 let summary = "AIE ext";
272274 let description = [{
273275 AMD-specific vector extract intrinsic. Selects contiguous lanes from
@@ -285,8 +287,8 @@ def AIEVec_PackOp:
285287 AIEVec_Op<"pack", [
286288 Pure
287289 ]>,
288- Arguments<(ins AnyVector :$source)>,
289- Results<(outs AnyVector :$result)> {
290+ Arguments<(ins AnyVectorOfNonZeroRank :$source)>,
291+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
290292 let summary = "AIE pack";
291293 let description = [{
292294 AMD-specific pack intrinsic. Pack a vector of 16-bit values into
@@ -299,8 +301,8 @@ def AIEVec_UnpackOp:
299301 AIEVec_Op<"unpack", [
300302 Pure
301303 ]>,
302- Arguments<(ins AnyVector :$source)>,
303- Results<(outs AnyVector :$result)> {
304+ Arguments<(ins AnyVectorOfNonZeroRank :$source)>,
305+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
304306 let summary = "AIE unpack";
305307 let description = [{
306308 AMD-specific unpack intrinsic. Unpack a vector of 8-bit values into
@@ -313,8 +315,9 @@ def AIEVec_ShiftOp:
313315 AIEVec_Op<"shift", [
314316 Pure
315317 ]>,
316- Arguments<(ins AnyVector:$lhs, AnyVector:$rhs, I32:$shift, DefaultValuedAttr<BoolAttr, "false">:$isAcc)>,
317- Results<(outs AnyVector:$result)> {
318+ Arguments<(ins AnyVectorOfNonZeroRank:$lhs, AnyVectorOfNonZeroRank:$rhs,
319+ I32:$shift, DefaultValuedAttr<BoolAttr, "false">:$isAcc)>,
320+ Results<(outs AnyVectorOfNonZeroRank:$result)> {
318321 let summary = "AIE2 concat and shift";
319322 let description = [{
320323 AMD-specific shift intrinsic. Concatenates two
@@ -330,9 +333,9 @@ def AIEVec_LegacyShuffleOp:
330333 AIEVec_Op<"legacyshuffle", [
331334 Pure
332335 ]>,
333- Arguments<(ins AnyVector :$source,
336+ Arguments<(ins AnyVectorOfNonZeroRank :$source,
334337 DefaultValuedAttr<AIEI32Attr, "0">:$mode)>,
335- Results<(outs AnyVector :$result)> {
338+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
336339 let summary = "AIE2 shuffle";
337340 let description = [{
338341 AMD-specific vector shuffle intrinsic by a specific shuffle mode.
@@ -344,10 +347,10 @@ def AIEVec_MulConvOp:
344347 AIEVec_Op<"mul_conv", [
345348 Pure
346349 ]>,
347- Arguments<(ins AnyVector :$lhs, AnyVector :$rhs,
350+ Arguments<(ins AnyVectorOfNonZeroRank :$lhs, AnyVectorOfNonZeroRank :$rhs,
348351 DefaultValuedAttr<AIEI32Attr, "0">:$M,
349352 DefaultValuedAttr<AIEI32Attr, "0">:$N)>,
350- Results<(outs AnyVector :$result)> {
353+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
351354 let summary = "AIE2 multiply convolution";
352355 let description = [{
353356 AMD-specific multiply convolution intrinsic. Multiply convolution operation
@@ -365,11 +368,12 @@ def AIEVec_FMAConvOp:
365368 AIEVec_Op<"fma_conv", [
366369 Pure
367370 ]>,
368- Arguments<(ins AnyVector:$lhs, AnyVector:$rhs, AnyVector:$acc,
371+ Arguments<(ins AnyVectorOfNonZeroRank:$lhs, AnyVectorOfNonZeroRank:$rhs,
372+ AnyVectorOfNonZeroRank:$acc,
369373 DefaultValuedAttr<AIEI32Attr, "0">:$M,
370374 DefaultValuedAttr<AIEI32Attr, "0">:$N,
371375 DefaultValuedAttr<BoolAttr, "false">:$fmsub)>,
372- Results<(outs AnyVector :$result)> {
376+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
373377 let summary = "AIE2 multiply accumulate convolution";
374378 let description = [{
375379 AMD-specific multiply accumulate convolution intrinsic. Multiply accumulate convolution
@@ -388,8 +392,8 @@ def AIEVec_MinOp:
388392 Pure,
389393 AllTypesMatch<["lhs", "rhs", "result"]>
390394 ]>,
391- Arguments<(ins AnyVector :$lhs, AnyVector :$rhs)>,
392- Results<(outs AnyVector :$result)> {
395+ Arguments<(ins AnyVectorOfNonZeroRank :$lhs, AnyVectorOfNonZeroRank :$rhs)>,
396+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
393397 let summary = "AIE vector minimum";
394398 let description = [{
395399 AMD-specific intrinsic that calculates the minimum between two input vectors.
@@ -404,8 +408,8 @@ def AIEVec_MaxOp:
404408 Pure,
405409 AllTypesMatch<["lhs", "rhs", "result"]>
406410 ]>,
407- Arguments<(ins AnyVector :$lhs, AnyVector :$rhs)>,
408- Results<(outs AnyVector :$result)> {
411+ Arguments<(ins AnyVectorOfNonZeroRank :$lhs, AnyVectorOfNonZeroRank :$rhs)>,
412+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
409413 let summary = "AIE vector maximum";
410414 let description = [{
411415 AMD-specific intrinsic that calculates the maximum between two input vectors.
@@ -420,7 +424,8 @@ def AIEVec_CmpOp:
420424 Pure,
421425 AllTypesMatch<["lhs", "rhs"]>
422426 ]>,
423- Arguments<(ins AnyVector:$lhs, AnyVector:$rhs, DefaultValuedStrAttr<StrAttr, "">:$pred)>,
427+ Arguments<(ins AnyVectorOfNonZeroRank:$lhs, AnyVectorOfNonZeroRank:$rhs,
428+ DefaultValuedStrAttr<StrAttr, "">:$pred)>,
424429 Results<(outs AnyUnsignedInteger:$result)> {
425430 let summary = "AIE vector comparison";
426431 let description = [{
@@ -449,8 +454,9 @@ def AIEVec_SelOp:
449454 Pure,
450455 AllTypesMatch<["lhs", "rhs", "result"]>
451456 ]>,
452- Arguments<(ins AnyVector:$lhs, AnyVector:$rhs, AnyUnsignedInteger:$sel)>,
453- Results<(outs AnyVector:$result)> {
457+ Arguments<(ins AnyVectorOfNonZeroRank:$lhs, AnyVectorOfNonZeroRank:$rhs,
458+ AnyUnsignedInteger:$sel)>,
459+ Results<(outs AnyVectorOfNonZeroRank:$result)> {
454460 let summary = "AIE vector lane wise selection";
455461 let description = [{
456462 AMD-specific intrinsic that performs lane wise selection between two input vectors, if a bit of sel is zero, the lane of vector lhs is selected, else the lane of vector rhs is selected.
@@ -465,7 +471,7 @@ def AIEVec_ExtElemOp:
465471 Pure,
466472 AllElementTypesMatch<["source", "result"]>
467473 ]>,
468- Arguments<(ins AnyVector :$source, I32:$index)>,
474+ Arguments<(ins AnyVectorOfNonZeroRank :$source, I32:$index)>,
469475 Results<(outs AnyTypeOf<[BF16, F32, I32, I16, I8]>:$result)> {
470476 let summary = "AIE extract element";
471477 let description =
@@ -481,8 +487,8 @@ def AIEVec_NegOp:
481487 Pure,
482488 AllTypesMatch<["source", "result"]>
483489 ]>,
484- Arguments<(ins AnyVector :$source)>,
485- Results<(outs AnyVector :$result)> {
490+ Arguments<(ins AnyVectorOfNonZeroRank :$source)>,
491+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
486492 let summary = "AIE vector negative";
487493 let description = [{
488494 AMD-specific intrinsic that negates the vector and returns the result.
@@ -622,7 +628,7 @@ def AIEVec_ShuffleOp : AIEVec_Op<"shuffle",
622628 512, [I8, I16, I32, I64, I128, I256,
623629 I512, BF16, F32]>>:$rhs,
624630 AIEVec_ShuffleModeAttr:$mode)>,
625- Results<(outs AnyVector :$result)> {
631+ Results<(outs AnyVectorOfNonZeroRank :$result)> {
626632 let summary = "AIE2 shuffle";
627633 let description = [{
628634 AMD AIEv2-specific vector shuffle. It performs a shuffle of the elements of
0 commit comments