@@ -26,7 +26,13 @@ class SPIRV_GroupNonUniformArithmeticOp<string mnemonic, Type type,
26
26
27
27
let results = (outs
28
28
SPIRV_ScalarOrVectorOf<type>:$result
29
- );
29
+ );
30
+
31
+ let hasCustomAssemblyFormat = 0;
32
+
33
+ let assemblyFormat = [{
34
+ $execution_scope $group_operation $value (`cluster_size``(` $cluster_size^ `)`)? attr-dict `:` type($value) (`,` type($cluster_size)^)? `->` type(results)
35
+ }];
30
36
}
31
37
32
38
// -----
@@ -318,24 +324,14 @@ def SPIRV_GroupNonUniformFAddOp : SPIRV_GroupNonUniformArithmeticOp<"GroupNonUni
318
324
319
325
<!-- End of AutoGen section -->
320
326
321
- ```
322
- scope ::= `"Workgroup"` | `"Subgroup"`
323
- operation ::= `"Reduce"` | `"InclusiveScan"` | `"ExclusiveScan"` | ...
324
- float-scalar-vector-type ::= float-type |
325
- `vector<` integer-literal `x` float-type `>`
326
- non-uniform-fadd-op ::= ssa-id `=` `spirv.GroupNonUniformFAdd` scope operation
327
- ssa-use ( `cluster_size` `(` ssa_use `)` )?
328
- `:` float-scalar-vector-type
329
- ```
330
-
331
327
#### Example:
332
328
333
329
```mlir
334
330
%four = spirv.Constant 4 : i32
335
331
%scalar = ... : f32
336
332
%vector = ... : vector<4xf32>
337
- %0 = spirv.GroupNonUniformFAdd " Workgroup" " Reduce" %scalar : f32
338
- %1 = spirv.GroupNonUniformFAdd " Subgroup" " ClusteredReduce" %vector cluster_size(%four) : vector<4xf32>
333
+ %0 = spirv.GroupNonUniformFAdd < Workgroup> < Reduce> %scalar : f32 -> f32
334
+ %1 = spirv.GroupNonUniformFAdd < Subgroup> < ClusteredReduce> %vector cluster_size(%four) : vector<4xf32>, i32 -> vector<4xf32>
339
335
```
340
336
}];
341
337
@@ -378,24 +374,14 @@ def SPIRV_GroupNonUniformFMaxOp : SPIRV_GroupNonUniformArithmeticOp<"GroupNonUni
378
374
379
375
<!-- End of AutoGen section -->
380
376
381
- ```
382
- scope ::= `"Workgroup"` | `"Subgroup"`
383
- operation ::= `"Reduce"` | `"InclusiveScan"` | `"ExclusiveScan"` | ...
384
- float-scalar-vector-type ::= float-type |
385
- `vector<` integer-literal `x` float-type `>`
386
- non-uniform-fmax-op ::= ssa-id `=` `spirv.GroupNonUniformFMax` scope operation
387
- ssa-use ( `cluster_size` `(` ssa_use `)` )?
388
- `:` float-scalar-vector-type
389
- ```
390
-
391
377
#### Example:
392
378
393
379
```mlir
394
380
%four = spirv.Constant 4 : i32
395
381
%scalar = ... : f32
396
382
%vector = ... : vector<4xf32>
397
- %0 = spirv.GroupNonUniformFMax " Workgroup" " Reduce" %scalar : f32
398
- %1 = spirv.GroupNonUniformFMax " Subgroup" " ClusteredReduce" %vector cluster_size(%four) : vector<4xf32>
383
+ %0 = spirv.GroupNonUniformFMax < Workgroup> < Reduce> %scalar : f32 -> f32
384
+ %1 = spirv.GroupNonUniformFMax < Subgroup> < ClusteredReduce> %vector cluster_size(%four) : vector<4xf32>, i32 -> vector<4xf32>
399
385
```
400
386
}];
401
387
@@ -438,24 +424,14 @@ def SPIRV_GroupNonUniformFMinOp : SPIRV_GroupNonUniformArithmeticOp<"GroupNonUni
438
424
439
425
<!-- End of AutoGen section -->
440
426
441
- ```
442
- scope ::= `"Workgroup"` | `"Subgroup"`
443
- operation ::= `"Reduce"` | `"InclusiveScan"` | `"ExclusiveScan"` | ...
444
- float-scalar-vector-type ::= float-type |
445
- `vector<` integer-literal `x` float-type `>`
446
- non-uniform-fmin-op ::= ssa-id `=` `spirv.GroupNonUniformFMin` scope operation
447
- ssa-use ( `cluster_size` `(` ssa_use `)` )?
448
- `:` float-scalar-vector-type
449
- ```
450
-
451
427
#### Example:
452
428
453
429
```mlir
454
430
%four = spirv.Constant 4 : i32
455
431
%scalar = ... : f32
456
432
%vector = ... : vector<4xf32>
457
- %0 = spirv.GroupNonUniformFMin " Workgroup" " Reduce" %scalar : f32
458
- %1 = spirv.GroupNonUniformFMin " Subgroup" " ClusteredReduce" %vector cluster_size(%four) : vector<4xf32>
433
+ %0 = spirv.GroupNonUniformFMin < Workgroup> < Reduce> %scalar : f32 -> i32
434
+ %1 = spirv.GroupNonUniformFMin < Subgroup> < ClusteredReduce> %vector cluster_size(%four) : vector<4xf32>, i32 -> vector<4xf32>
459
435
```
460
436
}];
461
437
@@ -495,24 +471,14 @@ def SPIRV_GroupNonUniformFMulOp : SPIRV_GroupNonUniformArithmeticOp<"GroupNonUni
495
471
496
472
<!-- End of AutoGen section -->
497
473
498
- ```
499
- scope ::= `"Workgroup"` | `"Subgroup"`
500
- operation ::= `"Reduce"` | `"InclusiveScan"` | `"ExclusiveScan"` | ...
501
- float-scalar-vector-type ::= float-type |
502
- `vector<` integer-literal `x` float-type `>`
503
- non-uniform-fmul-op ::= ssa-id `=` `spirv.GroupNonUniformFMul` scope operation
504
- ssa-use ( `cluster_size` `(` ssa_use `)` )?
505
- `:` float-scalar-vector-type
506
- ```
507
-
508
474
#### Example:
509
475
510
476
```mlir
511
477
%four = spirv.Constant 4 : i32
512
478
%scalar = ... : f32
513
479
%vector = ... : vector<4xf32>
514
- %0 = spirv.GroupNonUniformFMul " Workgroup" " Reduce" %scalar : f32
515
- %1 = spirv.GroupNonUniformFMul " Subgroup" " ClusteredReduce" %vector cluster_size(%four) : vector<4xf32>
480
+ %0 = spirv.GroupNonUniformFMul < Workgroup> < Reduce> %scalar : f32 -> f32
481
+ %1 = spirv.GroupNonUniformFMul < Subgroup> < ClusteredReduce> %vector cluster_size(%four) : vector<4xf32>, i32 -> vector<4xf32>
516
482
```
517
483
}];
518
484
@@ -550,24 +516,14 @@ def SPIRV_GroupNonUniformIAddOp : SPIRV_GroupNonUniformArithmeticOp<"GroupNonUni
550
516
551
517
<!-- End of AutoGen section -->
552
518
553
- ```
554
- scope ::= `"Workgroup"` | `"Subgroup"`
555
- operation ::= `"Reduce"` | `"InclusiveScan"` | `"ExclusiveScan"` | ...
556
- integer-scalar-vector-type ::= integer-type |
557
- `vector<` integer-literal `x` integer-type `>`
558
- non-uniform-iadd-op ::= ssa-id `=` `spirv.GroupNonUniformIAdd` scope operation
559
- ssa-use ( `cluster_size` `(` ssa_use `)` )?
560
- `:` integer-scalar-vector-type
561
- ```
562
-
563
519
#### Example:
564
520
565
521
```mlir
566
522
%four = spirv.Constant 4 : i32
567
523
%scalar = ... : i32
568
524
%vector = ... : vector<4xi32>
569
- %0 = spirv.GroupNonUniformIAdd " Workgroup" " Reduce" %scalar : i32
570
- %1 = spirv.GroupNonUniformIAdd " Subgroup" " ClusteredReduce" %vector cluster_size(%four) : vector<4xi32>
525
+ %0 = spirv.GroupNonUniformIAdd < Workgroup> < Reduce> %scalar : i32 -> i32
526
+ %1 = spirv.GroupNonUniformIAdd < Subgroup> < ClusteredReduce> %vector cluster_size(%four) : vector<4xi32>, i32 -> vector<4xi32>
571
527
```
572
528
}];
573
529
@@ -605,24 +561,14 @@ def SPIRV_GroupNonUniformIMulOp : SPIRV_GroupNonUniformArithmeticOp<"GroupNonUni
605
561
606
562
<!-- End of AutoGen section -->
607
563
608
- ```
609
- scope ::= `"Workgroup"` | `"Subgroup"`
610
- operation ::= `"Reduce"` | `"InclusiveScan"` | `"ExclusiveScan"` | ...
611
- integer-scalar-vector-type ::= integer-type |
612
- `vector<` integer-literal `x` integer-type `>`
613
- non-uniform-imul-op ::= ssa-id `=` `spirv.GroupNonUniformIMul` scope operation
614
- ssa-use ( `cluster_size` `(` ssa_use `)` )?
615
- `:` integer-scalar-vector-type
616
- ```
617
-
618
564
#### Example:
619
565
620
566
```mlir
621
567
%four = spirv.Constant 4 : i32
622
568
%scalar = ... : i32
623
569
%vector = ... : vector<4xi32>
624
- %0 = spirv.GroupNonUniformIMul " Workgroup" " Reduce" %scalar : i32
625
- %1 = spirv.GroupNonUniformIMul " Subgroup" " ClusteredReduce" %vector cluster_size(%four) : vector<4xi32>
570
+ %0 = spirv.GroupNonUniformIMul < Workgroup> < Reduce> %scalar : i32 -> i32
571
+ %1 = spirv.GroupNonUniformIMul < Subgroup> < ClusteredReduce> %vector cluster_size(%four) : vector<4xi32>, i32 -> vector<4xi32>
626
572
```
627
573
}];
628
574
@@ -662,24 +608,14 @@ def SPIRV_GroupNonUniformSMaxOp : SPIRV_GroupNonUniformArithmeticOp<"GroupNonUni
662
608
663
609
<!-- End of AutoGen section -->
664
610
665
- ```
666
- scope ::= `"Workgroup"` | `"Subgroup"`
667
- operation ::= `"Reduce"` | `"InclusiveScan"` | `"ExclusiveScan"` | ...
668
- integer-scalar-vector-type ::= integer-type |
669
- `vector<` integer-literal `x` integer-type `>`
670
- non-uniform-smax-op ::= ssa-id `=` `spirv.GroupNonUniformSMax` scope operation
671
- ssa-use ( `cluster_size` `(` ssa_use `)` )?
672
- `:` integer-scalar-vector-type
673
- ```
674
-
675
611
#### Example:
676
612
677
613
```mlir
678
614
%four = spirv.Constant 4 : i32
679
615
%scalar = ... : i32
680
616
%vector = ... : vector<4xi32>
681
- %0 = spirv.GroupNonUniformSMax " Workgroup" " Reduce" %scalar : i32
682
- %1 = spirv.GroupNonUniformSMax " Subgroup" " ClusteredReduce" %vector cluster_size(%four) : vector<4xi32>
617
+ %0 = spirv.GroupNonUniformSMax < Workgroup> < Reduce> %scalar : i32
618
+ %1 = spirv.GroupNonUniformSMax < Subgroup> < ClusteredReduce> %vector cluster_size(%four) : vector<4xi32>, i32 -> vector<4xi32>
683
619
```
684
620
}];
685
621
@@ -719,24 +655,14 @@ def SPIRV_GroupNonUniformSMinOp : SPIRV_GroupNonUniformArithmeticOp<"GroupNonUni
719
655
720
656
<!-- End of AutoGen section -->
721
657
722
- ```
723
- scope ::= `"Workgroup"` | `"Subgroup"`
724
- operation ::= `"Reduce"` | `"InclusiveScan"` | `"ExclusiveScan"` | ...
725
- integer-scalar-vector-type ::= integer-type |
726
- `vector<` integer-literal `x` integer-type `>`
727
- non-uniform-smin-op ::= ssa-id `=` `spirv.GroupNonUniformSMin` scope operation
728
- ssa-use ( `cluster_size` `(` ssa_use `)` )?
729
- `:` integer-scalar-vector-type
730
- ```
731
-
732
658
#### Example:
733
659
734
660
```mlir
735
661
%four = spirv.Constant 4 : i32
736
662
%scalar = ... : i32
737
663
%vector = ... : vector<4xi32>
738
- %0 = spirv.GroupNonUniformSMin " Workgroup" " Reduce" %scalar : i32
739
- %1 = spirv.GroupNonUniformSMin " Subgroup" " ClusteredReduce" %vector cluster_size(%four) : vector<4xi32>
664
+ %0 = spirv.GroupNonUniformSMin < Workgroup> < Reduce> %scalar : i32 -> i32
665
+ %1 = spirv.GroupNonUniformSMin < Subgroup> < ClusteredReduce> %vector cluster_size(%four) : vector<4xi32>, i32 -> vector<4xi32>
740
666
```
741
667
}];
742
668
@@ -992,24 +918,14 @@ def SPIRV_GroupNonUniformUMaxOp : SPIRV_GroupNonUniformArithmeticOp<"GroupNonUni
992
918
993
919
<!-- End of AutoGen section -->
994
920
995
- ```
996
- scope ::= `"Workgroup"` | `"Subgroup"`
997
- operation ::= `"Reduce"` | `"InclusiveScan"` | `"ExclusiveScan"` | ...
998
- integer-scalar-vector-type ::= integer-type |
999
- `vector<` integer-literal `x` integer-type `>`
1000
- non-uniform-umax-op ::= ssa-id `=` `spirv.GroupNonUniformUMax` scope operation
1001
- ssa-use ( `cluster_size` `(` ssa_use `)` )?
1002
- `:` integer-scalar-vector-type
1003
- ```
1004
-
1005
921
#### Example:
1006
922
1007
923
```mlir
1008
924
%four = spirv.Constant 4 : i32
1009
925
%scalar = ... : i32
1010
926
%vector = ... : vector<4xi32>
1011
- %0 = spirv.GroupNonUniformUMax " Workgroup" " Reduce" %scalar : i32
1012
- %1 = spirv.GroupNonUniformUMax " Subgroup" " ClusteredReduce" %vector cluster_size(%four) : vector<4xi32>
927
+ %0 = spirv.GroupNonUniformUMax < Workgroup> < Reduce> %scalar : i32 -> i32
928
+ %1 = spirv.GroupNonUniformUMax < Subgroup> < ClusteredReduce> %vector cluster_size(%four) : vector<4xi32>, i32 -> vector<4xi32>
1013
929
```
1014
930
}];
1015
931
@@ -1050,24 +966,14 @@ def SPIRV_GroupNonUniformUMinOp : SPIRV_GroupNonUniformArithmeticOp<"GroupNonUni
1050
966
1051
967
<!-- End of AutoGen section -->
1052
968
1053
- ```
1054
- scope ::= `"Workgroup"` | `"Subgroup"`
1055
- operation ::= `"Reduce"` | `"InclusiveScan"` | `"ExclusiveScan"` | ...
1056
- integer-scalar-vector-type ::= integer-type |
1057
- `vector<` integer-literal `x` integer-type `>`
1058
- non-uniform-umin-op ::= ssa-id `=` `spirv.GroupNonUniformUMin` scope operation
1059
- ssa-use ( `cluster_size` `(` ssa_use `)` )?
1060
- `:` integer-scalar-vector-type
1061
- ```
1062
-
1063
969
#### Example:
1064
970
1065
971
```mlir
1066
972
%four = spirv.Constant 4 : i32
1067
973
%scalar = ... : i32
1068
974
%vector = ... : vector<4xi32>
1069
- %0 = spirv.GroupNonUniformUMin " Workgroup" " Reduce" %scalar : i32
1070
- %1 = spirv.GroupNonUniformUMin " Subgroup" " ClusteredReduce" %vector cluster_size(%four) : vector<4xi32>
975
+ %0 = spirv.GroupNonUniformUMin < Workgroup> < Reduce> %scalar : i32 -> i32
976
+ %1 = spirv.GroupNonUniformUMin < Subgroup> < ClusteredReduce> %vector cluster_size(%four) : vector<4xi32>, i32 -> vector<4xi32>
1071
977
```
1072
978
}];
1073
979
@@ -1113,9 +1019,9 @@ def SPIRV_GroupNonUniformBitwiseAndOp :
1113
1019
%four = spirv.Constant 4 : i32
1114
1020
%scalar = ... : i32
1115
1021
%vector = ... : vector<4xi32>
1116
- %0 = spirv.GroupNonUniformBitwiseAnd " Workgroup" " Reduce" %scalar : i32
1117
- %1 = spirv.GroupNonUniformBitwiseAnd " Subgroup" " ClusteredReduce"
1118
- %vector cluster_size(%four) : vector<4xi32>
1022
+ %0 = spirv.GroupNonUniformBitwiseAnd < Workgroup> < Reduce> %scalar : i32 -> i32
1023
+ %1 = spirv.GroupNonUniformBitwiseAnd < Subgroup> < ClusteredReduce>
1024
+ %vector cluster_size(%four) : vector<4xi32>, i32 -> vector<4xi32>
1119
1025
```
1120
1026
}];
1121
1027
@@ -1163,9 +1069,9 @@ def SPIRV_GroupNonUniformBitwiseOrOp :
1163
1069
%four = spirv.Constant 4 : i32
1164
1070
%scalar = ... : i32
1165
1071
%vector = ... : vector<4xi32>
1166
- %0 = spirv.GroupNonUniformBitwiseOr " Workgroup" " Reduce" %scalar : i32
1167
- %1 = spirv.GroupNonUniformBitwiseOr " Subgroup" " ClusteredReduce"
1168
- %vector cluster_size(%four) : vector<4xi32>
1072
+ %0 = spirv.GroupNonUniformBitwiseOr < Workgroup> < Reduce> %scalar : i32 -> i32
1073
+ %1 = spirv.GroupNonUniformBitwiseOr < Subgroup> < ClusteredReduce>
1074
+ %vector cluster_size(%four) : vector<4xi32>, i32 -> vector<4xi32>
1169
1075
```
1170
1076
}];
1171
1077
@@ -1213,9 +1119,9 @@ def SPIRV_GroupNonUniformBitwiseXorOp :
1213
1119
%four = spirv.Constant 4 : i32
1214
1120
%scalar = ... : i32
1215
1121
%vector = ... : vector<4xi32>
1216
- %0 = spirv.GroupNonUniformBitwiseXor " Workgroup" " Reduce" %scalar : i32
1217
- %1 = spirv.GroupNonUniformBitwiseXor " Subgroup" " ClusteredReduce"
1218
- %vector cluster_size(%four) : vector<4xi32>
1122
+ %0 = spirv.GroupNonUniformBitwiseXor < Workgroup> < Reduce> %scalar : i32 -> i32
1123
+ %1 = spirv.GroupNonUniformBitwiseXor < Subgroup> < ClusteredReduce>
1124
+ %vector cluster_size(%four) : vector<4xi32>, i32 -> vector<4xi32>
1219
1125
```
1220
1126
}];
1221
1127
@@ -1263,9 +1169,9 @@ def SPIRV_GroupNonUniformLogicalAndOp :
1263
1169
%four = spirv.Constant 4 : i32
1264
1170
%scalar = ... : i1
1265
1171
%vector = ... : vector<4xi1>
1266
- %0 = spirv.GroupNonUniformLogicalAnd " Workgroup" " Reduce" %scalar : i1
1267
- %1 = spirv.GroupNonUniformLogicalAnd " Subgroup" " ClusteredReduce"
1268
- %vector cluster_size(%four) : vector<4xi1>
1172
+ %0 = spirv.GroupNonUniformLogicalAnd < Workgroup> < Reduce> %scalar : i1 -> i1
1173
+ %1 = spirv.GroupNonUniformLogicalAnd < Subgroup> < ClusteredReduce>
1174
+ %vector cluster_size(%four) : vector<4xi1>, i32 -> vector<4xi1>
1269
1175
```
1270
1176
}];
1271
1177
@@ -1313,9 +1219,9 @@ def SPIRV_GroupNonUniformLogicalOrOp :
1313
1219
%four = spirv.Constant 4 : i32
1314
1220
%scalar = ... : i1
1315
1221
%vector = ... : vector<4xi1>
1316
- %0 = spirv.GroupNonUniformLogicalOr " Workgroup" " Reduce" %scalar : i1
1317
- %1 = spirv.GroupNonUniformLogicalOr " Subgroup" " ClusteredReduce"
1318
- %vector cluster_size(%four) : vector<4xi1>
1222
+ %0 = spirv.GroupNonUniformLogicalOr < Workgroup> < Reduce> %scalar : i1 -> i1
1223
+ %1 = spirv.GroupNonUniformLogicalOr < Subgroup> < ClusteredReduce>
1224
+ %vector cluster_size(%four) : vector<4xi1>, i32 -> vector<4xi1>
1319
1225
```
1320
1226
}];
1321
1227
@@ -1363,9 +1269,9 @@ def SPIRV_GroupNonUniformLogicalXorOp :
1363
1269
%four = spirv.Constant 4 : i32
1364
1270
%scalar = ... : i1
1365
1271
%vector = ... : vector<4xi1>
1366
- %0 = spirv.GroupNonUniformLogicalXor " Workgroup" " Reduce" %scalar : i1
1367
- %1 = spirv.GroupNonUniformLogicalXor " Subgroup" " ClusteredReduce"
1368
- %vector cluster_size(%four) : vector<4xi >
1272
+ %0 = spirv.GroupNonUniformLogicalXor < Workgroup> < Reduce> %scalar : i1 -> i1
1273
+ %1 = spirv.GroupNonUniformLogicalXor < Subgroup> < ClusteredReduce>
1274
+ %vector cluster_size(%four) : vector<4xi1>, i32 -> vector<4xi1 >
1369
1275
```
1370
1276
}];
1371
1277
0 commit comments