[llvm] [SPIRV] Preserve implicit bitcast (PR #151041)

Nathan Gauër via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 30 05:51:13 PDT 2025


================
@@ -0,0 +1,25 @@
+; RUN: llc -O0 -verify-machineinstrs -mtriple=spirv-unknown-vulkan %s -o - | FileCheck %s
+; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-vulkan %s -o - -filetype=obj | spirv-val %}
+
+ at .str = private unnamed_addr constant [4 x i8] c"In3\00", align 1
+ at .str.2 = private unnamed_addr constant [5 x i8] c"Out3\00", align 1
+
+; Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(readwrite, inaccessiblemem: none)
+define void @main() local_unnamed_addr #0 {
+  ; CHECK: %[[#INT32:]] = OpTypeInt 32 0
+  ; CHECK: %[[#INT4:]] = OpTypeVector %[[#INT32]] 4
+  ; CHECK: %[[#FLOAT:]] = OpTypeFloat 32
+  ; CHECK: %[[#FLOAT4:]] = OpTypeVector %[[#FLOAT]] 4
+  ; CHECK: %[[#BUFFER_LOAD:]] = OpLoad %[[#FLOAT4]] %{{[0-9]+}} Aligned 16
+  ; CHECK: %[[#CAST_LOAD:]] = OpBitcast %[[#INT4]] %[[#BUFFER_LOAD]]
+  ; CHECK: %[[#VEC_SHUFFLE:]] = OpVectorShuffle %[[#INT4]] %[[#CAST_LOAD]] %[[#CAST_LOAD]] 0 1 2 3
----------------
Keenuts wrote:

Should be OK, but can you add another test to do both type & size conversion? (int4 -> float2 for ex)

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


More information about the llvm-commits mailing list