This is a minimal test case that demonstrates the issue: ```llvm ; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv-vulkan1.3-unknown %s -o - | FileCheck %s @bar = external addrspace(2) externally_initialized global i32 define void @foo() { %load = load <4 x i8>, ptr addrspace(2) @bar, align 4 ret void } ``` Loads (and probably stores) that are effectively the same size as the target variable require intermediate bitcasts.