[llvm] [SPIR-V] Scalarize vector of pointers for ptrtoint/inttoptr (PR #184817)

Dmitry Sidorov via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 5 09:59:38 PST 2026


================
@@ -0,0 +1,27 @@
+; RUN: llc -verify-machineinstrs -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 %}
+
+declare spir_func void @foo(<2 x i64>)
+
+; CHECK-DAG: %[[#I64:]] = OpTypeInt 64 0
+; CHECK-DAG: %[[#V2I64:]] = OpTypeVector %[[#I64]] 2
+; CHECK-DAG: OpName %[[#FUNC:]] "test_scalar_ptrtoint_to_vector"
+
+; CHECK: %[[#FUNC]] = OpFunction
+; CHECK: OpConvertPtrToU %[[#I64]]
+; CHECK: OpConvertPtrToU %[[#I64]]
+; CHECK: OpCompositeInsert %[[#V2I64]]
+; CHECK: OpCompositeInsert %[[#V2I64]]
+; CHECK: OpFunctionEnd
+
+define spir_kernel void @test_scalar_ptrtoint_to_vector(ptr addrspace(1) %p0, ptr addrspace(1) %p1) {
+entry:
+  ; Convert each pointer to integer separately
+  %addr0 = ptrtoint ptr addrspace(1) %p0 to i64
+  %addr1 = ptrtoint ptr addrspace(1) %p1 to i64
+  ; Combine into a vector
+  %vec0 = insertelement <2 x i64> poison, i64 %addr0, i32 0
+  %vec = insertelement <2 x i64> %vec0, i64 %addr1, i32 1
----------------
MrSidims wrote:

I believe that this test doesn't check scalarization of vector of pointers as there are none exposed in the test.

https://github.com/llvm/llvm-project/pull/184817


More information about the llvm-commits mailing list