[llvm] [SPIR-V] Fold same type conversions into a copy (PR #223365)

Dmitry Sidorov via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 15 05:49:49 PDT 2026


================
@@ -3291,6 +3291,20 @@ static bool generateAsyncCopy(const SPIRV::IncomingCall *Call,
   }
 }
 
+// Same type S/U/FConvert are invalid. OpSatConvert* are valid and must stay.
+static bool foldNoOpConvert(unsigned Opcode, const SPIRV::IncomingCall *Call,
+                            MachineIRBuilder &MIRBuilder,
+                            SPIRVGlobalRegistry *GR) {
+  if (Opcode != SPIRV::OpSConvert && Opcode != SPIRV::OpUConvert &&
+      Opcode != SPIRV::OpFConvert)
+    return false;
+  if (Call->Arguments.size() != 1 ||
+      GR->getSPIRVTypeForVReg(Call->Arguments[0]) != Call->ReturnType)
+    return false;
+  MIRBuilder.buildCopy(Call->ReturnRegister, Call->Arguments[0]);
----------------
MrSidims wrote:

Does it copy debug info and other metadata?

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


More information about the llvm-commits mailing list