mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-27 16:17:17 +00:00
[mips][mips64r6] b(ge|lt)zal are not available on MIPS32r6/MIPS64r6 and bal is a normal instruction
Summary: b(ge|lt)zal have been removed in MIPS32r6/MIPS64r6. However, bal (an alias for 'bgezal $zero, $offset') still remains with the same encoding it had prior to MIPS32r6/MIPS64r6. Updated the MipsNaCLELFStreamer, and MipsLongBranch to correctly handle the MIPS32r6/MIPS64r6 BAL instruction in addition to the existing BAL_BR pseudo. No changes were required to the CodeGen test that looks for BAL (test/CodeGen/Mips/longbranch.ll) since the new instruction has the same syntax. Depends on D4113 Reviewers: jkolek, zoran.jovanovic, vmedic Reviewed By: vmedic Differential Revision: http://reviews.llvm.org/D4114 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210898 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -64,6 +64,7 @@ private:
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
case Mips::JAL:
|
case Mips::JAL:
|
||||||
|
case Mips::BAL:
|
||||||
case Mips::BAL_BR:
|
case Mips::BAL_BR:
|
||||||
case Mips::BLTZAL:
|
case Mips::BLTZAL:
|
||||||
case Mips::BGEZAL:
|
case Mips::BGEZAL:
|
||||||
|
@@ -64,6 +64,7 @@ def OPCODE5_BC1EQZ : OPCODE5<0b01001>;
|
|||||||
def OPCODE5_BC1NEZ : OPCODE5<0b01101>;
|
def OPCODE5_BC1NEZ : OPCODE5<0b01101>;
|
||||||
def OPCODE5_BC2EQZ : OPCODE5<0b01001>;
|
def OPCODE5_BC2EQZ : OPCODE5<0b01001>;
|
||||||
def OPCODE5_BC2NEZ : OPCODE5<0b01101>;
|
def OPCODE5_BC2NEZ : OPCODE5<0b01101>;
|
||||||
|
def OPCODE5_BGEZAL : OPCODE5<0b10001>;
|
||||||
|
|
||||||
class OPCODE6<bits<6> Val> {
|
class OPCODE6<bits<6> Val> {
|
||||||
bits<6> Value = Val;
|
bits<6> Value = Val;
|
||||||
@@ -145,6 +146,17 @@ class DAUI_FM : AUI_FM {
|
|||||||
let Inst{31-26} = OPGROUP_DAUI.Value;
|
let Inst{31-26} = OPGROUP_DAUI.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class BAL_FM : MipsR6Inst {
|
||||||
|
bits<16> offset;
|
||||||
|
|
||||||
|
bits<32> Inst;
|
||||||
|
|
||||||
|
let Inst{31-26} = OPGROUP_REGIMM.Value;
|
||||||
|
let Inst{25-21} = 0b00000;
|
||||||
|
let Inst{20-16} = OPCODE5_BGEZAL.Value;
|
||||||
|
let Inst{15-0} = offset;
|
||||||
|
}
|
||||||
|
|
||||||
class COP1_2R_FM<bits<6> funct, FIELD_FMT Format> : MipsR6Inst {
|
class COP1_2R_FM<bits<6> funct, FIELD_FMT Format> : MipsR6Inst {
|
||||||
bits<5> fs;
|
bits<5> fs;
|
||||||
bits<5> fd;
|
bits<5> fd;
|
||||||
|
@@ -26,8 +26,6 @@ include "Mips32r6InstrFormats.td"
|
|||||||
// Reencoded: sdc2
|
// Reencoded: sdc2
|
||||||
// Reencoded: swc2
|
// Reencoded: swc2
|
||||||
// Removed: bc1any2, bc1any4
|
// Removed: bc1any2, bc1any4
|
||||||
// Removed: bgezal
|
|
||||||
// Removed: bltzal
|
|
||||||
// Rencoded: [ls][wd]c2
|
// Rencoded: [ls][wd]c2
|
||||||
|
|
||||||
def brtarget21 : Operand<OtherVT> {
|
def brtarget21 : Operand<OtherVT> {
|
||||||
@@ -66,6 +64,7 @@ class ALUIPC_ENC : PCREL16_FM<OPCODE5_ALUIPC>;
|
|||||||
class AUI_ENC : AUI_FM;
|
class AUI_ENC : AUI_FM;
|
||||||
class AUIPC_ENC : PCREL16_FM<OPCODE5_AUIPC>;
|
class AUIPC_ENC : PCREL16_FM<OPCODE5_AUIPC>;
|
||||||
|
|
||||||
|
class BAL_ENC : BAL_FM;
|
||||||
class BALC_ENC : BRANCH_OFF26_FM<0b111010>;
|
class BALC_ENC : BRANCH_OFF26_FM<0b111010>;
|
||||||
class BC_ENC : BRANCH_OFF26_FM<0b110010>;
|
class BC_ENC : BRANCH_OFF26_FM<0b110010>;
|
||||||
class BEQC_ENC : CMP_BRANCH_2R_OFF16_FM<OPGROUP_ADDI>,
|
class BEQC_ENC : CMP_BRANCH_2R_OFF16_FM<OPGROUP_ADDI>,
|
||||||
@@ -309,6 +308,12 @@ class CMP_CBR_RT_Z_DESC_BASE<string instr_asm, DAGOperand opnd,
|
|||||||
list<Register> Defs = [AT];
|
list<Register> Defs = [AT];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class BAL_DESC : BC_DESC_BASE<"bal", brtarget> {
|
||||||
|
bit isCall = 1;
|
||||||
|
bit hasDelaySlot = 1;
|
||||||
|
list<Register> Defs = [RA];
|
||||||
|
}
|
||||||
|
|
||||||
class BALC_DESC : BC_DESC_BASE<"balc", brtarget26> {
|
class BALC_DESC : BC_DESC_BASE<"balc", brtarget26> {
|
||||||
bit isCall = 1;
|
bit isCall = 1;
|
||||||
list<Register> Defs = [RA];
|
list<Register> Defs = [RA];
|
||||||
@@ -535,6 +540,7 @@ def ALIGN : ALIGN_ENC, ALIGN_DESC, ISA_MIPS32R6;
|
|||||||
def ALUIPC : ALUIPC_ENC, ALUIPC_DESC, ISA_MIPS32R6;
|
def ALUIPC : ALUIPC_ENC, ALUIPC_DESC, ISA_MIPS32R6;
|
||||||
def AUI : AUI_ENC, AUI_DESC, ISA_MIPS32R6;
|
def AUI : AUI_ENC, AUI_DESC, ISA_MIPS32R6;
|
||||||
def AUIPC : AUIPC_ENC, AUIPC_DESC, ISA_MIPS32R6;
|
def AUIPC : AUIPC_ENC, AUIPC_DESC, ISA_MIPS32R6;
|
||||||
|
def BAL : BAL_ENC, BAL_DESC, ISA_MIPS32R6;
|
||||||
def BALC : BALC_ENC, BALC_DESC, ISA_MIPS32R6;
|
def BALC : BALC_ENC, BALC_DESC, ISA_MIPS32R6;
|
||||||
def BC1EQZ : BC1EQZ_ENC, BC1EQZ_DESC, ISA_MIPS32R6;
|
def BC1EQZ : BC1EQZ_ENC, BC1EQZ_DESC, ISA_MIPS32R6;
|
||||||
def BC1NEZ : BC1NEZ_ENC, BC1NEZ_DESC, ISA_MIPS32R6;
|
def BC1NEZ : BC1NEZ_ENC, BC1NEZ_DESC, ISA_MIPS32R6;
|
||||||
|
@@ -1188,8 +1188,10 @@ let AdditionalPredicates = [NotInMicroMips] in {
|
|||||||
|
|
||||||
// FIXME: JALX really requires either MIPS16 or microMIPS in addition to MIPS32.
|
// FIXME: JALX really requires either MIPS16 or microMIPS in addition to MIPS32.
|
||||||
def JALX : JumpLink<"jalx", calltarget>, FJ<0x1D>, ISA_MIPS32_NOT_32R6_64R6;
|
def JALX : JumpLink<"jalx", calltarget>, FJ<0x1D>, ISA_MIPS32_NOT_32R6_64R6;
|
||||||
def BGEZAL : MMRel, BGEZAL_FT<"bgezal", brtarget, GPR32Opnd>, BGEZAL_FM<0x11>;
|
def BGEZAL : MMRel, BGEZAL_FT<"bgezal", brtarget, GPR32Opnd>, BGEZAL_FM<0x11>,
|
||||||
def BLTZAL : MMRel, BGEZAL_FT<"bltzal", brtarget, GPR32Opnd>, BGEZAL_FM<0x10>;
|
ISA_MIPS1_NOT_32R6_64R6;
|
||||||
|
def BLTZAL : MMRel, BGEZAL_FT<"bltzal", brtarget, GPR32Opnd>, BGEZAL_FM<0x10>,
|
||||||
|
ISA_MIPS1_NOT_32R6_64R6;
|
||||||
def BAL_BR : BAL_BR_Pseudo<BGEZAL>;
|
def BAL_BR : BAL_BR_Pseudo<BGEZAL>;
|
||||||
def TAILCALL : TailCall<J>;
|
def TAILCALL : TailCall<J>;
|
||||||
def TAILCALL_R : TailCallReg<GPR32Opnd, JR>;
|
def TAILCALL_R : TailCallReg<GPR32Opnd, JR>;
|
||||||
@@ -1366,7 +1368,8 @@ def : MipsInstAlias<"move $dst, $src",
|
|||||||
GPR_32 {
|
GPR_32 {
|
||||||
let AdditionalPredicates = [NotInMicroMips];
|
let AdditionalPredicates = [NotInMicroMips];
|
||||||
}
|
}
|
||||||
def : MipsInstAlias<"bal $offset", (BGEZAL ZERO, brtarget:$offset), 0>;
|
def : MipsInstAlias<"bal $offset", (BGEZAL ZERO, brtarget:$offset), 0>,
|
||||||
|
ISA_MIPS1_NOT_32R6_64R6;
|
||||||
def : MipsInstAlias<"addu $rs, $rt, $imm",
|
def : MipsInstAlias<"addu $rs, $rt, $imm",
|
||||||
(ADDiu GPR32Opnd:$rs, GPR32Opnd:$rt, simm16:$imm), 0>;
|
(ADDiu GPR32Opnd:$rs, GPR32Opnd:$rt, simm16:$imm), 0>;
|
||||||
def : MipsInstAlias<"add $rs, $rt, $imm",
|
def : MipsInstAlias<"add $rs, $rt, $imm",
|
||||||
|
@@ -266,6 +266,13 @@ void MipsLongBranch::expandToLongBranch(MBBInfo &I) {
|
|||||||
LongBrMBB->addSuccessor(BalTgtMBB);
|
LongBrMBB->addSuccessor(BalTgtMBB);
|
||||||
BalTgtMBB->addSuccessor(TgtMBB);
|
BalTgtMBB->addSuccessor(TgtMBB);
|
||||||
|
|
||||||
|
// We must select between the MIPS32r6/MIPS64r6 BAL (which is a normal
|
||||||
|
// instruction) and the pre-MIPS32r6/MIPS64r6 definition (which is an
|
||||||
|
// pseudo-instruction wrapping BGEZAL).
|
||||||
|
|
||||||
|
const MipsSubtarget &Subtarget = TM.getSubtarget<MipsSubtarget>();
|
||||||
|
unsigned BalOp = Subtarget.hasMips32r6() ? Mips::BAL : Mips::BAL_BR;
|
||||||
|
|
||||||
if (ABI != MipsSubtarget::N64) {
|
if (ABI != MipsSubtarget::N64) {
|
||||||
// $longbr:
|
// $longbr:
|
||||||
// addiu $sp, $sp, -8
|
// addiu $sp, $sp, -8
|
||||||
@@ -307,9 +314,11 @@ void MipsLongBranch::expandToLongBranch(MBBInfo &I) {
|
|||||||
BuildMI(*LongBrMBB, Pos, DL, TII->get(Mips::LONG_BRANCH_LUi), Mips::AT)
|
BuildMI(*LongBrMBB, Pos, DL, TII->get(Mips::LONG_BRANCH_LUi), Mips::AT)
|
||||||
.addMBB(TgtMBB).addMBB(BalTgtMBB);
|
.addMBB(TgtMBB).addMBB(BalTgtMBB);
|
||||||
MIBundleBuilder(*LongBrMBB, Pos)
|
MIBundleBuilder(*LongBrMBB, Pos)
|
||||||
.append(BuildMI(*MF, DL, TII->get(Mips::BAL_BR)).addMBB(BalTgtMBB))
|
.append(BuildMI(*MF, DL, TII->get(BalOp)).addMBB(BalTgtMBB))
|
||||||
.append(BuildMI(*MF, DL, TII->get(Mips::LONG_BRANCH_ADDiu), Mips::AT)
|
.append(BuildMI(*MF, DL, TII->get(Mips::LONG_BRANCH_ADDiu), Mips::AT)
|
||||||
.addReg(Mips::AT).addMBB(TgtMBB).addMBB(BalTgtMBB));
|
.addReg(Mips::AT)
|
||||||
|
.addMBB(TgtMBB)
|
||||||
|
.addMBB(BalTgtMBB));
|
||||||
|
|
||||||
Pos = BalTgtMBB->begin();
|
Pos = BalTgtMBB->begin();
|
||||||
|
|
||||||
@@ -379,11 +388,12 @@ void MipsLongBranch::expandToLongBranch(MBBInfo &I) {
|
|||||||
.addReg(Mips::AT_64).addImm(16);
|
.addReg(Mips::AT_64).addImm(16);
|
||||||
|
|
||||||
MIBundleBuilder(*LongBrMBB, Pos)
|
MIBundleBuilder(*LongBrMBB, Pos)
|
||||||
.append(BuildMI(*MF, DL, TII->get(Mips::BAL_BR)).addMBB(BalTgtMBB))
|
.append(BuildMI(*MF, DL, TII->get(BalOp)).addMBB(BalTgtMBB))
|
||||||
.append(BuildMI(*MF, DL, TII->get(Mips::LONG_BRANCH_DADDiu),
|
.append(
|
||||||
Mips::AT_64).addReg(Mips::AT_64)
|
BuildMI(*MF, DL, TII->get(Mips::LONG_BRANCH_DADDiu), Mips::AT_64)
|
||||||
.addMBB(TgtMBB, MipsII::MO_ABS_LO)
|
.addReg(Mips::AT_64)
|
||||||
.addMBB(BalTgtMBB));
|
.addMBB(TgtMBB, MipsII::MO_ABS_LO)
|
||||||
|
.addMBB(BalTgtMBB));
|
||||||
|
|
||||||
Pos = BalTgtMBB->begin();
|
Pos = BalTgtMBB->begin();
|
||||||
|
|
||||||
|
@@ -15,6 +15,10 @@
|
|||||||
bc1f 4 # CHECK: bc1f 4 # encoding: [0x45,0x00,0x00,0x01]
|
bc1f 4 # CHECK: bc1f 4 # encoding: [0x45,0x00,0x00,0x01]
|
||||||
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
|
bal 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $0, 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $6, 21100 # CHECK: bgezal $6, 21100 # encoding: [0x04,0xd1,0x14,0x9b]
|
||||||
|
bltzal $6, 21100 # CHECK: bltzal $6, 21100 # encoding: [0x04,0xd0,0x14,0x9b]
|
||||||
c.ngl.d $f29,$f29
|
c.ngl.d $f29,$f29
|
||||||
c.ngle.d $f0,$f16
|
c.ngle.d $f0,$f16
|
||||||
c.sf.d $f30,$f0
|
c.sf.d $f30,$f0
|
||||||
|
@@ -15,6 +15,10 @@
|
|||||||
bc1f 4 # CHECK: bc1f 4 # encoding: [0x45,0x00,0x00,0x01]
|
bc1f 4 # CHECK: bc1f 4 # encoding: [0x45,0x00,0x00,0x01]
|
||||||
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
|
bal 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $0, 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $6, 21100 # CHECK: bgezal $6, 21100 # encoding: [0x04,0xd1,0x14,0x9b]
|
||||||
|
bltzal $6, 21100 # CHECK: bltzal $6, 21100 # encoding: [0x04,0xd0,0x14,0x9b]
|
||||||
c.ngl.d $f29,$f29
|
c.ngl.d $f29,$f29
|
||||||
c.ngle.d $f0,$f16
|
c.ngle.d $f0,$f16
|
||||||
c.sf.d $f30,$f0
|
c.sf.d $f30,$f0
|
||||||
|
@@ -15,6 +15,10 @@
|
|||||||
bc1f 4 # CHECK: bc1f 4 # encoding: [0x45,0x00,0x00,0x01]
|
bc1f 4 # CHECK: bc1f 4 # encoding: [0x45,0x00,0x00,0x01]
|
||||||
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
|
bal 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $0, 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $6, 21100 # CHECK: bgezal $6, 21100 # encoding: [0x04,0xd1,0x14,0x9b]
|
||||||
|
bltzal $6, 21100 # CHECK: bltzal $6, 21100 # encoding: [0x04,0xd0,0x14,0x9b]
|
||||||
c.ngl.d $f29,$f29
|
c.ngl.d $f29,$f29
|
||||||
c.ngle.d $f0,$f16
|
c.ngle.d $f0,$f16
|
||||||
c.sf.d $f30,$f0
|
c.sf.d $f30,$f0
|
||||||
|
@@ -17,6 +17,10 @@
|
|||||||
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
bc1t $fcc1, 4 # CHECK: bc1t $fcc1, 4 # encoding: [0x45,0x05,0x00,0x01]
|
bc1t $fcc1, 4 # CHECK: bc1t $fcc1, 4 # encoding: [0x45,0x05,0x00,0x01]
|
||||||
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
|
bal 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $0, 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $6, 21100 # CHECK: bgezal $6, 21100 # encoding: [0x04,0xd1,0x14,0x9b]
|
||||||
|
bltzal $6, 21100 # CHECK: bltzal $6, 21100 # encoding: [0x04,0xd0,0x14,0x9b]
|
||||||
c.ngl.d $f29,$f29
|
c.ngl.d $f29,$f29
|
||||||
c.ngle.d $f0,$f16
|
c.ngle.d $f0,$f16
|
||||||
c.sf.d $f30,$f0
|
c.sf.d $f30,$f0
|
||||||
|
@@ -17,6 +17,10 @@
|
|||||||
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
bc1t $fcc1, 4 # CHECK: bc1t $fcc1, 4 # encoding: [0x45,0x05,0x00,0x01]
|
bc1t $fcc1, 4 # CHECK: bc1t $fcc1, 4 # encoding: [0x45,0x05,0x00,0x01]
|
||||||
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
|
bal 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $0, 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $6, 21100 # CHECK: bgezal $6, 21100 # encoding: [0x04,0xd1,0x14,0x9b]
|
||||||
|
bltzal $6, 21100 # CHECK: bltzal $6, 21100 # encoding: [0x04,0xd0,0x14,0x9b]
|
||||||
c.ngl.d $f29,$f29
|
c.ngl.d $f29,$f29
|
||||||
c.ngle.d $f0,$f16
|
c.ngle.d $f0,$f16
|
||||||
c.sf.d $f30,$f0
|
c.sf.d $f30,$f0
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
aluipc $3, 56 # CHECK: aluipc $3, 56 # encoding: [0xec,0x7f,0x00,0x38]
|
aluipc $3, 56 # CHECK: aluipc $3, 56 # encoding: [0xec,0x7f,0x00,0x38]
|
||||||
aui $3,$2,-23 # CHECK: aui $3, $2, -23 # encoding: [0x3c,0x62,0xff,0xe9]
|
aui $3,$2,-23 # CHECK: aui $3, $2, -23 # encoding: [0x3c,0x62,0xff,0xe9]
|
||||||
auipc $3, -1 # CHECK: auipc $3, -1 # encoding: [0xec,0x7e,0xff,0xff]
|
auipc $3, -1 # CHECK: auipc $3, -1 # encoding: [0xec,0x7e,0xff,0xff]
|
||||||
|
bal 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
balc 14572256 # CHECK: balc 14572256 # encoding: [0xe8,0x37,0x96,0xb8]
|
balc 14572256 # CHECK: balc 14572256 # encoding: [0xe8,0x37,0x96,0xb8]
|
||||||
bc 14572256 # CHECK: bc 14572256 # encoding: [0xc8,0x37,0x96,0xb8]
|
bc 14572256 # CHECK: bc 14572256 # encoding: [0xc8,0x37,0x96,0xb8]
|
||||||
bc1eqz $f0,4 # CHECK: bc1eqz $f0, 4 # encoding: [0x45,0x20,0x00,0x01]
|
bc1eqz $f0,4 # CHECK: bc1eqz $f0, 4 # encoding: [0x45,0x20,0x00,0x01]
|
||||||
|
@@ -17,6 +17,10 @@
|
|||||||
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
bc1t $fcc1, 4 # CHECK: bc1t $fcc1, 4 # encoding: [0x45,0x05,0x00,0x01]
|
bc1t $fcc1, 4 # CHECK: bc1t $fcc1, 4 # encoding: [0x45,0x05,0x00,0x01]
|
||||||
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
|
bal 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $0, 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $6, 21100 # CHECK: bgezal $6, 21100 # encoding: [0x04,0xd1,0x14,0x9b]
|
||||||
|
bltzal $6, 21100 # CHECK: bltzal $6, 21100 # encoding: [0x04,0xd0,0x14,0x9b]
|
||||||
c.ngl.d $f29,$f29
|
c.ngl.d $f29,$f29
|
||||||
c.ngle.d $f0,$f16
|
c.ngle.d $f0,$f16
|
||||||
c.sf.d $f30,$f0
|
c.sf.d $f30,$f0
|
||||||
|
@@ -17,6 +17,10 @@
|
|||||||
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
bc1t $fcc1, 4 # CHECK: bc1t $fcc1, 4 # encoding: [0x45,0x05,0x00,0x01]
|
bc1t $fcc1, 4 # CHECK: bc1t $fcc1, 4 # encoding: [0x45,0x05,0x00,0x01]
|
||||||
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
|
bal 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $0, 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $6, 21100 # CHECK: bgezal $6, 21100 # encoding: [0x04,0xd1,0x14,0x9b]
|
||||||
|
bltzal $6, 21100 # CHECK: bltzal $6, 21100 # encoding: [0x04,0xd0,0x14,0x9b]
|
||||||
c.ngl.d $f29,$f29
|
c.ngl.d $f29,$f29
|
||||||
c.ngle.d $f0,$f16
|
c.ngle.d $f0,$f16
|
||||||
c.sf.d $f30,$f0
|
c.sf.d $f30,$f0
|
||||||
|
@@ -17,6 +17,10 @@
|
|||||||
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
bc1t $fcc1, 4 # CHECK: bc1t $fcc1, 4 # encoding: [0x45,0x05,0x00,0x01]
|
bc1t $fcc1, 4 # CHECK: bc1t $fcc1, 4 # encoding: [0x45,0x05,0x00,0x01]
|
||||||
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
|
bal 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $0, 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $6, 21100 # CHECK: bgezal $6, 21100 # encoding: [0x04,0xd1,0x14,0x9b]
|
||||||
|
bltzal $6, 21100 # CHECK: bltzal $6, 21100 # encoding: [0x04,0xd0,0x14,0x9b]
|
||||||
c.ngl.d $f29,$f29
|
c.ngl.d $f29,$f29
|
||||||
c.ngle.d $f0,$f16
|
c.ngle.d $f0,$f16
|
||||||
c.sf.d $f30,$f0
|
c.sf.d $f30,$f0
|
||||||
|
@@ -17,6 +17,10 @@
|
|||||||
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t $fcc0, 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
bc1t $fcc1, 4 # CHECK: bc1t $fcc1, 4 # encoding: [0x45,0x05,0x00,0x01]
|
bc1t $fcc1, 4 # CHECK: bc1t $fcc1, 4 # encoding: [0x45,0x05,0x00,0x01]
|
||||||
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
bc1t 4 # CHECK: bc1t 4 # encoding: [0x45,0x01,0x00,0x01]
|
||||||
|
bal 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $0, 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
|
bgezal $6, 21100 # CHECK: bgezal $6, 21100 # encoding: [0x04,0xd1,0x14,0x9b]
|
||||||
|
bltzal $6, 21100 # CHECK: bltzal $6, 21100 # encoding: [0x04,0xd0,0x14,0x9b]
|
||||||
c.ngl.d $f29,$f29
|
c.ngl.d $f29,$f29
|
||||||
c.ngle.d $f0,$f16
|
c.ngle.d $f0,$f16
|
||||||
c.sf.d $f30,$f0
|
c.sf.d $f30,$f0
|
||||||
|
@@ -6,6 +6,9 @@
|
|||||||
|
|
||||||
.set noat
|
.set noat
|
||||||
addi $13,$9,26322 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
addi $13,$9,26322 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bgezal $0, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bgezal $6, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bltzal $6, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
c.ngl.d $f29,$f29 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
c.ngl.d $f29,$f29 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
c.ngle.d $f0,$f16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
c.ngle.d $f0,$f16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
c.sf.d $f30,$f0 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
c.sf.d $f30,$f0 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
@@ -6,6 +6,9 @@
|
|||||||
|
|
||||||
.set noat
|
.set noat
|
||||||
addi $13,$9,26322 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
addi $13,$9,26322 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bgezal $0, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bgezal $6, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bltzal $6, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
mfhi $s3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
mfhi $s3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
mfhi $sp # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
mfhi $sp # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
mflo $s1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
mflo $s1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
@@ -6,6 +6,9 @@
|
|||||||
|
|
||||||
.set noat
|
.set noat
|
||||||
addi $13,$9,26322 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
addi $13,$9,26322 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bgezal $0, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bgezal $6, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bltzal $6, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
dmult $s7,$9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
dmult $s7,$9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
dmultu $a1,$a2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
dmultu $a1,$a2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
mfhi $s3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
mfhi $s3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
@@ -5,6 +5,9 @@
|
|||||||
# RUN: FileCheck %s < %t1
|
# RUN: FileCheck %s < %t1
|
||||||
|
|
||||||
.set noat
|
.set noat
|
||||||
|
bgezal $0, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bgezal $6, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bltzal $6, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
ldxc1 $f8,$s7($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
ldxc1 $f8,$s7($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
lwxc1 $f12,$s1($s8) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
lwxc1 $f12,$s1($s8) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
sdxc1 $f11,$10($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
sdxc1 $f11,$10($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
@@ -5,5 +5,8 @@
|
|||||||
# RUN: FileCheck %s < %t1
|
# RUN: FileCheck %s < %t1
|
||||||
|
|
||||||
.set noat
|
.set noat
|
||||||
|
bgezal $0, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bgezal $6, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bltzal $6, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
luxc1 $f19,$s6($s5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
luxc1 $f19,$s6($s5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
suxc1 $f12,$k1($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
suxc1 $f12,$k1($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
@@ -6,6 +6,9 @@
|
|||||||
|
|
||||||
.set noat
|
.set noat
|
||||||
addi $13,$9,26322 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
addi $13,$9,26322 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bgezal $0, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bgezal $6, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
bltzal $6, 21100 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
daddi $sp,$s4,-27705 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
daddi $sp,$s4,-27705 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
daddi $sp,-27705 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
daddi $sp,-27705 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
dadd $sp,$s4,-27705 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
dadd $sp,$s4,-27705 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
aluipc $3, 56 # CHECK: aluipc $3, 56 # encoding: [0xec,0x7f,0x00,0x38]
|
aluipc $3, 56 # CHECK: aluipc $3, 56 # encoding: [0xec,0x7f,0x00,0x38]
|
||||||
aui $3,$2,-23 # CHECK: aui $3, $2, -23 # encoding: [0x3c,0x62,0xff,0xe9]
|
aui $3,$2,-23 # CHECK: aui $3, $2, -23 # encoding: [0x3c,0x62,0xff,0xe9]
|
||||||
auipc $3, -1 # CHECK: auipc $3, -1 # encoding: [0xec,0x7e,0xff,0xff]
|
auipc $3, -1 # CHECK: auipc $3, -1 # encoding: [0xec,0x7e,0xff,0xff]
|
||||||
|
bal 21100 # CHECK: bal 21100 # encoding: [0x04,0x11,0x14,0x9b]
|
||||||
balc 14572256 # CHECK: balc 14572256 # encoding: [0xe8,0x37,0x96,0xb8]
|
balc 14572256 # CHECK: balc 14572256 # encoding: [0xe8,0x37,0x96,0xb8]
|
||||||
bc 14572256 # CHECK: bc 14572256 # encoding: [0xc8,0x37,0x96,0xb8]
|
bc 14572256 # CHECK: bc 14572256 # encoding: [0xc8,0x37,0x96,0xb8]
|
||||||
bc1eqz $f0,4 # CHECK: bc1eqz $f0, 4 # encoding: [0x45,0x20,0x00,0x01]
|
bc1eqz $f0,4 # CHECK: bc1eqz $f0, 4 # encoding: [0x45,0x20,0x00,0x01]
|
||||||
|
Reference in New Issue
Block a user