[llvm] [M68k] Add Imm source for MOVE to CCR/SR (PR #207590)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 5 08:22:33 PDT 2026
https://github.com/knickish updated https://github.com/llvm/llvm-project/pull/207590
>From 6f65861cfa751cd328ec1660c20bbf47064572d7 Mon Sep 17 00:00:00 2001
From: kirk <knickish at gmail.com>
Date: Sun, 5 Jul 2026 15:09:38 +0000
Subject: [PATCH] [M68k] Add Imm source for MOVE to CCR/SR
---
llvm/lib/Target/M68k/M68kInstrData.td | 5 ++++-
llvm/test/CodeGen/M68k/inline-asm.ll | 16 ++++++++++++++++
llvm/test/MC/M68k/Data/Classes/MxMoveCCR.s | 4 ++++
llvm/test/MC/M68k/Data/Classes/MxMoveSR.s | 4 ++++
4 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/llvm/lib/Target/M68k/M68kInstrData.td b/llvm/lib/Target/M68k/M68kInstrData.td
index fd654be09dc97..95d5600ec9d1f 100644
--- a/llvm/lib/Target/M68k/M68kInstrData.td
+++ b/llvm/lib/Target/M68k/M68kInstrData.td
@@ -415,8 +415,9 @@ foreach AM = MxMoveSrcAMs in {
def MOV8c # AM : MxMoveToCCRPseudo<!cast<MxOpBundle>("MxOp8AddrMode_"#AM).Op>;
} // foreach AM
-// Only data register is allowed.
+// Only data register or immediate is allowed.
def MOV16cd : MxMoveToCCR<MxOp16AddrMode_d.Op, MxMoveSrcOpEnc_d>;
+def MOV16ci : MxMoveToCCR<MxOp16AddrMode_i.Op, MxEncAddrMode_i<"src", 16>>;
/// Move from CCR
/// --------------------------------------------------
@@ -482,7 +483,9 @@ foreach AM = MxMoveSrcAMs in {
!cast<MxEncMemOp>("MxMoveSrcOpEnc_"#AM)>;
} // foreach AM
+// Only data register or immediate is allowed.
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