[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