diff options
| author | Mingming Liu <mingmingl@google.com> | 2025-09-10 15:25:31 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-10 15:25:31 -0700 |
| commit | 1417dafa1db9cb1b2b09438aa9f53ea5ab6e36e2 (patch) | |
| tree | 57f4b1f313c8cf74eed8819870f39c36ea263c68 /llvm/lib/Target/M68k | |
| parent | 898b813bc8a6d0276bf0f4769f5f2f64b34e632d (diff) | |
| parent | b8cefcb601ddaa18482555c4ff363c01a270c2fe (diff) | |
Merge branch 'main' into users/mingmingl-llvm/samplefdo-profile-formatusers/mingmingl-llvm/samplefdo-profile-format
Diffstat (limited to 'llvm/lib/Target/M68k')
| -rw-r--r-- | llvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp | 12 | ||||
| -rw-r--r-- | llvm/lib/Target/M68k/M68kInstrAtomics.td | 11 | ||||
| -rw-r--r-- | llvm/lib/Target/M68k/M68kInstrInfo.cpp | 2 |
3 files changed, 20 insertions, 5 deletions
diff --git a/llvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp b/llvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp index d3ad65390143..4992f1abe5a0 100644 --- a/llvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp +++ b/llvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp @@ -107,6 +107,18 @@ static DecodeStatus DecodeFPCSCRegisterClass(MCInst &Inst, uint64_t RegNo, } #define DecodeFPICRegisterClass DecodeFPCSCRegisterClass +static DecodeStatus DecodeCCRCRegisterClass(MCInst &Inst, + const MCDisassembler *Decoder) { + Inst.addOperand(MCOperand::createReg(M68k::CCR)); + return DecodeStatus::Success; +} + +static DecodeStatus DecodeSRCRegisterClass(MCInst &Inst, + const MCDisassembler *Decoder) { + Inst.addOperand(MCOperand::createReg(M68k::SR)); + return DecodeStatus::Success; +} + static DecodeStatus DecodeImm32(MCInst &Inst, uint64_t Imm, uint64_t Address, const void *Decoder) { Inst.addOperand(MCOperand::createImm(M68k::swapWord<uint32_t>(Imm))); diff --git a/llvm/lib/Target/M68k/M68kInstrAtomics.td b/llvm/lib/Target/M68k/M68kInstrAtomics.td index 867afbefe68f..b2b64ca85322 100644 --- a/llvm/lib/Target/M68k/M68kInstrAtomics.td +++ b/llvm/lib/Target/M68k/M68kInstrAtomics.td @@ -67,7 +67,8 @@ class MxCASARIDOp<bits<2> size_encoding, MxType type> "cas."#type.Prefix#" $dc, $du, $mem"> { let Inst = (ascend (descend 0b00001, size_encoding, 0b011, MxEncAddrMode_p<"mem">.EA), - (descend 0b0000000, (operand "$du", 3), 0b000, (operand "$dc", 3)) + (descend 0b0000000, (operand "$du", 3), 0b000, (operand "$dc", 3)), + MxEncAddrMode_p<"mem">.Supplement ); let Constraints = "$out = $dc"; let mayLoad = 1; @@ -84,7 +85,8 @@ class MxCASARIIOp<bits<2> size_encoding, MxType type> "cas."#type.Prefix#" $dc, $du, $mem"> { let Inst = (ascend (descend 0b00001, size_encoding, 0b011, MxEncAddrMode_f<"mem">.EA), - (descend 0b0000000, (operand "$du", 3), 0b000, (operand "$dc", 3)) + (descend 0b0000000, (operand "$du", 3), 0b000, (operand "$dc", 3)), + MxEncAddrMode_f<"mem">.Supplement ); let Constraints = "$out = $dc"; let mayLoad = 1; @@ -100,8 +102,9 @@ class MxCASALOp<bits<2> size_encoding, MxType type> (ins type.ROp:$dc, type.ROp:$du, !cast<MxMemOp>("MxAL"#type.Size):$mem), "cas."#type.Prefix#" $dc, $du, $mem"> { let Inst = (ascend - (descend 0b00001, size_encoding, 0b011, MxEncAddrMode_abs<"mem">.EA), - (descend 0b0000000, (operand "$du", 3), 0b000, (operand "$dc", 3)) + (descend 0b00001, size_encoding, 0b011, MxEncAddrMode_abs<"mem", true>.EA), + (descend 0b0000000, (operand "$du", 3), 0b000, (operand "$dc", 3)), + MxEncAddrMode_abs<"mem", true>.Supplement ); let Constraints = "$out = $dc"; let mayLoad = 1; diff --git a/llvm/lib/Target/M68k/M68kInstrInfo.cpp b/llvm/lib/Target/M68k/M68kInstrInfo.cpp index 21e9319aaf0b..c6be190bd124 100644 --- a/llvm/lib/Target/M68k/M68kInstrInfo.cpp +++ b/llvm/lib/Target/M68k/M68kInstrInfo.cpp @@ -43,7 +43,7 @@ using namespace llvm; void M68kInstrInfo::anchor() {} M68kInstrInfo::M68kInstrInfo(const M68kSubtarget &STI) - : M68kGenInstrInfo(M68k::ADJCALLSTACKDOWN, M68k::ADJCALLSTACKUP, 0, + : M68kGenInstrInfo(STI, M68k::ADJCALLSTACKDOWN, M68k::ADJCALLSTACKUP, 0, M68k::RET), Subtarget(STI), RI(STI) {} |
