[clang] [llvm] [SPIRV] Add support for the `SPV_EXT_long_vector` extension (PR #210279)

Mikael Holmen via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 27 06:58:29 PDT 2026


================
@@ -338,13 +336,36 @@ SPIRVGlobalRegistry::getOpTypeVector(uint32_t NumElems, SPIRVTypeInst ElemType,
 
   return createConstOrTypeAtFunctionEntry(
       MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
-        return MIRBuilder.buildInstr(SPIRV::OpTypeVector)
-            .addDef(createTypeVReg(MIRBuilder))
-            .addUse(getSPIRVTypeID(ElemType))
-            .addImm(NumElems);
+        unsigned Op =
+            IsLongVectorEXT ? SPIRV::OpTypeVectorIdEXT : SPIRV::OpTypeVector;
+        Register VTy = createTypeVReg(MIRBuilder);
+        Register Ty = getSPIRVTypeID(ElemType);
+        auto &MIB = MIRBuilder.buildInstr(Op).addDef(VTy).addUse(Ty);
----------------
mikaelholmen wrote:

I see crashes in 445 SPIRV tests with this patch if I compile with gcc and _FORTIFY_SOURCE.
Those crashes seem to go away if changing this line to
```
        auto MIB = MIRBuilder.buildInstr(Op).addDef(VTy).addUse(Ty);
```
instead.

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


More information about the llvm-commits mailing list