[llvm] [SPIR-V] Add lowering of ptrtoaddr (PR #184577)
Dmitry Sidorov via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 4 06:47:01 PST 2026
================
@@ -0,0 +1,11 @@
+; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
+; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}
+
+; CHECK: OpConvertPtrToU
+
+define spir_kernel void @test_ptrtoaddr(ptr addrspace(1) %p, ptr addrspace(1) %res) {
+entry:
+ %addr = ptrtoaddr ptr addrspace(1) %p to i64
----------------
MrSidims wrote:
As of now:
```
llc -O0 -mtriple=spirv64-unknown-unknown ptrtoint.ll
cat ptrtoint.ll
declare spir_func void @foo(<2 x i64>)
define spir_kernel void @test_ptrtoaddr(<2 x ptr addrspace(1)> %p, <2 x ptr addrspace(1)> %res) {
entry:
%addr = ptrtoint <2 x ptr addrspace(1)> %p to <2 x i64>
call void @foo(<2 x i64> %addr)
ret void
}
```
results it
> SPIRVGlobalRegistry.cpp:321: llvm::SPIRVTypeInst llvm::SPIRVGlobalRegistry::getOpTypeVector(uint32_t, llvm::SPIRVTypeInst, llvm::MachineIRBuilder&): Assertion `(EleOpc == SPIRV::OpTypeInt || EleOpc == SPIRV::OpTypeFloat || EleOpc == SPIRV::OpTypeBool) && "Invalid vector element type"' failed.
Which seems fine for now. Agree, that it's better to support vector of pointers, but it goes outside of the scope of this PR.
https://github.com/llvm/llvm-project/pull/184577
More information about the llvm-commits
mailing list