[llvm] 04865d4 - [M68k] Add Imm source for MOVE to CCR/SR (#207590)

via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 20 06:57:06 PDT 2026


Author: knickish
Date: 2026-09-20T08:57:01-05:00
New Revision: 04865d44edd515cd20ae7037f176e23d2b155544

URL: https://github.com/llvm/llvm-project/commit/04865d44edd515cd20ae7037f176e23d2b155544
DIFF: https://github.com/llvm/llvm-project/commit/04865d44edd515cd20ae7037f176e23d2b155544.diff

LOG: [M68k] Add Imm source for MOVE to CCR/SR (#207590)

closes #165077, just adds the imm addressing mode to MOVE to SR/CCR

Added: 
    

Modified: 
    llvm/lib/Target/M68k/M68kInstrData.td
    llvm/test/CodeGen/M68k/inline-asm.ll
    llvm/test/MC/M68k/Data/Classes/MxMoveCCR.s
    llvm/test/MC/M68k/Data/Classes/MxMoveSR.s

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/M68k/M68kInstrData.td b/llvm/lib/Target/M68k/M68kInstrData.td
index 293949235d2dd..5a294e1fb3cda 100644
--- a/llvm/lib/Target/M68k/M68kInstrData.td
+++ b/llvm/lib/Target/M68k/M68kInstrData.td
@@ -421,8 +421,8 @@ foreach AM = MxMoveSrcAMs in {
   def MOV8c # AM  : MxMoveToCCRPseudo<!cast<MxOpBundle>("MxOp8AddrMode_"#AM).Op>;
 } // foreach AM
 
-// Only data register is allowed.
 def MOV16cd : MxMoveToCCR<MxOp16AddrMode_d.Op, MxMoveSrcOpEnc_d>;
+def MOV16ci : MxMoveToCCR<MxOp16AddrMode_i.Op, MxEncAddrMode_i<"src", 16>>;
 
 /// Move from CCR
 /// --------------------------------------------------
@@ -460,7 +460,6 @@ foreach AM = MxMoveDstAMs in {
     : MxMoveFromCCRPseudo<!cast<MxOpBundle>("MxOp8AddrMode_"#AM).Op>;
 } // foreach AM
 
-// Only data register is allowed.
 def MOV16dc : MxMoveFromCCR_R;
 
 /// Move to SR
@@ -485,6 +484,7 @@ foreach AM = MxMoveSrcAMs in {
 } // foreach AM
 
 def MOV16sd : MxMoveToSR<MxOp16AddrMode_d.Op, MxMoveSrcOpEnc_d>;
+def MOV16si : MxMoveToSR<MxOp16AddrMode_i.Op, MxEncAddrMode_i<"src", 16>>;
 
 /// Move from SR
 /// --------------------------------------------------

diff  --git a/llvm/test/CodeGen/M68k/inline-asm.ll b/llvm/test/CodeGen/M68k/inline-asm.ll
index dda943920788d..dc57d1428508b 100644
--- a/llvm/test/CodeGen/M68k/inline-asm.ll
+++ b/llvm/test/CodeGen/M68k/inline-asm.ll
@@ -152,3 +152,19 @@ entry:
   ret void
 }
 
+define void @move_immediate_to_status_registers() {
+; CHECK-LABEL: move_immediate_to_status_registers:
+; CHECK:         .cfi_startproc
+; CHECK-NEXT:  ; %bb.0: ; %entry
+; CHECK-NEXT:    ;APP
+; CHECK-NEXT:    move.w #9984, %sr
+; CHECK-NEXT:    ;NO_APP
+; CHECK-NEXT:    ;APP
+; CHECK-NEXT:    move.w #1235, %ccr
+; CHECK-NEXT:    ;NO_APP
+; CHECK-NEXT:    rts
+entry:
+  call void asm sideeffect "move.w #0x2700,%sr", ""()
+  call void asm sideeffect "move.w #1235,%ccr", ""()
+  ret void
+}

diff  --git a/llvm/test/MC/M68k/Data/Classes/MxMoveCCR.s b/llvm/test/MC/M68k/Data/Classes/MxMoveCCR.s
index ffb602d401840..595027deed8de 100644
--- a/llvm/test/MC/M68k/Data/Classes/MxMoveCCR.s
+++ b/llvm/test/MC/M68k/Data/Classes/MxMoveCCR.s
@@ -4,6 +4,10 @@
 ; CHECK-SAME: encoding: [0x44,0xc1]
 move.w	%d1, %ccr
 
+; CHECK:      move.w  #1235, %ccr
+; CHECK-SAME: encoding: [0x44,0xfc,0x04,0xd3]
+move.w	#1235, %ccr
+
 ; CHECK:      move.w  %ccr, %d1
 ; CHECK-SAME: encoding: [0x42,0xc1]
 move.w	%ccr, %d1

diff  --git a/llvm/test/MC/M68k/Data/Classes/MxMoveSR.s b/llvm/test/MC/M68k/Data/Classes/MxMoveSR.s
index e999345f43fc3..3ca3599d776d4 100644
--- a/llvm/test/MC/M68k/Data/Classes/MxMoveSR.s
+++ b/llvm/test/MC/M68k/Data/Classes/MxMoveSR.s
@@ -4,6 +4,10 @@
 ; CHECK-SAME: encoding: [0x46,0xc1]
 move.w	%d1, %sr
 
+; CHECK:      move.w  #9984, %sr
+; CHECK-SAME: encoding: [0x46,0xfc,0x27,0x00]
+move.w	#0x2700, %sr
+
 ; CHECK:      move.w  %sr, %d1
 ; CHECK-SAME: encoding: [0x40,0xc1]
 move.w	%sr, %d1


        


More information about the llvm-commits mailing list