mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-13 09:33:50 +00:00
[mips][mips64r6] Sorted *_ENC, *_DESC classes and tests
Differential Revision: http://reviews.llvm.org/D3808 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209129 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
50d09f1212
commit
78886bede2
@ -88,53 +88,45 @@ class ALUIPC_ENC : PCREL16_FM<OPCODE5_ALUIPC>;
|
||||
class AUI_ENC : AUI_FM;
|
||||
class AUIPC_ENC : PCREL16_FM<OPCODE5_AUIPC>;
|
||||
|
||||
class BALC_ENC : BRANCH_OFF26_FM<0b111010>;
|
||||
class BC_ENC : BRANCH_OFF26_FM<0b110010>;
|
||||
class BEQC_ENC : CMP_BRANCH_OFF16_FM<0b001000>;
|
||||
class BALC_ENC : BRANCH_OFF26_FM<0b111010>;
|
||||
class BC_ENC : BRANCH_OFF26_FM<0b110010>;
|
||||
class BEQC_ENC : CMP_BRANCH_OFF16_FM<0b001000>;
|
||||
class BEQZALC_ENC : CMP_BRANCH_RT_OFF16_FM<0b001000>;
|
||||
class BNEC_ENC : CMP_BRANCH_OFF16_FM<0b011000>;
|
||||
class BNEC_ENC : CMP_BRANCH_OFF16_FM<0b011000>;
|
||||
class BNEZALC_ENC : CMP_BRANCH_RT_OFF16_FM<0b011000>;
|
||||
|
||||
class BLTZC_ENC : CMP_BRANCH_OFF16_FM<0b010111>;
|
||||
class BGEZC_ENC : CMP_BRANCH_OFF16_FM<0b010110>;
|
||||
class BLTZC_ENC : CMP_BRANCH_OFF16_FM<0b010111>;
|
||||
class BGEZC_ENC : CMP_BRANCH_OFF16_FM<0b010110>;
|
||||
class BGTZALC_ENC : CMP_BRANCH_RT_OFF16_FM<0b000111>;
|
||||
|
||||
class BLEZC_ENC : CMP_BRANCH_RT_OFF16_FM<0b010110>;
|
||||
class BLEZC_ENC : CMP_BRANCH_RT_OFF16_FM<0b010110>;
|
||||
class BLTZALC_ENC : CMP_BRANCH_OFF16_FM<0b000111>;
|
||||
class BGTZC_ENC : CMP_BRANCH_RT_OFF16_FM<0b010111>;
|
||||
class BGTZC_ENC : CMP_BRANCH_RT_OFF16_FM<0b010111>;
|
||||
|
||||
class BEQZC_ENC : CMP_BRANCH_OFF21_FM<0b110110>;
|
||||
class BEQZC_ENC : CMP_BRANCH_OFF21_FM<0b110110>;
|
||||
class BGEZALC_ENC : CMP_BRANCH_OFF16_FM<0b000110>;
|
||||
class BNEZC_ENC : CMP_BRANCH_OFF21_FM<0b111110>;
|
||||
|
||||
class JIALC_ENC : JMP_IDX_COMPACT_FM<0b111110>;
|
||||
class JIC_ENC : JMP_IDX_COMPACT_FM<0b110110>;
|
||||
class BNEZC_ENC : CMP_BRANCH_OFF21_FM<0b111110>;
|
||||
|
||||
class BITSWAP_ENC : SPECIAL3_2R_FM<OPCODE6_BITSWAP>;
|
||||
class BLEZALC_ENC : CMP_BRANCH_RT_OFF16_FM<0b000110>;
|
||||
|
||||
class CLASS_S_ENC : COP1_2R_FM<0b011011, FIELD_FMT_S>;
|
||||
class CLASS_D_ENC : COP1_2R_FM<0b011011, FIELD_FMT_D>;
|
||||
|
||||
class DIV_ENC : SPECIAL_3R_FM<0b00010, 0b011010>;
|
||||
class DIVU_ENC : SPECIAL_3R_FM<0b00010, 0b011011>;
|
||||
class MOD_ENC : SPECIAL_3R_FM<0b00011, 0b011010>;
|
||||
class MODU_ENC : SPECIAL_3R_FM<0b00011, 0b011011>;
|
||||
class MUH_ENC : SPECIAL_3R_FM<0b00011, 0b011000>;
|
||||
class MUHU_ENC : SPECIAL_3R_FM<0b00011, 0b011001>;
|
||||
class MUL_R6_ENC : SPECIAL_3R_FM<0b00010, 0b011000>;
|
||||
class MULU_ENC : SPECIAL_3R_FM<0b00010, 0b011001>;
|
||||
|
||||
class JIALC_ENC : JMP_IDX_COMPACT_FM<0b111110>;
|
||||
class JIC_ENC : JMP_IDX_COMPACT_FM<0b110110>;
|
||||
|
||||
class LWPC_ENC : PCREL19_FM<OPCODE2_LWPC>;
|
||||
class LWUPC_ENC : PCREL19_FM<OPCODE2_LWUPC>;
|
||||
|
||||
class MADDF_S_ENC : COP1_3R_FM<0b011000, FIELD_FMT_S>;
|
||||
class MADDF_D_ENC : COP1_3R_FM<0b011000, FIELD_FMT_D>;
|
||||
class MSUBF_S_ENC : COP1_3R_FM<0b011001, FIELD_FMT_S>;
|
||||
class MSUBF_D_ENC : COP1_3R_FM<0b011001, FIELD_FMT_D>;
|
||||
|
||||
class SEL_D_ENC : COP1_3R_FM<0b010000, FIELD_FMT_D>;
|
||||
class SEL_S_ENC : COP1_3R_FM<0b010000, FIELD_FMT_S>;
|
||||
|
||||
class SELEQZ_ENC : SPECIAL_3R_FM<0b00000, 0b110101>;
|
||||
class SELNEZ_ENC : SPECIAL_3R_FM<0b00000, 0b110111>;
|
||||
|
||||
class LWPC_ENC : PCREL19_FM<OPCODE2_LWPC>;
|
||||
class LWUPC_ENC : PCREL19_FM<OPCODE2_LWUPC>;
|
||||
|
||||
class MAX_S_ENC : COP1_3R_FM<0b011101, FIELD_FMT_S>;
|
||||
class MAX_D_ENC : COP1_3R_FM<0b011101, FIELD_FMT_D>;
|
||||
class MIN_S_ENC : COP1_3R_FM<0b011100, FIELD_FMT_S>;
|
||||
@ -145,6 +137,19 @@ class MAXA_D_ENC : COP1_3R_FM<0b011111, FIELD_FMT_D>;
|
||||
class MINA_S_ENC : COP1_3R_FM<0b011110, FIELD_FMT_S>;
|
||||
class MINA_D_ENC : COP1_3R_FM<0b011110, FIELD_FMT_D>;
|
||||
|
||||
class MOD_ENC : SPECIAL_3R_FM<0b00011, 0b011010>;
|
||||
class MODU_ENC : SPECIAL_3R_FM<0b00011, 0b011011>;
|
||||
class MUH_ENC : SPECIAL_3R_FM<0b00011, 0b011000>;
|
||||
class MUHU_ENC : SPECIAL_3R_FM<0b00011, 0b011001>;
|
||||
class MUL_R6_ENC : SPECIAL_3R_FM<0b00010, 0b011000>;
|
||||
class MULU_ENC : SPECIAL_3R_FM<0b00010, 0b011001>;
|
||||
|
||||
class SEL_D_ENC : COP1_3R_FM<0b010000, FIELD_FMT_D>;
|
||||
class SEL_S_ENC : COP1_3R_FM<0b010000, FIELD_FMT_S>;
|
||||
|
||||
class SELEQZ_ENC : SPECIAL_3R_FM<0b00000, 0b110101>;
|
||||
class SELNEZ_ENC : SPECIAL_3R_FM<0b00000, 0b110111>;
|
||||
|
||||
class SELEQZ_S_ENC : COP1_3R_FM<0b010100, FIELD_FMT_S>;
|
||||
class SELEQZ_D_ENC : COP1_3R_FM<0b010100, FIELD_FMT_D>;
|
||||
class SELNEZ_S_ENC : COP1_3R_FM<0b010111, FIELD_FMT_S>;
|
||||
@ -152,13 +157,13 @@ class SELNEZ_D_ENC : COP1_3R_FM<0b010111, FIELD_FMT_D>;
|
||||
|
||||
class RINT_S_ENC : COP1_2R_FM<0b011010, FIELD_FMT_S>;
|
||||
class RINT_D_ENC : COP1_2R_FM<0b011010, FIELD_FMT_D>;
|
||||
class CLASS_S_ENC : COP1_2R_FM<0b011011, FIELD_FMT_S>;
|
||||
class CLASS_D_ENC : COP1_2R_FM<0b011011, FIELD_FMT_D>;
|
||||
|
||||
class CMP_CONDN_DESC_BASE<string CondStr, string Typestr, RegisterOperand FGROpnd> {
|
||||
class CMP_CONDN_DESC_BASE<string CondStr, string Typestr,
|
||||
RegisterOperand FGROpnd> {
|
||||
dag OutOperandList = (outs FGROpnd:$fd);
|
||||
dag InOperandList = (ins FGROpnd:$fs, FGROpnd:$ft);
|
||||
string AsmString = !strconcat("cmp.", CondStr, ".", Typestr, "\t$fd, $fs, $ft");
|
||||
string AsmString = !strconcat("cmp.", CondStr, ".", Typestr,
|
||||
"\t$fd, $fs, $ft");
|
||||
list<dag> Pattern = [];
|
||||
}
|
||||
|
||||
@ -279,6 +284,13 @@ class BC_DESC_BASE<string instr_asm, DAGOperand opnd> : BRANCH_DESC_BASE {
|
||||
bit isBarrier = 1;
|
||||
}
|
||||
|
||||
class BALC_DESC : BC_DESC_BASE<"balc", brtarget26> {
|
||||
bit isCall = 1;
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BC_DESC : BC_DESC_BASE<"bc", brtarget26>;
|
||||
|
||||
class CMP_BC_DESC_BASE<string instr_asm, DAGOperand opnd,
|
||||
RegisterOperand GPROpnd> : BRANCH_DESC_BASE {
|
||||
dag InOperandList = (ins GPROpnd:$rs, GPROpnd:$rt, opnd:$offset);
|
||||
@ -287,13 +299,8 @@ class CMP_BC_DESC_BASE<string instr_asm, DAGOperand opnd,
|
||||
list<Register> Defs = [AT];
|
||||
}
|
||||
|
||||
class CMP_CBR_EQNE_Z_DESC_BASE<string instr_asm, DAGOperand opnd,
|
||||
RegisterOperand GPROpnd> : BRANCH_DESC_BASE {
|
||||
dag InOperandList = (ins GPROpnd:$rs, opnd:$offset);
|
||||
dag OutOperandList = (outs);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rs, $offset");
|
||||
list<Register> Defs = [AT];
|
||||
}
|
||||
class BEQC_DESC : CMP_BC_DESC_BASE<"beqc", brtarget, GPR32Opnd>;
|
||||
class BNEC_DESC : CMP_BC_DESC_BASE<"bnec", brtarget, GPR32Opnd>;
|
||||
|
||||
class CMP_CBR_RT_Z_DESC_BASE<string instr_asm, DAGOperand opnd,
|
||||
RegisterOperand GPROpnd> : BRANCH_DESC_BASE {
|
||||
@ -303,15 +310,6 @@ class CMP_CBR_RT_Z_DESC_BASE<string instr_asm, DAGOperand opnd,
|
||||
list<Register> Defs = [AT];
|
||||
}
|
||||
|
||||
class BALC_DESC : BC_DESC_BASE<"balc", brtarget26> {
|
||||
bit isCall = 1;
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class BC_DESC : BC_DESC_BASE<"bc", brtarget26>;
|
||||
class BEQC_DESC : CMP_BC_DESC_BASE<"beqc", brtarget, GPR32Opnd>;
|
||||
class BNEC_DESC : CMP_BC_DESC_BASE<"bnec", brtarget, GPR32Opnd>;
|
||||
|
||||
class BLTZC_DESC : CMP_CBR_RT_Z_DESC_BASE<"bltzc", brtarget, GPR32Opnd> {
|
||||
string Constraints = "$rs = $rt";
|
||||
}
|
||||
@ -323,50 +321,16 @@ class BGEZC_DESC : CMP_CBR_RT_Z_DESC_BASE<"bgezc", brtarget, GPR32Opnd> {
|
||||
class BLEZC_DESC : CMP_CBR_RT_Z_DESC_BASE<"blezc", brtarget, GPR32Opnd>;
|
||||
class BGTZC_DESC : CMP_CBR_RT_Z_DESC_BASE<"bgtzc", brtarget, GPR32Opnd>;
|
||||
|
||||
class BEQZC_DESC : CMP_CBR_EQNE_Z_DESC_BASE<"beqzc", brtarget21, GPR32Opnd>;
|
||||
class BNEZC_DESC : CMP_CBR_EQNE_Z_DESC_BASE<"bnezc", brtarget21, GPR32Opnd>;
|
||||
|
||||
class JMP_IDX_COMPACT_DESC_BASE<string opstr, DAGOperand opnd,
|
||||
RegisterOperand GPROpnd> {
|
||||
dag InOperandList = (ins GPROpnd:$rt, opnd:$offset);
|
||||
string AsmString = !strconcat(opstr, "\t$rt, $offset");
|
||||
list<dag> Pattern = [];
|
||||
bit isTerminator = 1;
|
||||
bit hasDelaySlot = 0;
|
||||
string DecoderMethod = "DecodeSimm16";
|
||||
}
|
||||
|
||||
class JIALC_DESC : JMP_IDX_COMPACT_DESC_BASE<"jialc", calloffset16,
|
||||
GPR32Opnd> {
|
||||
bit isCall = 1;
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class JIC_DESC : JMP_IDX_COMPACT_DESC_BASE<"jic", jmpoffset16, GPR32Opnd> {
|
||||
bit isBarrier = 1;
|
||||
class CMP_CBR_EQNE_Z_DESC_BASE<string instr_asm, DAGOperand opnd,
|
||||
RegisterOperand GPROpnd> : BRANCH_DESC_BASE {
|
||||
dag InOperandList = (ins GPROpnd:$rs, opnd:$offset);
|
||||
dag OutOperandList = (outs);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rs, $offset");
|
||||
list<Register> Defs = [AT];
|
||||
}
|
||||
|
||||
class BITSWAP_DESC_BASE<string instr_asm, RegisterOperand GPROpnd> {
|
||||
dag OutOperandList = (outs GPROpnd:$rd);
|
||||
dag InOperandList = (ins GPROpnd:$rt);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rd, $rt");
|
||||
list<dag> Pattern = [];
|
||||
}
|
||||
|
||||
class BITSWAP_DESC : BITSWAP_DESC_BASE<"bitswap", GPR32Opnd>;
|
||||
|
||||
class DIVMOD_DESC_BASE<string instr_asm, RegisterOperand GPROpnd> {
|
||||
dag OutOperandList = (outs GPROpnd:$rd);
|
||||
dag InOperandList = (ins GPROpnd:$rs, GPROpnd:$rt);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rd, $rs, $rt");
|
||||
list<dag> Pattern = [];
|
||||
}
|
||||
|
||||
class DIV_DESC : DIVMOD_DESC_BASE<"div", GPR32Opnd>;
|
||||
class DIVU_DESC : DIVMOD_DESC_BASE<"divu", GPR32Opnd>;
|
||||
class MOD_DESC : DIVMOD_DESC_BASE<"mod", GPR32Opnd>;
|
||||
class MODU_DESC : DIVMOD_DESC_BASE<"modu", GPR32Opnd>;
|
||||
class BEQZC_DESC : CMP_CBR_EQNE_Z_DESC_BASE<"beqzc", brtarget21, GPR32Opnd>;
|
||||
class BNEZC_DESC : CMP_CBR_EQNE_Z_DESC_BASE<"bnezc", brtarget21, GPR32Opnd>;
|
||||
|
||||
class BEQZALC_DESC : CMP_CBR_RT_Z_DESC_BASE<"beqzalc", brtarget, GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
@ -393,17 +357,60 @@ class BLTZALC_DESC : CMP_CBR_RT_Z_DESC_BASE<"bltzalc", brtarget, GPR32Opnd> {
|
||||
class BNEZALC_DESC : CMP_CBR_RT_Z_DESC_BASE<"bnezalc", brtarget, GPR32Opnd> {
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
class MUL_R6_DESC_BASE<string instr_asm, RegisterOperand GPROpnd> {
|
||||
|
||||
class BITSWAP_DESC_BASE<string instr_asm, RegisterOperand GPROpnd> {
|
||||
dag OutOperandList = (outs GPROpnd:$rd);
|
||||
dag InOperandList = (ins GPROpnd:$rt);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rd, $rt");
|
||||
list<dag> Pattern = [];
|
||||
}
|
||||
|
||||
class BITSWAP_DESC : BITSWAP_DESC_BASE<"bitswap", GPR32Opnd>;
|
||||
|
||||
class CLASS_RINT_DESC_BASE<string instr_asm, RegisterOperand FGROpnd> {
|
||||
dag OutOperandList = (outs FGROpnd:$fd);
|
||||
dag InOperandList = (ins FGROpnd:$fs);
|
||||
string AsmString = !strconcat(instr_asm, "\t$fd, $fs");
|
||||
list<dag> Pattern = [];
|
||||
}
|
||||
|
||||
class CLASS_S_DESC : CLASS_RINT_DESC_BASE<"class.s", FGR32Opnd>;
|
||||
class CLASS_D_DESC : CLASS_RINT_DESC_BASE<"class.d", FGR64Opnd>;
|
||||
class RINT_S_DESC : CLASS_RINT_DESC_BASE<"rint.s", FGR32Opnd>;
|
||||
class RINT_D_DESC : CLASS_RINT_DESC_BASE<"rint.d", FGR64Opnd>;
|
||||
|
||||
class DIVMOD_DESC_BASE<string instr_asm, RegisterOperand GPROpnd> {
|
||||
dag OutOperandList = (outs GPROpnd:$rd);
|
||||
dag InOperandList = (ins GPROpnd:$rs, GPROpnd:$rt);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rd, $rs, $rt");
|
||||
list<dag> Pattern = [];
|
||||
}
|
||||
|
||||
class MUH_DESC : MUL_R6_DESC_BASE<"muh", GPR32Opnd>;
|
||||
class MUHU_DESC : MUL_R6_DESC_BASE<"muhu", GPR32Opnd>;
|
||||
class MUL_R6_DESC : MUL_R6_DESC_BASE<"mul", GPR32Opnd>;
|
||||
class MULU_DESC : MUL_R6_DESC_BASE<"mulu", GPR32Opnd>;
|
||||
class DIV_DESC : DIVMOD_DESC_BASE<"div", GPR32Opnd>;
|
||||
class DIVU_DESC : DIVMOD_DESC_BASE<"divu", GPR32Opnd>;
|
||||
class MOD_DESC : DIVMOD_DESC_BASE<"mod", GPR32Opnd>;
|
||||
class MODU_DESC : DIVMOD_DESC_BASE<"modu", GPR32Opnd>;
|
||||
|
||||
class JMP_IDX_COMPACT_DESC_BASE<string opstr, DAGOperand opnd,
|
||||
RegisterOperand GPROpnd> {
|
||||
dag InOperandList = (ins GPROpnd:$rt, opnd:$offset);
|
||||
string AsmString = !strconcat(opstr, "\t$rt, $offset");
|
||||
list<dag> Pattern = [];
|
||||
bit isTerminator = 1;
|
||||
bit hasDelaySlot = 0;
|
||||
string DecoderMethod = "DecodeSimm16";
|
||||
}
|
||||
|
||||
class JIALC_DESC : JMP_IDX_COMPACT_DESC_BASE<"jialc", calloffset16,
|
||||
GPR32Opnd> {
|
||||
bit isCall = 1;
|
||||
list<Register> Defs = [RA];
|
||||
}
|
||||
|
||||
class JIC_DESC : JMP_IDX_COMPACT_DESC_BASE<"jic", jmpoffset16, GPR32Opnd> {
|
||||
bit isBarrier = 1;
|
||||
list<Register> Defs = [AT];
|
||||
}
|
||||
|
||||
class COP1_4R_DESC_BASE<string instr_asm, RegisterOperand FGROpnd> {
|
||||
dag OutOperandList = (outs FGROpnd:$fd);
|
||||
@ -413,19 +420,6 @@ class COP1_4R_DESC_BASE<string instr_asm, RegisterOperand FGROpnd> {
|
||||
string Constraints = "$fd_in = $fd";
|
||||
}
|
||||
|
||||
class SEL_D_DESC : COP1_4R_DESC_BASE<"sel.d", FGR64Opnd>;
|
||||
class SEL_S_DESC : COP1_4R_DESC_BASE<"sel.s", FGR32Opnd>;
|
||||
|
||||
class SELEQNE_Z_DESC_BASE<string instr_asm, RegisterOperand GPROpnd> {
|
||||
dag OutOperandList = (outs GPROpnd:$rd);
|
||||
dag InOperandList = (ins GPROpnd:$rs, GPROpnd:$rt);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rd, $rs, $rt");
|
||||
list<dag> Pattern = [];
|
||||
}
|
||||
|
||||
class SELEQZ_DESC : SELEQNE_Z_DESC_BASE<"seleqz", GPR32Opnd>;
|
||||
class SELNEZ_DESC : SELEQNE_Z_DESC_BASE<"selnez", GPR32Opnd>;
|
||||
|
||||
class MADDF_S_DESC : COP1_4R_DESC_BASE<"maddf.s", FGR32Opnd>;
|
||||
class MADDF_D_DESC : COP1_4R_DESC_BASE<"maddf.d", FGR64Opnd>;
|
||||
class MSUBF_S_DESC : COP1_4R_DESC_BASE<"msubf.s", FGR32Opnd>;
|
||||
@ -448,6 +442,31 @@ class MAXA_D_DESC : MAX_MIN_DESC_BASE<"maxa.d", FGR64Opnd>;
|
||||
class MINA_S_DESC : MAX_MIN_DESC_BASE<"mina.s", FGR32Opnd>;
|
||||
class MINA_D_DESC : MAX_MIN_DESC_BASE<"mina.d", FGR64Opnd>;
|
||||
|
||||
class MUL_R6_DESC_BASE<string instr_asm, RegisterOperand GPROpnd> {
|
||||
dag OutOperandList = (outs GPROpnd:$rd);
|
||||
dag InOperandList = (ins GPROpnd:$rs, GPROpnd:$rt);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rd, $rs, $rt");
|
||||
list<dag> Pattern = [];
|
||||
}
|
||||
|
||||
class MUH_DESC : MUL_R6_DESC_BASE<"muh", GPR32Opnd>;
|
||||
class MUHU_DESC : MUL_R6_DESC_BASE<"muhu", GPR32Opnd>;
|
||||
class MUL_R6_DESC : MUL_R6_DESC_BASE<"mul", GPR32Opnd>;
|
||||
class MULU_DESC : MUL_R6_DESC_BASE<"mulu", GPR32Opnd>;
|
||||
|
||||
class SEL_D_DESC : COP1_4R_DESC_BASE<"sel.d", FGR64Opnd>;
|
||||
class SEL_S_DESC : COP1_4R_DESC_BASE<"sel.s", FGR32Opnd>;
|
||||
|
||||
class SELEQNE_Z_DESC_BASE<string instr_asm, RegisterOperand GPROpnd> {
|
||||
dag OutOperandList = (outs GPROpnd:$rd);
|
||||
dag InOperandList = (ins GPROpnd:$rs, GPROpnd:$rt);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rd, $rs, $rt");
|
||||
list<dag> Pattern = [];
|
||||
}
|
||||
|
||||
class SELEQZ_DESC : SELEQNE_Z_DESC_BASE<"seleqz", GPR32Opnd>;
|
||||
class SELNEZ_DESC : SELEQNE_Z_DESC_BASE<"selnez", GPR32Opnd>;
|
||||
|
||||
class SELEQNEZ_DESC_BASE<string instr_asm, RegisterOperand FGROpnd> {
|
||||
dag OutOperandList = (outs FGROpnd:$fd);
|
||||
dag InOperandList = (ins FGROpnd:$fs, FGROpnd:$ft);
|
||||
@ -460,18 +479,6 @@ class SELEQZ_D_DESC : SELEQNEZ_DESC_BASE<"seleqz.d", FGR64Opnd>;
|
||||
class SELNEZ_S_DESC : SELEQNEZ_DESC_BASE<"selnez.s", FGR32Opnd>;
|
||||
class SELNEZ_D_DESC : SELEQNEZ_DESC_BASE<"selnez.d", FGR64Opnd>;
|
||||
|
||||
class CLASS_RINT_DESC_BASE<string instr_asm, RegisterOperand FGROpnd> {
|
||||
dag OutOperandList = (outs FGROpnd:$fd);
|
||||
dag InOperandList = (ins FGROpnd:$fs);
|
||||
string AsmString = !strconcat(instr_asm, "\t$fd, $fs");
|
||||
list<dag> Pattern = [];
|
||||
}
|
||||
|
||||
class RINT_S_DESC : CLASS_RINT_DESC_BASE<"rint.s", FGR32Opnd>;
|
||||
class RINT_D_DESC : CLASS_RINT_DESC_BASE<"rint.d", FGR64Opnd>;
|
||||
class CLASS_S_DESC : CLASS_RINT_DESC_BASE<"class.s", FGR32Opnd>;
|
||||
class CLASS_D_DESC : CLASS_RINT_DESC_BASE<"class.d", FGR64Opnd>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Instruction Definitions
|
||||
|
@ -26,6 +26,8 @@
|
||||
bgtzc $5, 256 # CHECK: bgtzc $5, 256 # encoding: [0x5c,0x05,0x00,0x40]
|
||||
bitswap $4, $2 # CHECK: bitswap $4, $2 # encoding: [0x7c,0x02,0x20,0x20]
|
||||
blezalc $2, 1332 # CHECK: blezalc $2, 1332 # encoding: [0x18,0x02,0x01,0x4d]
|
||||
class.s $f2, $f4 # CHECK: class.s $f2, $f4 # encoding: [0x46,0x00,0x20,0x9b]
|
||||
class.d $f2, $f4 # CHECK: class.d $f2, $f4 # encoding: [0x46,0x20,0x20,0x9b]
|
||||
cmp.f.s $f2,$f3,$f4 # CHECK: cmp.f.s $f2, $f3, $f4 # encoding: [0x46,0x84,0x18,0x80]
|
||||
cmp.f.d $f2,$f3,$f4 # CHECK: cmp.f.d $f2, $f3, $f4 # encoding: [0x46,0xa4,0x18,0x80]
|
||||
cmp.un.s $f2,$f3,$f4 # CHECK: cmp.un.s $f2, $f3, $f4 # encoding: [0x46,0x84,0x18,0x81]
|
||||
@ -64,20 +66,10 @@
|
||||
jic $5, 256 # CHECK: jic $5, 256 # encoding: [0xd8,0x05,0x01,0x00]
|
||||
lwpc $2,268 # CHECK: lwpc $2, 268 # encoding: [0xec,0x48,0x00,0x43]
|
||||
lwupc $2,268 # CHECK: lwupc $2, 268 # encoding: [0xec,0x50,0x00,0x43]
|
||||
mod $2,$3,$4 # CHECK: mod $2, $3, $4 # encoding: [0x00,0x64,0x10,0xda]
|
||||
modu $2,$3,$4 # CHECK: modu $2, $3, $4 # encoding: [0x00,0x64,0x10,0xdb]
|
||||
# mul $2,$3,$4 # CHECK-TODO: mul $2, $3, $4 # encoding: [0x00,0x64,0x10,0x98]
|
||||
muh $2,$3,$4 # CHECK: muh $2, $3, $4 # encoding: [0x00,0x64,0x10,0xd8]
|
||||
mulu $2,$3,$4 # CHECK: mulu $2, $3, $4 # encoding: [0x00,0x64,0x10,0x99]
|
||||
muhu $2,$3,$4 # CHECK: muhu $2, $3, $4 # encoding: [0x00,0x64,0x10,0xd9]
|
||||
maddf.s $f2,$f3,$f4 # CHECK: maddf.s $f2, $f3, $f4 # encoding: [0x46,0x04,0x18,0x98]
|
||||
maddf.d $f2,$f3,$f4 # CHECK: maddf.d $f2, $f3, $f4 # encoding: [0x46,0x24,0x18,0x98]
|
||||
msubf.s $f2,$f3,$f4 # CHECK: msubf.s $f2, $f3, $f4 # encoding: [0x46,0x04,0x18,0x99]
|
||||
msubf.d $f2,$f3,$f4 # CHECK: msubf.d $f2, $f3, $f4 # encoding: [0x46,0x24,0x18,0x99]
|
||||
sel.d $f0,$f1,$f2 # CHECK: sel.d $f0, $f1, $f2 # encoding: [0x46,0x22,0x08,0x10]
|
||||
sel.s $f0,$f1,$f2 # CHECK: sel.s $f0, $f1, $f2 # encoding: [0x46,0x02,0x08,0x10]
|
||||
seleqz $2,$3,$4 # CHECK: seleqz $2, $3, $4 # encoding: [0x00,0x64,0x10,0x35]
|
||||
selnez $2,$3,$4 # CHECK: selnez $2, $3, $4 # encoding: [0x00,0x64,0x10,0x37]
|
||||
max.s $f0, $f2, $f4 # CHECK: max.s $f0, $f2, $f4 # encoding: [0x46,0x04,0x10,0x1d]
|
||||
max.d $f0, $f2, $f4 # CHECK: max.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x1d]
|
||||
min.s $f0, $f2, $f4 # CHECK: min.s $f0, $f2, $f4 # encoding: [0x46,0x04,0x10,0x1c]
|
||||
@ -86,11 +78,19 @@
|
||||
maxa.d $f0, $f2, $f4 # CHECK: maxa.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x1f]
|
||||
mina.s $f0, $f2, $f4 # CHECK: mina.s $f0, $f2, $f4 # encoding: [0x46,0x04,0x10,0x1e]
|
||||
mina.d $f0, $f2, $f4 # CHECK: mina.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x1e]
|
||||
mod $2,$3,$4 # CHECK: mod $2, $3, $4 # encoding: [0x00,0x64,0x10,0xda]
|
||||
modu $2,$3,$4 # CHECK: modu $2, $3, $4 # encoding: [0x00,0x64,0x10,0xdb]
|
||||
# mul $2,$3,$4 # CHECK-TODO: mul $2, $3, $4 # encoding: [0x00,0x64,0x10,0x98]
|
||||
muh $2,$3,$4 # CHECK: muh $2, $3, $4 # encoding: [0x00,0x64,0x10,0xd8]
|
||||
mulu $2,$3,$4 # CHECK: mulu $2, $3, $4 # encoding: [0x00,0x64,0x10,0x99]
|
||||
muhu $2,$3,$4 # CHECK: muhu $2, $3, $4 # encoding: [0x00,0x64,0x10,0xd9]
|
||||
rint.s $f2, $f4 # CHECK: rint.s $f2, $f4 # encoding: [0x46,0x00,0x20,0x9a]
|
||||
rint.d $f2, $f4 # CHECK: rint.d $f2, $f4 # encoding: [0x46,0x20,0x20,0x9a]
|
||||
sel.d $f0,$f1,$f2 # CHECK: sel.d $f0, $f1, $f2 # encoding: [0x46,0x22,0x08,0x10]
|
||||
sel.s $f0,$f1,$f2 # CHECK: sel.s $f0, $f1, $f2 # encoding: [0x46,0x02,0x08,0x10]
|
||||
seleqz $2,$3,$4 # CHECK: seleqz $2, $3, $4 # encoding: [0x00,0x64,0x10,0x35]
|
||||
selnez $2,$3,$4 # CHECK: selnez $2, $3, $4 # encoding: [0x00,0x64,0x10,0x37]
|
||||
seleqz.s $f0, $f2, $f4 # CHECK: seleqz.s $f0, $f2, $f4 # encoding: [0x46,0x04,0x10,0x14]
|
||||
seleqz.d $f0, $f2, $f4 # CHECK: seleqz.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x14]
|
||||
selnez.s $f0, $f2, $f4 # CHECK: selnez.s $f0, $f2, $f4 # encoding: [0x46,0x04,0x10,0x17]
|
||||
selnez.d $f0, $f2, $f4 # CHECK: selnez.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x17]
|
||||
rint.s $f2, $f4 # CHECK: rint.s $f2, $f4 # encoding: [0x46,0x00,0x20,0x9a]
|
||||
rint.d $f2, $f4 # CHECK: rint.d $f2, $f4 # encoding: [0x46,0x20,0x20,0x9a]
|
||||
class.s $f2, $f4 # CHECK: class.s $f2, $f4 # encoding: [0x46,0x00,0x20,0x9b]
|
||||
class.d $f2, $f4 # CHECK: class.d $f2, $f4 # encoding: [0x46,0x20,0x20,0x9b]
|
||||
|
@ -26,6 +26,8 @@
|
||||
bgtzc $5, 256 # CHECK: bgtzc $5, 256 # encoding: [0x5c,0x05,0x00,0x40]
|
||||
bitswap $4, $2 # CHECK: bitswap $4, $2 # encoding: [0x7c,0x02,0x20,0x20]
|
||||
blezalc $2, 1332 # CHECK: blezalc $2, 1332 # encoding: [0x18,0x02,0x01,0x4d]
|
||||
class.s $f2, $f4 # CHECK: class.s $f2, $f4 # encoding: [0x46,0x00,0x20,0x9b]
|
||||
class.d $f2, $f4 # CHECK: class.d $f2, $f4 # encoding: [0x46,0x20,0x20,0x9b]
|
||||
cmp.f.s $f2,$f3,$f4 # CHECK: cmp.f.s $f2, $f3, $f4 # encoding: [0x46,0x84,0x18,0x80]
|
||||
cmp.f.d $f2,$f3,$f4 # CHECK: cmp.f.d $f2, $f3, $f4 # encoding: [0x46,0xa4,0x18,0x80]
|
||||
cmp.un.s $f2,$f3,$f4 # CHECK: cmp.un.s $f2, $f3, $f4 # encoding: [0x46,0x84,0x18,0x81]
|
||||
@ -63,34 +65,22 @@
|
||||
dahi $3,$3,0x5678 # CHECK: dahi $3, $3, 22136 # encoding: [0x04,0x66,0x56,0x78]
|
||||
dati $3,$3,0xabcd # CHECK: dati $3, $3, 43981 # encoding: [0x04,0x7e,0xab,0xcd]
|
||||
dbitswap $4, $2 # CHECK: bitswap $4, $2 # encoding: [0x7c,0x02,0x20,0x24]
|
||||
div $2,$3,$4 # CHECK: div $2, $3, $4 # encoding: [0x00,0x64,0x10,0x9a]
|
||||
divu $2,$3,$4 # CHECK: divu $2, $3, $4 # encoding: [0x00,0x64,0x10,0x9b]
|
||||
jialc $5, 256 # CHECK: jialc $5, 256 # encoding: [0xf8,0x05,0x01,0x00]
|
||||
jic $5, 256 # CHECK: jic $5, 256 # encoding: [0xd8,0x05,0x01,0x00]
|
||||
mod $2,$3,$4 # CHECK: mod $2, $3, $4 # encoding: [0x00,0x64,0x10,0xda]
|
||||
modu $2,$3,$4 # CHECK: modu $2, $3, $4 # encoding: [0x00,0x64,0x10,0xdb]
|
||||
ddiv $2,$3,$4 # CHECK: ddiv $2, $3, $4 # encoding: [0x00,0x64,0x10,0x9e]
|
||||
ddivu $2,$3,$4 # CHECK: ddivu $2, $3, $4 # encoding: [0x00,0x64,0x10,0x9f]
|
||||
div $2,$3,$4 # CHECK: div $2, $3, $4 # encoding: [0x00,0x64,0x10,0x9a]
|
||||
divu $2,$3,$4 # CHECK: divu $2, $3, $4 # encoding: [0x00,0x64,0x10,0x9b]
|
||||
dmod $2,$3,$4 # CHECK: dmod $2, $3, $4 # encoding: [0x00,0x64,0x10,0xde]
|
||||
dmodu $2,$3,$4 # CHECK: dmodu $2, $3, $4 # encoding: [0x00,0x64,0x10,0xdf]
|
||||
lwpc $2,268 # CHECK: lwpc $2, 268 # encoding: [0xec,0x48,0x00,0x43]
|
||||
lwupc $2,268 # CHECK: lwupc $2, 268 # encoding: [0xec,0x50,0x00,0x43]
|
||||
# mul $2,$3,$4 # CHECK-TODO: mul $2, $3, $4 # encoding: [0x00,0x64,0x10,0x98]
|
||||
muh $2,$3,$4 # CHECK: muh $2, $3, $4 # encoding: [0x00,0x64,0x10,0xd8]
|
||||
mulu $2,$3,$4 # CHECK: mulu $2, $3, $4 # encoding: [0x00,0x64,0x10,0x99]
|
||||
muhu $2,$3,$4 # CHECK: muhu $2, $3, $4 # encoding: [0x00,0x64,0x10,0xd9]
|
||||
dmul $2,$3,$4 # CHECK: dmul $2, $3, $4 # encoding: [0x00,0x64,0x10,0xb8]
|
||||
dmuh $2,$3,$4 # CHECK: dmuh $2, $3, $4 # encoding: [0x00,0x64,0x10,0xf8]
|
||||
dmulu $2,$3,$4 # CHECK: dmulu $2, $3, $4 # encoding: [0x00,0x64,0x10,0xb9]
|
||||
dmuhu $2,$3,$4 # CHECK: dmuhu $2, $3, $4 # encoding: [0x00,0x64,0x10,0xf9]
|
||||
jialc $5, 256 # CHECK: jialc $5, 256 # encoding: [0xf8,0x05,0x01,0x00]
|
||||
jic $5, 256 # CHECK: jic $5, 256 # encoding: [0xd8,0x05,0x01,0x00]
|
||||
lwpc $2,268 # CHECK: lwpc $2, 268 # encoding: [0xec,0x48,0x00,0x43]
|
||||
lwupc $2,268 # CHECK: lwupc $2, 268 # encoding: [0xec,0x50,0x00,0x43]
|
||||
maddf.s $f2,$f3,$f4 # CHECK: maddf.s $f2, $f3, $f4 # encoding: [0x46,0x04,0x18,0x98]
|
||||
maddf.d $f2,$f3,$f4 # CHECK: maddf.d $f2, $f3, $f4 # encoding: [0x46,0x24,0x18,0x98]
|
||||
msubf.s $f2,$f3,$f4 # CHECK: msubf.s $f2, $f3, $f4 # encoding: [0x46,0x04,0x18,0x99]
|
||||
msubf.d $f2,$f3,$f4 # CHECK: msubf.d $f2, $f3, $f4 # encoding: [0x46,0x24,0x18,0x99]
|
||||
sel.d $f0,$f1,$f2 # CHECK: sel.d $f0, $f1, $f2 # encoding: [0x46,0x22,0x08,0x10]
|
||||
sel.s $f0,$f1,$f2 # CHECK: sel.s $f0, $f1, $f2 # encoding: [0x46,0x02,0x08,0x10]
|
||||
seleqz $2,$3,$4 # CHECK: seleqz $2, $3, $4 # encoding: [0x00,0x64,0x10,0x35]
|
||||
selnez $2,$3,$4 # CHECK: selnez $2, $3, $4 # encoding: [0x00,0x64,0x10,0x37]
|
||||
max.s $f0, $f2, $f4 # CHECK: max.s $f0, $f2, $f4 # encoding: [0x46,0x04,0x10,0x1d]
|
||||
max.d $f0, $f2, $f4 # CHECK: max.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x1d]
|
||||
min.s $f0, $f2, $f4 # CHECK: min.s $f0, $f2, $f4 # encoding: [0x46,0x04,0x10,0x1c]
|
||||
@ -99,11 +89,21 @@
|
||||
maxa.d $f0, $f2, $f4 # CHECK: maxa.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x1f]
|
||||
mina.s $f0, $f2, $f4 # CHECK: mina.s $f0, $f2, $f4 # encoding: [0x46,0x04,0x10,0x1e]
|
||||
mina.d $f0, $f2, $f4 # CHECK: mina.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x1e]
|
||||
mod $2,$3,$4 # CHECK: mod $2, $3, $4 # encoding: [0x00,0x64,0x10,0xda]
|
||||
modu $2,$3,$4 # CHECK: modu $2, $3, $4 # encoding: [0x00,0x64,0x10,0xdb]
|
||||
# mul $2,$3,$4 # CHECK-TODO: mul $2, $3, $4 # encoding: [0x00,0x64,0x10,0x98]
|
||||
muh $2,$3,$4 # CHECK: muh $2, $3, $4 # encoding: [0x00,0x64,0x10,0xd8]
|
||||
mulu $2,$3,$4 # CHECK: mulu $2, $3, $4 # encoding: [0x00,0x64,0x10,0x99]
|
||||
muhu $2,$3,$4 # CHECK: muhu $2, $3, $4 # encoding: [0x00,0x64,0x10,0xd9]
|
||||
msubf.s $f2,$f3,$f4 # CHECK: msubf.s $f2, $f3, $f4 # encoding: [0x46,0x04,0x18,0x99]
|
||||
msubf.d $f2,$f3,$f4 # CHECK: msubf.d $f2, $f3, $f4 # encoding: [0x46,0x24,0x18,0x99]
|
||||
rint.s $f2, $f4 # CHECK: rint.s $f2, $f4 # encoding: [0x46,0x00,0x20,0x9a]
|
||||
rint.d $f2, $f4 # CHECK: rint.d $f2, $f4 # encoding: [0x46,0x20,0x20,0x9a]
|
||||
sel.d $f0,$f1,$f2 # CHECK: sel.d $f0, $f1, $f2 # encoding: [0x46,0x22,0x08,0x10]
|
||||
sel.s $f0,$f1,$f2 # CHECK: sel.s $f0, $f1, $f2 # encoding: [0x46,0x02,0x08,0x10]
|
||||
seleqz $2,$3,$4 # CHECK: seleqz $2, $3, $4 # encoding: [0x00,0x64,0x10,0x35]
|
||||
selnez $2,$3,$4 # CHECK: selnez $2, $3, $4 # encoding: [0x00,0x64,0x10,0x37]
|
||||
seleqz.s $f0, $f2, $f4 # CHECK: seleqz.s $f0, $f2, $f4 # encoding: [0x46,0x04,0x10,0x14]
|
||||
seleqz.d $f0, $f2, $f4 # CHECK: seleqz.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x14]
|
||||
selnez.s $f0, $f2, $f4 # CHECK: selnez.s $f0, $f2, $f4 # encoding: [0x46,0x04,0x10,0x17]
|
||||
selnez.d $f0, $f2, $f4 # CHECK: selnez.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x17]
|
||||
rint.s $f2, $f4 # CHECK: rint.s $f2, $f4 # encoding: [0x46,0x00,0x20,0x9a]
|
||||
rint.d $f2, $f4 # CHECK: rint.d $f2, $f4 # encoding: [0x46,0x20,0x20,0x9a]
|
||||
class.s $f2, $f4 # CHECK: class.s $f2, $f4 # encoding: [0x46,0x00,0x20,0x9b]
|
||||
class.d $f2, $f4 # CHECK: class.d $f2, $f4 # encoding: [0x46,0x20,0x20,0x9b]
|
||||
|
Loading…
x
Reference in New Issue
Block a user