[llvm] [SPIR-V] Add NonSemantic.AuxData emission (-spirv-preserve-auxdata) and preserve available_externally linkage (PR #200002)
Arseniy Obolenskiy via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 1 05:23:58 PDT 2026
================
@@ -0,0 +1,50 @@
+; -spirv-preserve-auxdata: emit NonSemantic.AuxData for attrs/metadata.
+
+; RUN: llc -O0 -mtriple=spirv64-unknown-unknown \
+; RUN: --spirv-ext=+SPV_KHR_non_semantic_info -spirv-preserve-auxdata \
+; RUN: %s -o - | FileCheck %s
+
+; Off by default: only the Linkage record fires (for the AE function).
+; RUN: llc -O0 -mtriple=spirv64-unknown-unknown \
+; RUN: --spirv-ext=+SPV_KHR_non_semantic_info %s -o - \
+; RUN: | FileCheck %s --check-prefix=OFF
+
+; OFF-NOT: OpString "my-attr"
+; OFF-NOT: OpString "nounwind"
+; OFF-NOT: OpString "some.md"
+; OFF-NOT: OpString "spv.was-available-externally"
+
+; CHECK-DAG: %[[#auxset:]] = OpExtInstImport "NonSemantic.AuxData"
+; CHECK-DAG: %[[#fname:]] = OpString "fn"
+; CHECK-DAG: %[[#akind:]] = OpString "my-attr"
+; CHECK-DAG: %[[#aval:]] = OpString "val"
+; CHECK-DAG: %[[#nounwind:]] = OpString "nounwind"
+; CHECK-DAG: %[[#gname:]] = OpString "gv"
+; CHECK-DAG: %[[#mdname:]] = OpString "some.md"
+; CHECK-DAG: %[[#mdval:]] = OpString "hello"
+; CHECK-DAG: %[[#void:]] = OpTypeVoid
+; CHECK-DAG: %[[#i32:]] = OpTypeInt 32 0
+
+; Internal marker must not leak as a string.
+; CHECK-NOT: OpString "spv.was-available-externally"
+; @ae has no payload, so no name OpString.
+; CHECK-NOT: OpString "ae"
+
+; Records emit in module order; Linkage's 2nd operand is the shared AE const.
+; CHECK-DAG: %{{[0-9]+}} = OpExtInst %[[#void]] %[[#auxset]] {{.+}} %[[#fname]] %[[#akind]] %[[#aval]]
----------------
aobolensk wrote:
Done and preserved for new tests as well
https://github.com/llvm/llvm-project/pull/200002
More information about the llvm-commits
mailing list