mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-21 02:39:11 +00:00
tint: Support dot4I8Packed and dot4U8Packed in sem
This patch adds the support of dot4I8Packed and dot4U8Packed in semantics under the extension "chromium_experimental_dp4a". Bug: tint:1497 Test: tint_unittests Change-Id: I659172fcb8953ba13b49664c6c9ad75724ff5957 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/88962 Commit-Queue: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
4b6d3f4346
commit
6c9e475211
@@ -145,6 +145,16 @@ bool Builtin::HasSideEffects() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
ast::Enable::ExtensionKind Builtin::RequiredExtension() const {
|
||||
switch (type_) {
|
||||
case sem::BuiltinType::kDot4I8Packed:
|
||||
case sem::BuiltinType::kDot4U8Packed:
|
||||
return ast::Enable::ExtensionKind::kChromiumExperimentalDP4a;
|
||||
default:
|
||||
return ast::Enable::ExtensionKind::kNotAnExtension;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace tint::sem
|
||||
|
||||
//! @endcond
|
||||
|
||||
@@ -134,6 +134,10 @@ class Builtin final : public Castable<Builtin, CallTarget> {
|
||||
/// one of its inputs)
|
||||
bool HasSideEffects() const;
|
||||
|
||||
/// @returns the required extension of this builtin function. Returns
|
||||
/// ast::Enable::ExtensionKind::kNotAnExtension if no extension is required.
|
||||
ast::Enable::ExtensionKind RequiredExtension() const;
|
||||
|
||||
private:
|
||||
const BuiltinType type_;
|
||||
const PipelineStageSet supported_stages_;
|
||||
|
||||
@@ -56,6 +56,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
BuiltinData{"determinant", BuiltinType::kDeterminant},
|
||||
BuiltinData{"distance", BuiltinType::kDistance},
|
||||
BuiltinData{"dot", BuiltinType::kDot},
|
||||
BuiltinData{"dot4I8Packed", BuiltinType::kDot4I8Packed},
|
||||
BuiltinData{"dot4U8Packed", BuiltinType::kDot4U8Packed},
|
||||
BuiltinData{"dpdx", BuiltinType::kDpdx},
|
||||
BuiltinData{"dpdxCoarse", BuiltinType::kDpdxCoarse},
|
||||
BuiltinData{"dpdxFine", BuiltinType::kDpdxFine},
|
||||
|
||||
@@ -89,6 +89,12 @@ BuiltinType ParseBuiltinType(const std::string& name) {
|
||||
if (name == "dot") {
|
||||
return BuiltinType::kDot;
|
||||
}
|
||||
if (name == "dot4I8Packed") {
|
||||
return BuiltinType::kDot4I8Packed;
|
||||
}
|
||||
if (name == "dot4U8Packed") {
|
||||
return BuiltinType::kDot4U8Packed;
|
||||
}
|
||||
if (name == "dpdx") {
|
||||
return BuiltinType::kDpdx;
|
||||
}
|
||||
@@ -391,6 +397,10 @@ const char* str(BuiltinType i) {
|
||||
return "distance";
|
||||
case BuiltinType::kDot:
|
||||
return "dot";
|
||||
case BuiltinType::kDot4I8Packed:
|
||||
return "dot4I8Packed";
|
||||
case BuiltinType::kDot4U8Packed:
|
||||
return "dot4U8Packed";
|
||||
case BuiltinType::kDpdx:
|
||||
return "dpdx";
|
||||
case BuiltinType::kDpdxCoarse:
|
||||
|
||||
@@ -53,6 +53,8 @@ enum class BuiltinType {
|
||||
kDeterminant,
|
||||
kDistance,
|
||||
kDot,
|
||||
kDot4I8Packed,
|
||||
kDot4U8Packed,
|
||||
kDpdx,
|
||||
kDpdxCoarse,
|
||||
kDpdxFine,
|
||||
|
||||
Reference in New Issue
Block a user