[llvm] 4abe3f1 - [SPIRV] Fix bug in emitting GLSL ext inst names
Natalie Chouinard via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 19 06:45:16 PDT 2023
Author: Natalie Chouinard
Date: 2023-09-19T13:44:13Z
New Revision: 4abe3f18e2f021eee24b2b2c5cc366226fee0c60
URL: https://github.com/llvm/llvm-project/commit/4abe3f18e2f021eee24b2b2c5cc366226fee0c60
DIFF: https://github.com/llvm/llvm-project/commit/4abe3f18e2f021eee24b2b2c5cc366226fee0c60.diff
LOG: [SPIRV] Fix bug in emitting GLSL ext inst names
Lookup extended instruction numbers in the given instruction set so that
correct names are now emitted for GLSL.std.450 instructions as well as
OpenCL.std.
Add a single test to verify correct abs intrinsic names are emitted when
targetting logical SPIR-V.
Depends on D156424
Differential Revision: https://reviews.llvm.org/D159227
Added:
llvm/test/CodeGen/SPIRV/hlsl-intrinsics/abs.ll
Modified:
llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVBaseInfo.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVBaseInfo.cpp b/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVBaseInfo.cpp
index 020cfa6ee20fa90..1af7b7a5d7845f2 100644
--- a/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVBaseInfo.cpp
+++ b/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVBaseInfo.cpp
@@ -217,8 +217,7 @@ getExtInstSetFromString(std::string SetName) {
std::string getExtInstName(SPIRV::InstructionSet::InstructionSet Set,
uint32_t InstructionNumber) {
const SPIRV::ExtendedBuiltin *Lookup =
- SPIRV::lookupExtendedBuiltinBySetAndNumber(
- SPIRV::InstructionSet::OpenCL_std, InstructionNumber);
+ SPIRV::lookupExtendedBuiltinBySetAndNumber(Set, InstructionNumber);
if (!Lookup)
return "UNKNOWN_EXT_INST";
diff --git a/llvm/test/CodeGen/SPIRV/hlsl-intrinsics/abs.ll b/llvm/test/CodeGen/SPIRV/hlsl-intrinsics/abs.ll
new file mode 100644
index 000000000000000..7031129de21ac6b
--- /dev/null
+++ b/llvm/test/CodeGen/SPIRV/hlsl-intrinsics/abs.ll
@@ -0,0 +1,27 @@
+; RUN: llc -O0 -mtriple=spirv-unknown-linux %s -o - | FileCheck %s
+
+; CHECK: OpExtInstImport "GLSL.std.450"
+
+define void @main() #1 {
+entry:
+ %i = alloca i32, align 4
+ %absi = alloca i32, align 4
+ %f = alloca float, align 4
+ %absf = alloca float, align 4
+ %0 = load i32, ptr %i, align 4
+
+; CHECK: %[[#]] = OpExtInst %[[#]] %[[#]] SAbs %[[#]]
+ %elt.abs = call i32 @llvm.abs.i32(i32 %0, i1 false)
+
+ store i32 %elt.abs, ptr %absi, align 4
+ %1 = load float, ptr %f, align 4
+
+; CHECK: %[[#]] = OpExtInst %[[#]] %[[#]] FAbs %[[#]]
+ %elt.abs1 = call float @llvm.fabs.f32(float %1)
+
+ store float %elt.abs1, ptr %absf, align 4
+ ret void
+}
+
+declare i32 @llvm.abs.i32(i32, i1 immarg) #2
+declare float @llvm.fabs.f32(float) #2
More information about the llvm-commits
mailing list