[llvm] [Xtensa] Fix S32C1I instruction encoding and copyPhysReg. (PR #165174)

Andrei Safronov via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 30 10:33:55 PDT 2025


================
@@ -114,14 +114,28 @@ void XtensaInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
                                   const DebugLoc &DL, Register DestReg,
                                   Register SrcReg, bool KillSrc,
                                   bool RenamableDest, bool RenamableSrc) const {
-  // The MOV instruction is not present in core ISA,
-  // so use OR instruction.
-  if (Xtensa::ARRegClass.contains(DestReg, SrcReg))
+  unsigned Opcode;
+
+  // when we are copying a phys reg we want the bits for fp
+  if (Xtensa::ARRegClass.contains(DestReg, SrcReg)) {
     BuildMI(MBB, MBBI, DL, get(Xtensa::OR), DestReg)
         .addReg(SrcReg, getKillRegState(KillSrc))
         .addReg(SrcReg, getKillRegState(KillSrc));
+    return;
+  } else if (STI.hasSingleFloat() && Xtensa::FPRRegClass.contains(SrcReg) &&
----------------
andreisfr wrote:

Thank you very much for your comments. Fixed.
I added tests.

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


More information about the llvm-commits mailing list