[llvm] [SPIR-V] Clarify builtin default value handling; NFC (PR #139691)
via llvm-commits
llvm-commits at lists.llvm.org
Tue May 13 02:00:02 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-spir-v
Author: Sven van Haastregt (svenvh)
<details>
<summary>Changes</summary>
- Use a bool in `generateGetQueryInst` and rename the variable to better convey its purpose.
- Replace mentions of 0 by `DefaultValue` in comments.
- Fix typos.
---
Full diff: https://github.com/llvm/llvm-project/pull/139691.diff
1 Files Affected:
- (modified) llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp (+13-13)
``````````diff
diff --git a/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp b/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
index c516be0297e66..c272f41193efa 100644
--- a/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
@@ -1439,15 +1439,15 @@ static bool generateKernelClockInst(const SPIRV::IncomingCall *Call,
return true;
}
-// These queries ask for a single size_t result for a given dimension index, e.g
-// size_t get_global_id(uint dimindex). In SPIR-V, the builtins corresonding to
-// these values are all vec3 types, so we need to extract the correct index or
-// return defaultVal (0 or 1 depending on the query). We also handle extending
-// or tuncating in case size_t does not match the expected result type's
-// bitwidth.
+// These queries ask for a single size_t result for a given dimension index,
+// e.g. size_t get_global_id(uint dimindex). In SPIR-V, the builtins
+// corresponding to these values are all vec3 types, so we need to extract the
+// correct index or return DefaultValue (0 or 1 depending on the query). We also
+// handle extending or truncating in case size_t does not match the expected
+// result type's bitwidth.
//
// For a constant index >= 3 we generate:
-// %res = OpConstant %SizeT 0
+// %res = OpConstant %SizeT DefaultValue
//
// For other indices we generate:
// %g = OpVariable %ptr_V3_SizeT Input
@@ -1461,7 +1461,7 @@ static bool generateKernelClockInst(const SPIRV::IncomingCall *Call,
// If the index is dynamic, we generate:
// %tmp = OpVectorExtractDynamic %SizeT %loadedVec %idx
// %cmp = OpULessThan %bool %idx %const_3
-// %res = OpSelect %SizeT %cmp %tmp %const_0
+// %res = OpSelect %SizeT %cmp %tmp %const_<DefaultValue>
//
// If the bitwidth of %res does not match the expected return type, we add an
// extend or truncate.
@@ -1840,11 +1840,11 @@ static bool generateGetQueryInst(const SPIRV::IncomingCall *Call,
// Lookup the builtin record.
SPIRV::BuiltIn::BuiltIn Value =
SPIRV::lookupGetBuiltin(Call->Builtin->Name, Call->Builtin->Set)->Value;
- uint64_t IsDefault = (Value == SPIRV::BuiltIn::GlobalSize ||
- Value == SPIRV::BuiltIn::NumWorkgroups ||
- Value == SPIRV::BuiltIn::WorkgroupSize ||
- Value == SPIRV::BuiltIn::EnqueuedWorkgroupSize);
- return genWorkgroupQuery(Call, MIRBuilder, GR, Value, IsDefault ? 1 : 0);
+ const bool IsDefaultOne = (Value == SPIRV::BuiltIn::GlobalSize ||
+ Value == SPIRV::BuiltIn::NumWorkgroups ||
+ Value == SPIRV::BuiltIn::WorkgroupSize ||
+ Value == SPIRV::BuiltIn::EnqueuedWorkgroupSize);
+ return genWorkgroupQuery(Call, MIRBuilder, GR, Value, IsDefaultOne ? 1 : 0);
}
static bool generateImageSizeQueryInst(const SPIRV::IncomingCall *Call,
``````````
</details>
https://github.com/llvm/llvm-project/pull/139691
More information about the llvm-commits
mailing list