Skip to content

Commit 822fb7d

Browse files
authored
Add SPV_VALVE_mixed_float_dot_product (KhronosGroup#568)
1 parent f31ca17 commit 822fb7d

10 files changed

Lines changed: 165 additions & 2 deletions

File tree

include/spirv/unified1/spirv.bf

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1427,6 +1427,10 @@ namespace Spv
14271427
CacheControlsINTEL = 6441,
14281428
RegisterLimitsINTEL = 6460,
14291429
BindlessImagesINTEL = 6528,
1430+
DotProductFloat16AccFloat32VALVE = 6912,
1431+
DotProductFloat16AccFloat16VALVE = 6913,
1432+
DotProductBFloat16AccVALVE = 6914,
1433+
DotProductFloat8AccFloat32VALVE = 6915,
14301434
Max = 0x7fffffff,
14311435
}
14321436

@@ -2694,6 +2698,9 @@ namespace Spv
26942698
OpConvertHandleToImageINTEL = 6529,
26952699
OpConvertHandleToSamplerINTEL = 6530,
26962700
OpConvertHandleToSampledImageINTEL = 6531,
2701+
OpFDot2MixAcc32VALVE = 6916,
2702+
OpFDot2MixAcc16VALVE = 6917,
2703+
OpFDot4MixAcc32VALVE = 6918,
26972704
Max = 0x7fffffff,
26982705
}
26992706
}

include/spirv/unified1/spirv.core.grammar.json

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11728,6 +11728,48 @@
1172811728
"capabilities" : [ "BindlessImagesINTEL" ],
1172911729
"provisional" : true,
1173011730
"version" : "None"
11731+
},
11732+
{
11733+
"opname" : "OpFDot2MixAcc32VALVE",
11734+
"class" : "Reserved",
11735+
"opcode" : 6916,
11736+
"operands" : [
11737+
{ "kind" : "IdResultType" },
11738+
{ "kind" : "IdResult" },
11739+
{ "kind" : "IdRef", "name" : "Vector 1" },
11740+
{ "kind" : "IdRef", "name" : "Vector 2" },
11741+
{ "kind" : "IdRef", "name" : "Accumulator" }
11742+
],
11743+
"capabilities" : [ "DotProductFloat16AccFloat32VALVE", "DotProductBFloat16AccVALVE" ],
11744+
"version" : "None"
11745+
},
11746+
{
11747+
"opname" : "OpFDot2MixAcc16VALVE",
11748+
"class" : "Reserved",
11749+
"opcode" : 6917,
11750+
"operands" : [
11751+
{ "kind" : "IdResultType" },
11752+
{ "kind" : "IdResult" },
11753+
{ "kind" : "IdRef", "name" : "Vector 1" },
11754+
{ "kind" : "IdRef", "name" : "Vector 2" },
11755+
{ "kind" : "IdRef", "name" : "Accumulator" }
11756+
],
11757+
"capabilities" : [ "DotProductFloat16AccFloat16VALVE", "DotProductBFloat16AccVALVE" ],
11758+
"version" : "None"
11759+
},
11760+
{
11761+
"opname" : "OpFDot4MixAcc32VALVE",
11762+
"class" : "Reserved",
11763+
"opcode" : 6918,
11764+
"operands" : [
11765+
{ "kind" : "IdResultType" },
11766+
{ "kind" : "IdResult" },
11767+
{ "kind" : "IdRef", "name" : "Vector 1" },
11768+
{ "kind" : "IdRef", "name" : "Vector 2" },
11769+
{ "kind" : "IdRef", "name" : "Accumulator" }
11770+
],
11771+
"capabilities" : [ "DotProductFloat8AccFloat32VALVE" ],
11772+
"version" : "None"
1173111773
}
1173211774
],
1173311775
"operand_kinds" : [
@@ -18561,6 +18603,34 @@
1856118603
"extensions" : [ "SPV_INTEL_bindless_images" ],
1856218604
"provisional" : true,
1856318605
"version" : "None"
18606+
},
18607+
{
18608+
"enumerant" : "DotProductFloat16AccFloat32VALVE",
18609+
"value" : 6912,
18610+
"capabilities" : [ "Float16" ],
18611+
"extensions" : [ "SPV_VALVE_mixed_float_dot_product" ],
18612+
"version" : "None"
18613+
},
18614+
{
18615+
"enumerant" : "DotProductFloat16AccFloat16VALVE",
18616+
"value" : 6913,
18617+
"capabilities" : [ "Float16" ],
18618+
"extensions" : [ "SPV_VALVE_mixed_float_dot_product" ],
18619+
"version" : "None"
18620+
},
18621+
{
18622+
"enumerant" : "DotProductBFloat16AccVALVE",
18623+
"value" : 6914,
18624+
"capabilities" : [ "BFloat16TypeKHR" ],
18625+
"extensions" : [ "SPV_VALVE_mixed_float_dot_product" ],
18626+
"version" : "None"
18627+
},
18628+
{
18629+
"enumerant" : "DotProductFloat8AccFloat32VALVE",
18630+
"value" : 6915,
18631+
"capabilities" : [ "Float8EXT" ],
18632+
"extensions" : [ "SPV_VALVE_mixed_float_dot_product" ],
18633+
"version" : "None"
1856418634
}
1856518635
]
1856618636
},

include/spirv/unified1/spirv.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1426,6 +1426,10 @@ public enum Capability
14261426
CacheControlsINTEL = 6441,
14271427
RegisterLimitsINTEL = 6460,
14281428
BindlessImagesINTEL = 6528,
1429+
DotProductFloat16AccFloat32VALVE = 6912,
1430+
DotProductFloat16AccFloat16VALVE = 6913,
1431+
DotProductBFloat16AccVALVE = 6914,
1432+
DotProductFloat8AccFloat32VALVE = 6915,
14291433
Max = 0x7fffffff,
14301434
}
14311435

@@ -2693,6 +2697,9 @@ public enum Op
26932697
OpConvertHandleToImageINTEL = 6529,
26942698
OpConvertHandleToSamplerINTEL = 6530,
26952699
OpConvertHandleToSampledImageINTEL = 6531,
2700+
OpFDot2MixAcc32VALVE = 6916,
2701+
OpFDot2MixAcc16VALVE = 6917,
2702+
OpFDot4MixAcc32VALVE = 6918,
26962703
Max = 0x7fffffff,
26972704
}
26982705
}

include/spirv/unified1/spirv.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1397,6 +1397,10 @@ typedef enum SpvCapability_ {
13971397
SpvCapabilityCacheControlsINTEL = 6441,
13981398
SpvCapabilityRegisterLimitsINTEL = 6460,
13991399
SpvCapabilityBindlessImagesINTEL = 6528,
1400+
SpvCapabilityDotProductFloat16AccFloat32VALVE = 6912,
1401+
SpvCapabilityDotProductFloat16AccFloat16VALVE = 6913,
1402+
SpvCapabilityDotProductBFloat16AccVALVE = 6914,
1403+
SpvCapabilityDotProductFloat8AccFloat32VALVE = 6915,
14001404
SpvCapabilityMax = 0x7fffffff,
14011405
} SpvCapability;
14021406

@@ -2628,6 +2632,9 @@ typedef enum SpvOp_ {
26282632
SpvOpConvertHandleToImageINTEL = 6529,
26292633
SpvOpConvertHandleToSamplerINTEL = 6530,
26302634
SpvOpConvertHandleToSampledImageINTEL = 6531,
2635+
SpvOpFDot2MixAcc32VALVE = 6916,
2636+
SpvOpFDot2MixAcc16VALVE = 6917,
2637+
SpvOpFDot4MixAcc32VALVE = 6918,
26312638
SpvOpMax = 0x7fffffff,
26322639
} SpvOp;
26332640

@@ -3502,6 +3509,9 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
35023509
case SpvOpConvertHandleToImageINTEL: *hasResult = true; *hasResultType = true; break;
35033510
case SpvOpConvertHandleToSamplerINTEL: *hasResult = true; *hasResultType = true; break;
35043511
case SpvOpConvertHandleToSampledImageINTEL: *hasResult = true; *hasResultType = true; break;
3512+
case SpvOpFDot2MixAcc32VALVE: *hasResult = true; *hasResultType = true; break;
3513+
case SpvOpFDot2MixAcc16VALVE: *hasResult = true; *hasResultType = true; break;
3514+
case SpvOpFDot4MixAcc32VALVE: *hasResult = true; *hasResultType = true; break;
35053515
}
35063516
}
35073517
inline const char* SpvSourceLanguageToString(SpvSourceLanguage value) {
@@ -4493,6 +4503,10 @@ inline const char* SpvCapabilityToString(SpvCapability value) {
44934503
case SpvCapabilityCacheControlsINTEL: return "CacheControlsINTEL";
44944504
case SpvCapabilityRegisterLimitsINTEL: return "RegisterLimitsINTEL";
44954505
case SpvCapabilityBindlessImagesINTEL: return "BindlessImagesINTEL";
4506+
case SpvCapabilityDotProductFloat16AccFloat32VALVE: return "DotProductFloat16AccFloat32VALVE";
4507+
case SpvCapabilityDotProductFloat16AccFloat16VALVE: return "DotProductFloat16AccFloat16VALVE";
4508+
case SpvCapabilityDotProductBFloat16AccVALVE: return "DotProductBFloat16AccVALVE";
4509+
case SpvCapabilityDotProductFloat8AccFloat32VALVE: return "DotProductFloat8AccFloat32VALVE";
44964510
default: return "Unknown";
44974511
}
44984512
}
@@ -5550,6 +5564,9 @@ inline const char* SpvOpToString(SpvOp value) {
55505564
case SpvOpConvertHandleToImageINTEL: return "OpConvertHandleToImageINTEL";
55515565
case SpvOpConvertHandleToSamplerINTEL: return "OpConvertHandleToSamplerINTEL";
55525566
case SpvOpConvertHandleToSampledImageINTEL: return "OpConvertHandleToSampledImageINTEL";
5567+
case SpvOpFDot2MixAcc32VALVE: return "OpFDot2MixAcc32VALVE";
5568+
case SpvOpFDot2MixAcc16VALVE: return "OpFDot2MixAcc16VALVE";
5569+
case SpvOpFDot4MixAcc32VALVE: return "OpFDot4MixAcc32VALVE";
55535570
default: return "Unknown";
55545571
}
55555572
}

include/spirv/unified1/spirv.hpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1393,6 +1393,10 @@ enum Capability {
13931393
CapabilityCacheControlsINTEL = 6441,
13941394
CapabilityRegisterLimitsINTEL = 6460,
13951395
CapabilityBindlessImagesINTEL = 6528,
1396+
CapabilityDotProductFloat16AccFloat32VALVE = 6912,
1397+
CapabilityDotProductFloat16AccFloat16VALVE = 6913,
1398+
CapabilityDotProductBFloat16AccVALVE = 6914,
1399+
CapabilityDotProductFloat8AccFloat32VALVE = 6915,
13961400
CapabilityMax = 0x7fffffff,
13971401
};
13981402

@@ -2624,6 +2628,9 @@ enum Op {
26242628
OpConvertHandleToImageINTEL = 6529,
26252629
OpConvertHandleToSamplerINTEL = 6530,
26262630
OpConvertHandleToSampledImageINTEL = 6531,
2631+
OpFDot2MixAcc32VALVE = 6916,
2632+
OpFDot2MixAcc16VALVE = 6917,
2633+
OpFDot4MixAcc32VALVE = 6918,
26272634
OpMax = 0x7fffffff,
26282635
};
26292636

@@ -3498,6 +3505,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
34983505
case OpConvertHandleToImageINTEL: *hasResult = true; *hasResultType = true; break;
34993506
case OpConvertHandleToSamplerINTEL: *hasResult = true; *hasResultType = true; break;
35003507
case OpConvertHandleToSampledImageINTEL: *hasResult = true; *hasResultType = true; break;
3508+
case OpFDot2MixAcc32VALVE: *hasResult = true; *hasResultType = true; break;
3509+
case OpFDot2MixAcc16VALVE: *hasResult = true; *hasResultType = true; break;
3510+
case OpFDot4MixAcc32VALVE: *hasResult = true; *hasResultType = true; break;
35013511
}
35023512
}
35033513
inline const char* SourceLanguageToString(SourceLanguage value) {
@@ -4489,6 +4499,10 @@ inline const char* CapabilityToString(Capability value) {
44894499
case CapabilityCacheControlsINTEL: return "CacheControlsINTEL";
44904500
case CapabilityRegisterLimitsINTEL: return "RegisterLimitsINTEL";
44914501
case CapabilityBindlessImagesINTEL: return "BindlessImagesINTEL";
4502+
case CapabilityDotProductFloat16AccFloat32VALVE: return "DotProductFloat16AccFloat32VALVE";
4503+
case CapabilityDotProductFloat16AccFloat16VALVE: return "DotProductFloat16AccFloat16VALVE";
4504+
case CapabilityDotProductBFloat16AccVALVE: return "DotProductBFloat16AccVALVE";
4505+
case CapabilityDotProductFloat8AccFloat32VALVE: return "DotProductFloat8AccFloat32VALVE";
44924506
default: return "Unknown";
44934507
}
44944508
}
@@ -5546,6 +5560,9 @@ inline const char* OpToString(Op value) {
55465560
case OpConvertHandleToImageINTEL: return "OpConvertHandleToImageINTEL";
55475561
case OpConvertHandleToSamplerINTEL: return "OpConvertHandleToSamplerINTEL";
55485562
case OpConvertHandleToSampledImageINTEL: return "OpConvertHandleToSampledImageINTEL";
5563+
case OpFDot2MixAcc32VALVE: return "OpFDot2MixAcc32VALVE";
5564+
case OpFDot2MixAcc16VALVE: return "OpFDot2MixAcc16VALVE";
5565+
case OpFDot4MixAcc32VALVE: return "OpFDot4MixAcc32VALVE";
55495566
default: return "Unknown";
55505567
}
55515568
}

include/spirv/unified1/spirv.hpp11

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1393,6 +1393,10 @@ enum class Capability : unsigned {
13931393
CacheControlsINTEL = 6441,
13941394
RegisterLimitsINTEL = 6460,
13951395
BindlessImagesINTEL = 6528,
1396+
DotProductFloat16AccFloat32VALVE = 6912,
1397+
DotProductFloat16AccFloat16VALVE = 6913,
1398+
DotProductBFloat16AccVALVE = 6914,
1399+
DotProductFloat8AccFloat32VALVE = 6915,
13961400
Max = 0x7fffffff,
13971401
};
13981402

@@ -2624,6 +2628,9 @@ enum class Op : unsigned {
26242628
OpConvertHandleToImageINTEL = 6529,
26252629
OpConvertHandleToSamplerINTEL = 6530,
26262630
OpConvertHandleToSampledImageINTEL = 6531,
2631+
OpFDot2MixAcc32VALVE = 6916,
2632+
OpFDot2MixAcc16VALVE = 6917,
2633+
OpFDot4MixAcc32VALVE = 6918,
26272634
Max = 0x7fffffff,
26282635
};
26292636

@@ -3498,6 +3505,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
34983505
case Op::OpConvertHandleToImageINTEL: *hasResult = true; *hasResultType = true; break;
34993506
case Op::OpConvertHandleToSamplerINTEL: *hasResult = true; *hasResultType = true; break;
35003507
case Op::OpConvertHandleToSampledImageINTEL: *hasResult = true; *hasResultType = true; break;
3508+
case Op::OpFDot2MixAcc32VALVE: *hasResult = true; *hasResultType = true; break;
3509+
case Op::OpFDot2MixAcc16VALVE: *hasResult = true; *hasResultType = true; break;
3510+
case Op::OpFDot4MixAcc32VALVE: *hasResult = true; *hasResultType = true; break;
35013511
}
35023512
}
35033513
inline const char* SourceLanguageToString(SourceLanguage value) {
@@ -4489,6 +4499,10 @@ inline const char* CapabilityToString(Capability value) {
44894499
case Capability::CacheControlsINTEL: return "CacheControlsINTEL";
44904500
case Capability::RegisterLimitsINTEL: return "RegisterLimitsINTEL";
44914501
case Capability::BindlessImagesINTEL: return "BindlessImagesINTEL";
4502+
case Capability::DotProductFloat16AccFloat32VALVE: return "DotProductFloat16AccFloat32VALVE";
4503+
case Capability::DotProductFloat16AccFloat16VALVE: return "DotProductFloat16AccFloat16VALVE";
4504+
case Capability::DotProductBFloat16AccVALVE: return "DotProductBFloat16AccVALVE";
4505+
case Capability::DotProductFloat8AccFloat32VALVE: return "DotProductFloat8AccFloat32VALVE";
44924506
default: return "Unknown";
44934507
}
44944508
}
@@ -5546,6 +5560,9 @@ inline const char* OpToString(Op value) {
55465560
case Op::OpConvertHandleToImageINTEL: return "OpConvertHandleToImageINTEL";
55475561
case Op::OpConvertHandleToSamplerINTEL: return "OpConvertHandleToSamplerINTEL";
55485562
case Op::OpConvertHandleToSampledImageINTEL: return "OpConvertHandleToSampledImageINTEL";
5563+
case Op::OpFDot2MixAcc32VALVE: return "OpFDot2MixAcc32VALVE";
5564+
case Op::OpFDot2MixAcc16VALVE: return "OpFDot2MixAcc16VALVE";
5565+
case Op::OpFDot4MixAcc32VALVE: return "OpFDot4MixAcc32VALVE";
55495566
default: return "Unknown";
55505567
}
55515568
}

include/spirv/unified1/spirv.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1358,7 +1358,11 @@
13581358
"MaskedGatherScatterINTEL": 6427,
13591359
"CacheControlsINTEL": 6441,
13601360
"RegisterLimitsINTEL": 6460,
1361-
"BindlessImagesINTEL": 6528
1361+
"BindlessImagesINTEL": 6528,
1362+
"DotProductFloat16AccFloat32VALVE": 6912,
1363+
"DotProductFloat16AccFloat16VALVE": 6913,
1364+
"DotProductBFloat16AccVALVE": 6914,
1365+
"DotProductFloat8AccFloat32VALVE": 6915
13621366
}
13631367
},
13641368
{
@@ -2594,7 +2598,10 @@
25942598
"OpMaskedScatterINTEL": 6429,
25952599
"OpConvertHandleToImageINTEL": 6529,
25962600
"OpConvertHandleToSamplerINTEL": 6530,
2597-
"OpConvertHandleToSampledImageINTEL": 6531
2601+
"OpConvertHandleToSampledImageINTEL": 6531,
2602+
"OpFDot2MixAcc32VALVE": 6916,
2603+
"OpFDot2MixAcc16VALVE": 6917,
2604+
"OpFDot4MixAcc32VALVE": 6918
25982605
}
25992606
}
26002607
]

include/spirv/unified1/spirv.lua

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1384,6 +1384,10 @@ spv = {
13841384
CacheControlsINTEL = 6441,
13851385
RegisterLimitsINTEL = 6460,
13861386
BindlessImagesINTEL = 6528,
1387+
DotProductFloat16AccFloat32VALVE = 6912,
1388+
DotProductFloat16AccFloat16VALVE = 6913,
1389+
DotProductBFloat16AccVALVE = 6914,
1390+
DotProductFloat8AccFloat32VALVE = 6915,
13871391
Max = 0x7fffffff,
13881392
},
13891393

@@ -2615,6 +2619,9 @@ spv = {
26152619
OpConvertHandleToImageINTEL = 6529,
26162620
OpConvertHandleToSamplerINTEL = 6530,
26172621
OpConvertHandleToSampledImageINTEL = 6531,
2622+
OpFDot2MixAcc32VALVE = 6916,
2623+
OpFDot2MixAcc16VALVE = 6917,
2624+
OpFDot4MixAcc32VALVE = 6918,
26182625
Max = 0x7fffffff,
26192626
},
26202627

include/spirv/unified1/spirv.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1355,6 +1355,10 @@
13551355
'CacheControlsINTEL' : 6441,
13561356
'RegisterLimitsINTEL' : 6460,
13571357
'BindlessImagesINTEL' : 6528,
1358+
'DotProductFloat16AccFloat32VALVE' : 6912,
1359+
'DotProductFloat16AccFloat16VALVE' : 6913,
1360+
'DotProductBFloat16AccVALVE' : 6914,
1361+
'DotProductFloat8AccFloat32VALVE' : 6915,
13581362
},
13591363

13601364
'RayFlagsShift' : {
@@ -2558,6 +2562,9 @@
25582562
'OpConvertHandleToImageINTEL' : 6529,
25592563
'OpConvertHandleToSamplerINTEL' : 6530,
25602564
'OpConvertHandleToSampledImageINTEL' : 6531,
2565+
'OpFDot2MixAcc32VALVE' : 6916,
2566+
'OpFDot2MixAcc16VALVE' : 6917,
2567+
'OpFDot4MixAcc32VALVE' : 6918,
25612568
},
25622569

25632570
}

include/spirv/unified1/spv.d

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1429,6 +1429,10 @@ enum Capability : uint
14291429
CacheControlsINTEL = 6441,
14301430
RegisterLimitsINTEL = 6460,
14311431
BindlessImagesINTEL = 6528,
1432+
DotProductFloat16AccFloat32VALVE = 6912,
1433+
DotProductFloat16AccFloat16VALVE = 6913,
1434+
DotProductBFloat16AccVALVE = 6914,
1435+
DotProductFloat8AccFloat32VALVE = 6915,
14321436
Max = 0x7fffffff,
14331437
}
14341438

@@ -2696,6 +2700,9 @@ enum Op : uint
26962700
OpConvertHandleToImageINTEL = 6529,
26972701
OpConvertHandleToSamplerINTEL = 6530,
26982702
OpConvertHandleToSampledImageINTEL = 6531,
2703+
OpFDot2MixAcc32VALVE = 6916,
2704+
OpFDot2MixAcc16VALVE = 6917,
2705+
OpFDot4MixAcc32VALVE = 6918,
26992706
Max = 0x7fffffff,
27002707
}
27012708

0 commit comments

Comments
 (0)