mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-17 18:31:04 +00:00
Thumb2 parsing and encoding for AND (register).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139021 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8040e06434
commit
5c1ac55542
@ -532,7 +532,27 @@ multiclass T2I_bin_irs<bits<4> opcod, string opc,
|
||||
multiclass T2I_bin_w_irs<bits<4> opcod, string opc,
|
||||
InstrItinClass iii, InstrItinClass iir, InstrItinClass iis,
|
||||
PatFrag opnode, string baseOpc, bit Commutable = 0> :
|
||||
T2I_bin_irs<opcod, opc, iii, iir, iis, opnode, baseOpc, Commutable, ".w">;
|
||||
T2I_bin_irs<opcod, opc, iii, iir, iis, opnode, baseOpc, Commutable, ".w"> {
|
||||
// Assembler aliases w/o the ".w" suffix.
|
||||
def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $Rm"),
|
||||
(!cast<Instruction>(!strconcat(baseOpc, "rr")) rGPR:$Rd, rGPR:$Rn,
|
||||
rGPR:$Rm, pred:$p,
|
||||
cc_out:$s)>;
|
||||
def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $shift"),
|
||||
(!cast<Instruction>(!strconcat(baseOpc, "rs")) rGPR:$Rd, rGPR:$Rn,
|
||||
t2_so_reg:$shift, pred:$p,
|
||||
cc_out:$s)>;
|
||||
|
||||
// and with the optional destination operand, too.
|
||||
def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rdn, $Rm"),
|
||||
(!cast<Instruction>(!strconcat(baseOpc, "rr")) rGPR:$Rdn, rGPR:$Rdn,
|
||||
rGPR:$Rm, pred:$p,
|
||||
cc_out:$s)>;
|
||||
def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rdn, $shift"),
|
||||
(!cast<Instruction>(!strconcat(baseOpc, "rs")) rGPR:$Rdn, rGPR:$Rdn,
|
||||
t2_so_reg:$shift, pred:$p,
|
||||
cc_out:$s)>;
|
||||
}
|
||||
|
||||
/// T2I_rbin_is - Same as T2I_bin_irs except the order of operands are
|
||||
/// reversed. The 'rr' form is only defined for the disassembler; for codegen
|
||||
|
@ -120,6 +120,23 @@ _func:
|
||||
@ CHECK: and r1, r1, #255 @ encoding: [0x01,0xf0,0xff,0x01]
|
||||
@ CHECK: and r1, r1, #255 @ encoding: [0x01,0xf0,0xff,0x01]
|
||||
|
||||
|
||||
@------------------------------------------------------------------------------
|
||||
@ AND (register)
|
||||
@------------------------------------------------------------------------------
|
||||
and r4, r9, r8
|
||||
and r1, r4, r8, asr #3
|
||||
ands r2, r1, r7, lsl #1
|
||||
ands.w r4, r5, r2, lsr #20
|
||||
and.w r9, r12, r1, ror #17
|
||||
|
||||
@ CHECK: and.w r4, r9, r8 @ encoding: [0x09,0xea,0x08,0x04]
|
||||
@ CHECK: and.w r1, r4, r8, asr #3 @ encoding: [0x04,0xea,0xe8,0x01]
|
||||
@ CHECK: ands.w r2, r1, r7, lsl #1 @ encoding: [0x11,0xea,0x47,0x02]
|
||||
@ CHECK: ands.w r4, r5, r2, lsr #20 @ encoding: [0x15,0xea,0x12,0x54]
|
||||
@ CHECK: and.w r9, r12, r1, ror #17 @ encoding: [0x0c,0xea,0x71,0x49]
|
||||
|
||||
|
||||
@------------------------------------------------------------------------------
|
||||
@ B
|
||||
@------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user