[llvm] [SPIR-V] Fix crash in SPIRVEmitIntrinsics for llvm.assume with operand bundles (PR #185840)
Juan Manuel Martinez CaamaƱo via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 11 06:28:40 PDT 2026
================
@@ -3,18 +3,32 @@
; RUN: llc -mtriple=spirv32-unknown-unknown < %s | FileCheck --check-prefixes=NOEXT,CHECK %s
; RUN: llc -mtriple=spirv64-unknown-unknown < %s | FileCheck --check-prefixes=NOEXT,CHECK %s
-; EXT: OpCapability ExpectAssumeKHR
-; EXT-NEXT: OpExtension "SPV_KHR_expect_assume"
+; EXT-DAG: OpCapability ExpectAssumeKHR
+; EXT-DAG: OpExtension "SPV_KHR_expect_assume"
; NOEXT-NOT: OpCapability ExpectAssumeKHR
; NOEXT-NOT: OpExtension "SPV_KHR_expect_assume"
declare void @llvm.assume(i1)
-; CHECK-DAG: %8 = OpIEqual %3 %5 %6
-; EXT: OpAssumeTrueKHR %8
-; NOEXT-NOT: OpAssumeTrueKHR %8
+; CHECK: %[[#X:]] = OpFunctionParameter
+; CHECK: %[[#Y:]] = OpFunctionParameter
+; CHECK: %[[#CMP:]] = OpIEqual %[[#]] %[[#X]] %[[#Y]]
+; EXT: OpAssumeTrueKHR %[[#CMP]]
+; NOEXT-NOT: OpAssumeTrueKHR
define i1 @assumeeq(i32 %x, i32 %y) {
%cmp = icmp eq i32 %x, %y
call void @llvm.assume(i1 %cmp)
ret i1 %cmp
}
+
+; CHECK: %[[#]] = OpFunction
+; CHECK: %[[#]] = OpFunctionParameter
+; CHECK: %[[#]] = OpLabel
+; EXT: OpAssumeTrueKHR %[[#]]
+; NOEXT-NOT: OpAssumeTrueKHR
+; CHECK: OpReturn
+; CHECK: OpFunctionEnd
+define void @assume_with_operand_bundles(ptr %p) {
+ call void @llvm.assume(i1 true) [ "align"(ptr %p, i64 64), "nonnull"(ptr %p) ]
----------------
jmmartinez wrote:
Is the operand bundle info lowered somehow or does it get lost? A comment to clarify what's happening (and maybe filing an issue) would be enough for me.
https://github.com/llvm/llvm-project/pull/185840
More information about the llvm-commits
mailing list