Skip to content

Commit 8d8502a

Browse files
authored
[mlir][spirv] Add op decoration NoContraction (#88578)
1 parent 5b36bf5 commit 8d8502a

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ LogicalResult spirv::Deserializer::processDecoration(ArrayRef<uint32_t> words) {
310310
case spirv::Decoration::RelaxedPrecision:
311311
case spirv::Decoration::Restrict:
312312
case spirv::Decoration::RestrictPointer:
313+
case spirv::Decoration::NoContraction:
313314
if (words.size() != 2) {
314315
return emitError(unknownLoc, "OpDecoration with ")
315316
<< decorationName << "needs a single target <id>";

mlir/lib/Target/SPIRV/Serialization/Serializer.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ LogicalResult Serializer::processDecorationAttr(Location loc, uint32_t resultID,
276276
case spirv::Decoration::RelaxedPrecision:
277277
case spirv::Decoration::Restrict:
278278
case spirv::Decoration::RestrictPointer:
279+
case spirv::Decoration::NoContraction:
279280
// For unit attributes and decoration attributes, the args list
280281
// has no values so we do nothing.
281282
if (isa<UnitAttr, DecorationAttr>(attr))

mlir/test/Target/SPIRV/decorations.mlir

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,13 @@ spirv.func @fadd_decorations(%arg: f32) -> f32 "None" {
8787
spirv.ReturnValue %0 : f32
8888
}
8989
}
90+
91+
// -----
92+
93+
spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Kernel], []> {
94+
spirv.func @fmul_decorations(%arg: f32) -> f32 "None" {
95+
// CHECK: spirv.FMul %{{.*}}, %{{.*}} {no_contraction}
96+
%0 = spirv.FMul %arg, %arg {no_contraction} : f32
97+
spirv.ReturnValue %0 : f32
98+
}
99+
}

0 commit comments

Comments
 (0)