[llvm] [X86][GISel] Fix crash on bitcasting i16 <-> half with gisel enabled. (PR #168456)

via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 19 05:27:13 PST 2025


================
@@ -312,6 +312,52 @@ bool X86InstructionSelector::selectCopy(MachineInstr &I,
       }
     }
 
+    const int RegBankSize = 16;
+
+    // Special case GPR16 -> XMM
+    if (SrcSize == RegBankSize && SrcRegBank.getID() == X86::GPRRegBankID &&
+        (DstRegBank.getID() == X86::VECRRegBankID)) {
+
+      const DebugLoc &DL = I.getDebugLoc();
+
+      // Zero extend GPR16 -> GPR32
+      Register ExtReg = MRI.createVirtualRegister(&X86::GR32RegClass);
+      BuildMI(*I.getParent(), I, DL, TII.get(X86::MOVZX32rr16), ExtReg)
----------------
GrumpyPigSkin wrote:

I have updated it to an aext 

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


More information about the llvm-commits mailing list