[llvm] r324584 - [mips] Define certain instructions in microMIPS32r3
Stefan Maksimovic via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 8 01:25:17 PST 2018
Author: smaksimovic
Date: Thu Feb 8 01:25:17 2018
New Revision: 324584
URL: http://llvm.org/viewvc/llvm-project?rev=324584&view=rev
Log:
[mips] Define certain instructions in microMIPS32r3
Instructions affected:
mthc1, mfhc1, add.d, sub.d, mul.d, div.d,
mov.d, neg.d, cvt.w.d, cvt.d.s, cvt.d.w, cvt.s.d
These instructions are now defined for
microMIPS32r3 + microMIPS32r6 in MicroMipsInstrFPU.td
since they shared their encoding with those already defined
in microMIPS32r6InstrInfo.td and have been therefore
removed from the latter file.
Some instructions present in MicroMipsInstrFPU.td which
did not have both AFGR64 and FGR64 variants defined have
been altered to do so.
Differential revision: https://reviews.llvm.org/D42738
Added:
llvm/trunk/test/CodeGen/Mips/llvm-ir/arith-fp.ll
llvm/trunk/test/CodeGen/Mips/llvm-ir/bitcast.ll
llvm/trunk/test/CodeGen/Mips/llvm-ir/cvt.ll
llvm/trunk/test/CodeGen/Mips/maxcallframesize.ll
Modified:
llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td
llvm/trunk/lib/Target/Mips/MicroMipsInstrFPU.td
llvm/trunk/lib/Target/Mips/MicroMipsInstrFormats.td
llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp
llvm/trunk/lib/Target/Mips/MipsISelLowering.h
llvm/trunk/lib/Target/Mips/MipsInstrFPU.td
llvm/trunk/lib/Target/Mips/MipsRegisterInfo.cpp
llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.cpp
llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.h
llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-el.txt
llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-fp64-el.txt
llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-fp64.txt
llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid.txt
llvm/trunk/test/MC/Disassembler/Mips/mips32/valid-fp64-el.txt
llvm/trunk/test/MC/Disassembler/Mips/mips32/valid-fp64.txt
llvm/trunk/test/MC/Disassembler/Mips/mips32r2/valid-fp64-el.txt
llvm/trunk/test/MC/Disassembler/Mips/mips32r2/valid-fp64.txt
llvm/trunk/test/MC/Disassembler/Mips/mips32r3/valid-fp64-el.txt
llvm/trunk/test/MC/Disassembler/Mips/mips32r3/valid-fp64.txt
llvm/trunk/test/MC/Disassembler/Mips/mips32r5/valid-fp64-el.txt
llvm/trunk/test/MC/Disassembler/Mips/mips32r5/valid-fp64.txt
llvm/trunk/test/MC/Mips/micromips/valid-fp64.s
llvm/trunk/test/MC/Mips/micromips/valid.s
llvm/trunk/test/MC/Mips/micromips32r6/valid.s
llvm/trunk/test/MC/Mips/mips1/valid.s
llvm/trunk/test/MC/Mips/mips2/valid.s
llvm/trunk/test/MC/Mips/mips32/valid.s
llvm/trunk/test/MC/Mips/mips32r2/valid-fp64.s
llvm/trunk/test/MC/Mips/mips32r2/valid.s
llvm/trunk/test/MC/Mips/mips32r3/valid-fp64.s
llvm/trunk/test/MC/Mips/mips32r3/valid.s
llvm/trunk/test/MC/Mips/mips32r5/valid-fp64.s
llvm/trunk/test/MC/Mips/mips32r5/valid.s
Modified: llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td (original)
+++ llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td Thu Feb 8 01:25:17 2018
@@ -119,7 +119,6 @@ class MFC0_MMR6_ENC : POOL32A_MFTC0_FM_M
class MFC1_MMR6_ENC : POOL32F_MFTC1_FM_MMR6<"mfc1", 0b10000000>;
class MFC2_MMR6_ENC : POOL32A_MFTC2_FM_MMR6<"mfc2", 0b0100110100>;
class MFHC0_MMR6_ENC : POOL32A_MFTC0_FM_MMR6<"mfhc0", 0b00011, 0b110100>;
-class MFHC1_MMR6_ENC : POOL32F_MFTC1_FM_MMR6<"mfhc1", 0b11000000>;
class MFHC2_MMR6_ENC : POOL32A_MFTC2_FM_MMR6<"mfhc2", 0b1000110100>;
class MOD_MMR6_ENC : ARITH_FM_MMR6<"mod", 0x158>;
class MODU_MMR6_ENC : ARITH_FM_MMR6<"modu", 0x1d8>;
@@ -131,7 +130,6 @@ class MTC0_MMR6_ENC : POOL32A_MFTC0_FM_M
class MTC1_MMR6_ENC : POOL32F_MFTC1_FM_MMR6<"mtc1", 0b10100000>;
class MTC2_MMR6_ENC : POOL32A_MFTC2_FM_MMR6<"mtc2", 0b0101110100>;
class MTHC0_MMR6_ENC : POOL32A_MFTC0_FM_MMR6<"mthc0", 0b01011, 0b110100>;
-class MTHC1_MMR6_ENC : POOL32F_MFTC1_FM_MMR6<"mthc1", 0b11100000>;
class MTHC2_MMR6_ENC : POOL32A_MFTC2_FM_MMR6<"mthc2", 0b1001110100>;
class NOR_MMR6_ENC : ARITH_FM_MMR6<"nor", 0x2d0>;
class OR_MMR6_ENC : ARITH_FM_MMR6<"or", 0x290>;
@@ -238,21 +236,15 @@ class SWC2_MMR6_ENC : POOL32B_LDWC2_SDWC
/// Floating Point Instructions
class FADD_S_MMR6_ENC : POOL32F_ARITH_FM_MMR6<"add.s", 0, 0b00110000>;
-class FADD_D_MMR6_ENC : POOL32F_ARITH_FM_MMR6<"add.d", 1, 0b00110000>;
class FSUB_S_MMR6_ENC : POOL32F_ARITH_FM_MMR6<"sub.s", 0, 0b01110000>;
-class FSUB_D_MMR6_ENC : POOL32F_ARITH_FM_MMR6<"sub.d", 1, 0b01110000>;
class FMUL_S_MMR6_ENC : POOL32F_ARITH_FM_MMR6<"mul.s", 0, 0b10110000>;
-class FMUL_D_MMR6_ENC : POOL32F_ARITH_FM_MMR6<"mul.d", 1, 0b10110000>;
class FDIV_S_MMR6_ENC : POOL32F_ARITH_FM_MMR6<"div.s", 0, 0b11110000>;
-class FDIV_D_MMR6_ENC : POOL32F_ARITH_FM_MMR6<"div.d", 1, 0b11110000>;
class MADDF_S_MMR6_ENC : POOL32F_ARITHF_FM_MMR6<"maddf.s", 0, 0b110111000>;
class MADDF_D_MMR6_ENC : POOL32F_ARITHF_FM_MMR6<"maddf.d", 1, 0b110111000>;
class MSUBF_S_MMR6_ENC : POOL32F_ARITHF_FM_MMR6<"msubf.s", 0, 0b111111000>;
class MSUBF_D_MMR6_ENC : POOL32F_ARITHF_FM_MMR6<"msubf.d", 1, 0b111111000>;
class FMOV_S_MMR6_ENC : POOL32F_MOV_NEG_FM_MMR6<"mov.s", 0, 0b0000001>;
-class FMOV_D_MMR6_ENC : POOL32F_MOV_NEG_FM_MMR6<"mov.d", 1, 0b0000001>;
class FNEG_S_MMR6_ENC : POOL32F_MOV_NEG_FM_MMR6<"neg.s", 0, 0b0101101>;
-class FNEG_D_MMR6_ENC : POOL32F_MOV_NEG_FM_MMR6<"neg.d", 1, 0b0101101>;
class MAX_S_MMR6_ENC : POOL32F_MINMAX_FM<"max.s", 0, 0b000001011>;
class MAX_D_MMR6_ENC : POOL32F_MINMAX_FM<"max.d", 1, 0b000001011>;
class MAXA_S_MMR6_ENC : POOL32F_MINMAX_FM<"maxa.s", 0, 0b000101011>;
@@ -265,11 +257,7 @@ class MINA_D_MMR6_ENC : POOL32F_MINMAX_F
class CVT_L_S_MMR6_ENC : POOL32F_CVT_LW_FM<"cvt.l.s", 0, 0b00000100>;
class CVT_L_D_MMR6_ENC : POOL32F_CVT_LW_FM<"cvt.l.d", 1, 0b00000100>;
class CVT_W_S_MMR6_ENC : POOL32F_CVT_LW_FM<"cvt.w.s", 0, 0b00100100>;
-class CVT_W_D_MMR6_ENC : POOL32F_CVT_LW_FM<"cvt.w.d", 1, 0b00100100>;
-class CVT_D_S_MMR6_ENC : POOL32F_CVT_DS_FM<"cvt.d.s", 0, 0b1001101>;
-class CVT_D_W_MMR6_ENC : POOL32F_CVT_DS_FM<"cvt.d.w", 1, 0b1001101>;
class CVT_D_L_MMR6_ENC : POOL32F_CVT_DS_FM<"cvt.d.l", 2, 0b1001101>;
-class CVT_S_D_MMR6_ENC : POOL32F_CVT_DS_FM<"cvt.s.d", 0, 0b1101101>;
class CVT_S_W_MMR6_ENC : POOL32F_CVT_DS_FM<"cvt.s.w", 1, 0b1101101>;
class CVT_S_L_MMR6_ENC : POOL32F_CVT_DS_FM<"cvt.s.l", 2, 0b1101101>;
@@ -744,12 +732,6 @@ class MTC2_MMR6_DESC : MTC2_MMR6_DESC_BA
II_MTC2>;
class MTHC0_MMR6_DESC : MTC0_MMR6_DESC_BASE<"mthc0", COP0Opnd, GPR32Opnd,
II_MTHC0>;
-class MTHC1_D32_MMR6_DESC : MTC1_64_MMR6_DESC_BASE<"mthc1", AFGR64Opnd,
- GPR32Opnd, II_MTC1>,
- HARDFLOAT, FGR_32;
-class MTHC1_D64_MMR6_DESC : MTC1_64_MMR6_DESC_BASE<"mthc1", FGR64Opnd,
- GPR32Opnd, II_MTC1>,
- HARDFLOAT, FGR_64;
class MTHC2_MMR6_DESC : MTC2_MMR6_DESC_BASE<"mthc2", COP2Opnd, GPR32Opnd,
II_MTC2>;
@@ -793,10 +775,6 @@ class MFC2_MMR6_DESC : MFC2_MMR6_DESC_BA
II_MFC2>;
class MFHC0_MMR6_DESC : MFC0_MMR6_DESC_BASE<"mfhc0", GPR32Opnd, COP0Opnd,
II_MFHC0>;
-class MFHC1_D32_MMR6_DESC : MFC1_MMR6_DESC_BASE<"mfhc1", GPR32Opnd, AFGR64Opnd,
- II_MFHC1>, HARDFLOAT, FGR_32;
-class MFHC1_D64_MMR6_DESC : MFC1_MMR6_DESC_BASE<"mfhc1", GPR32Opnd, FGR64Opnd,
- II_MFHC1>, HARDFLOAT, FGR_64;
class MFHC2_MMR6_DESC : MFC2_MMR6_DESC_BASE<"mfhc2", GPR32Opnd, COP2Opnd,
II_MFC2>;
@@ -865,20 +843,12 @@ class FARITH_MMR6_DESC_BASE<string instr
}
class FADD_S_MMR6_DESC
: FARITH_MMR6_DESC_BASE<"add.s", FGR32Opnd, II_ADD_S, 1, fadd>;
-class FADD_D_MMR6_DESC
- : FARITH_MMR6_DESC_BASE<"add.d", AFGR64Opnd, II_ADD_D, 1, fadd>;
class FSUB_S_MMR6_DESC
: FARITH_MMR6_DESC_BASE<"sub.s", FGR32Opnd, II_SUB_S, 0, fsub>;
-class FSUB_D_MMR6_DESC
- : FARITH_MMR6_DESC_BASE<"sub.d", AFGR64Opnd, II_SUB_D, 0, fsub>;
class FMUL_S_MMR6_DESC
: FARITH_MMR6_DESC_BASE<"mul.s", FGR32Opnd, II_MUL_S, 1, fmul>;
-class FMUL_D_MMR6_DESC
- : FARITH_MMR6_DESC_BASE<"mul.d", AFGR64Opnd, II_MUL_D, 1, fmul>;
class FDIV_S_MMR6_DESC
: FARITH_MMR6_DESC_BASE<"div.s", FGR32Opnd, II_DIV_S, 0, fdiv>;
-class FDIV_D_MMR6_DESC
- : FARITH_MMR6_DESC_BASE<"div.d", AFGR64Opnd, II_DIV_D, 0, fdiv>;
class MADDF_S_MMR6_DESC : COP1_4R_DESC_BASE<"maddf.s", FGR32Opnd,
II_MADDF_S>, HARDFLOAT;
class MADDF_D_MMR6_DESC : COP1_4R_DESC_BASE<"maddf.d", FGR64Opnd,
@@ -901,12 +871,8 @@ class FMOV_FNEG_MMR6_DESC_BASE<string in
}
class FMOV_S_MMR6_DESC
: FMOV_FNEG_MMR6_DESC_BASE<"mov.s", FGR32Opnd, FGR32Opnd, II_MOV_S>;
-class FMOV_D_MMR6_DESC
- : FMOV_FNEG_MMR6_DESC_BASE<"mov.d", AFGR64Opnd, AFGR64Opnd, II_MOV_D>;
class FNEG_S_MMR6_DESC
: FMOV_FNEG_MMR6_DESC_BASE<"neg.s", FGR32Opnd, FGR32Opnd, II_NEG, fneg>;
-class FNEG_D_MMR6_DESC
- : FMOV_FNEG_MMR6_DESC_BASE<"neg.d", AFGR64Opnd, AFGR64Opnd, II_NEG, fneg>;
class MAX_S_MMR6_DESC : MAX_MIN_DESC_BASE<"max.s", FGR32Opnd, II_MAX_S>,
HARDFLOAT;
@@ -944,16 +910,8 @@ class CVT_L_D_MMR6_DESC : CVT_MMR6_DESC_
II_CVT>;
class CVT_W_S_MMR6_DESC : CVT_MMR6_DESC_BASE<"cvt.w.s", FGR32Opnd, FGR32Opnd,
II_CVT>;
-class CVT_W_D_MMR6_DESC : CVT_MMR6_DESC_BASE<"cvt.w.d", FGR32Opnd, AFGR64Opnd,
- II_CVT>;
-class CVT_D_S_MMR6_DESC : CVT_MMR6_DESC_BASE<"cvt.d.s", FGR32Opnd, AFGR64Opnd,
- II_CVT>;
-class CVT_D_W_MMR6_DESC : CVT_MMR6_DESC_BASE<"cvt.d.w", FGR32Opnd, AFGR64Opnd,
- II_CVT>;
class CVT_D_L_MMR6_DESC : CVT_MMR6_DESC_BASE<"cvt.d.l", FGR64Opnd, FGR64Opnd,
II_CVT>, FGR_64;
-class CVT_S_D_MMR6_DESC : CVT_MMR6_DESC_BASE<"cvt.s.d", AFGR64Opnd, FGR32Opnd,
- II_CVT>;
class CVT_S_W_MMR6_DESC : CVT_MMR6_DESC_BASE<"cvt.s.w", FGR32Opnd, FGR32Opnd,
II_CVT>;
class CVT_S_L_MMR6_DESC : CVT_MMR6_DESC_BASE<"cvt.s.l", FGR64Opnd, FGR32Opnd,
@@ -1414,22 +1372,11 @@ def MTC0_MMR6 : StdMMR6Rel, MTC0_MMR6_EN
def MTC1_MMR6 : StdMMR6Rel, MTC1_MMR6_DESC, MTC1_MMR6_ENC, ISA_MICROMIPS32R6;
def MTC2_MMR6 : StdMMR6Rel, MTC2_MMR6_ENC, MTC2_MMR6_DESC, ISA_MICROMIPS32R6;
def MTHC0_MMR6 : R6MMR6Rel, MTHC0_MMR6_ENC, MTHC0_MMR6_DESC, ISA_MICROMIPS32R6;
-def MTHC1_D32_MMR6 : StdMMR6Rel, MTHC1_D32_MMR6_DESC, MTHC1_MMR6_ENC, ISA_MICROMIPS32R6;
-let DecoderNamespace = "MicroMipsFP64" in {
- def MTHC1_D64_MMR6 : R6MMR6Rel, MTHC1_D64_MMR6_DESC, MTHC1_MMR6_ENC,
- ISA_MICROMIPS32R6;
-}
def MTHC2_MMR6 : StdMMR6Rel, MTHC2_MMR6_ENC, MTHC2_MMR6_DESC, ISA_MICROMIPS32R6;
def MFC0_MMR6 : StdMMR6Rel, MFC0_MMR6_ENC, MFC0_MMR6_DESC, ISA_MICROMIPS32R6;
def MFC1_MMR6 : StdMMR6Rel, MFC1_MMR6_DESC, MFC1_MMR6_ENC, ISA_MICROMIPS32R6;
def MFC2_MMR6 : StdMMR6Rel, MFC2_MMR6_ENC, MFC2_MMR6_DESC, ISA_MICROMIPS32R6;
def MFHC0_MMR6 : R6MMR6Rel, MFHC0_MMR6_ENC, MFHC0_MMR6_DESC, ISA_MICROMIPS32R6;
-def MFHC1_D32_MMR6 : StdMMR6Rel, MFHC1_D32_MMR6_DESC, MFHC1_MMR6_ENC,
- ISA_MICROMIPS32R6;
-let DecoderNamespace = "MicroMipsFP64" in {
- def MFHC1_D64_MMR6 : StdMMR6Rel, MFHC1_D64_MMR6_DESC, MFHC1_MMR6_ENC,
- ISA_MICROMIPS32R6;
-}
def MFHC2_MMR6 : StdMMR6Rel, MFHC2_MMR6_ENC, MFHC2_MMR6_DESC, ISA_MICROMIPS32R6;
def MOD_MMR6 : R6MMR6Rel, MOD_MMR6_DESC, MOD_MMR6_ENC, ISA_MICROMIPS32R6;
def MODU_MMR6 : R6MMR6Rel, MODU_MMR6_DESC, MODU_MMR6_ENC, ISA_MICROMIPS32R6;
@@ -1478,20 +1425,12 @@ let DecoderMethod = "DecodeMemMMImm16" i
/// Floating Point Instructions
def FADD_S_MMR6 : StdMMR6Rel, FADD_S_MMR6_ENC, FADD_S_MMR6_DESC,
ISA_MICROMIPS32R6;
-def FADD_D_MMR6 : StdMMR6Rel, FADD_D_MMR6_ENC, FADD_D_MMR6_DESC,
- ISA_MICROMIPS32R6;
def FSUB_S_MMR6 : StdMMR6Rel, FSUB_S_MMR6_ENC, FSUB_S_MMR6_DESC,
ISA_MICROMIPS32R6;
-def FSUB_D_MMR6 : StdMMR6Rel, FSUB_D_MMR6_ENC, FSUB_D_MMR6_DESC,
- ISA_MICROMIPS32R6;
def FMUL_S_MMR6 : StdMMR6Rel, FMUL_S_MMR6_ENC, FMUL_S_MMR6_DESC,
ISA_MICROMIPS32R6;
-def FMUL_D_MMR6 : StdMMR6Rel, FMUL_D_MMR6_ENC, FMUL_D_MMR6_DESC,
- ISA_MICROMIPS32R6;
def FDIV_S_MMR6 : StdMMR6Rel, FDIV_S_MMR6_ENC, FDIV_S_MMR6_DESC,
ISA_MICROMIPS32R6;
-def FDIV_D_MMR6 : StdMMR6Rel, FDIV_D_MMR6_ENC, FDIV_D_MMR6_DESC,
- ISA_MICROMIPS32R6;
def MADDF_S_MMR6 : R6MMR6Rel, MADDF_S_MMR6_ENC, MADDF_S_MMR6_DESC,
ISA_MICROMIPS32R6;
def MADDF_D_MMR6 : R6MMR6Rel, MADDF_D_MMR6_ENC, MADDF_D_MMR6_DESC,
@@ -1502,12 +1441,8 @@ def MSUBF_D_MMR6 : R6MMR6Rel, MSUBF_D_MM
ISA_MICROMIPS32R6;
def FMOV_S_MMR6 : StdMMR6Rel, FMOV_S_MMR6_ENC, FMOV_S_MMR6_DESC,
ISA_MICROMIPS32R6;
-def FMOV_D_MMR6 : StdMMR6Rel, FMOV_D_MMR6_ENC, FMOV_D_MMR6_DESC,
- ISA_MICROMIPS32R6;
def FNEG_S_MMR6 : StdMMR6Rel, FNEG_S_MMR6_ENC, FNEG_S_MMR6_DESC,
ISA_MICROMIPS32R6;
-def FNEG_D_MMR6 : StdMMR6Rel, FNEG_D_MMR6_ENC, FNEG_D_MMR6_DESC,
- ISA_MICROMIPS32R6;
def MAX_S_MMR6 : R6MMR6Rel, MAX_S_MMR6_ENC, MAX_S_MMR6_DESC, ISA_MICROMIPS32R6;
def MAX_D_MMR6 : R6MMR6Rel, MAX_D_MMR6_ENC, MAX_D_MMR6_DESC, ISA_MICROMIPS32R6;
def MIN_S_MMR6 : R6MMR6Rel, MIN_S_MMR6_ENC, MIN_S_MMR6_DESC, ISA_MICROMIPS32R6;
@@ -1526,16 +1461,8 @@ def CVT_L_D_MMR6 : StdMMR6Rel, CVT_L_D_M
ISA_MICROMIPS32R6;
def CVT_W_S_MMR6 : StdMMR6Rel, CVT_W_S_MMR6_ENC, CVT_W_S_MMR6_DESC,
ISA_MICROMIPS32R6;
-def CVT_W_D_MMR6 : StdMMR6Rel, CVT_W_D_MMR6_ENC, CVT_W_D_MMR6_DESC,
- ISA_MICROMIPS32R6;
-def CVT_D_S_MMR6 : StdMMR6Rel, CVT_D_S_MMR6_ENC, CVT_D_S_MMR6_DESC,
- ISA_MICROMIPS32R6;
-def CVT_D_W_MMR6 : StdMMR6Rel, CVT_D_W_MMR6_ENC, CVT_D_W_MMR6_DESC,
- ISA_MICROMIPS32R6;
def CVT_D_L_MMR6 : StdMMR6Rel, CVT_D_L_MMR6_ENC, CVT_D_L_MMR6_DESC,
ISA_MICROMIPS32R6;
-def CVT_S_D_MMR6 : StdMMR6Rel, CVT_S_D_MMR6_ENC, CVT_S_D_MMR6_DESC,
- ISA_MICROMIPS32R6;
def CVT_S_W_MMR6 : StdMMR6Rel, CVT_S_W_MMR6_ENC, CVT_S_W_MMR6_DESC,
ISA_MICROMIPS32R6;
def CVT_S_L_MMR6 : StdMMR6Rel, CVT_S_L_MMR6_ENC, CVT_S_L_MMR6_DESC,
Modified: llvm/trunk/lib/Target/Mips/MicroMipsInstrFPU.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MicroMipsInstrFPU.td?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MicroMipsInstrFPU.td (original)
+++ llvm/trunk/lib/Target/Mips/MicroMipsInstrFPU.td Thu Feb 8 01:25:17 2018
@@ -11,7 +11,18 @@
//
//===----------------------------------------------------------------------===//
-let isCodeGenOnly = 1 in {
+multiclass ADDS_MMM<string opstr, InstrItinClass Itin, bit IsComm,
+ SDPatternOperator OpNode = null_frag> {
+ def _D32_MM : MMRel, ADDS_FT<opstr, AFGR64Opnd, Itin, IsComm, OpNode>,
+ FGR_32 {
+ string DecoderNamespace = "MicroMips";
+ }
+ // FIXME: This needs to be part of the instruction mapping tables.
+ def _D64_MM : ADDS_FT<opstr, FGR64Opnd, Itin, IsComm, OpNode>, FGR_64 {
+ string DecoderNamespace = "MicroMipsFP64";
+ }
+}
+
def FADD_S_MM : MMRel, ADDS_FT<"add.s", FGR32Opnd, II_ADD_S, 1, fadd>,
ADDS_FM_MM<0, 0x30>, ISA_MICROMIPS;
def FDIV_S_MM : MMRel, ADDS_FT<"div.s", FGR32Opnd, II_DIV_S, 0, fdiv>,
@@ -21,15 +32,16 @@ def FMUL_S_MM : MMRel, ADDS_FT<"mul.s",
def FSUB_S_MM : MMRel, ADDS_FT<"sub.s", FGR32Opnd, II_SUB_S, 0, fsub>,
ADDS_FM_MM<0, 0x70>, ISA_MICROMIPS;
-def FADD_MM : MMRel, ADDS_FT<"add.d", AFGR64Opnd, II_ADD_D, 1, fadd>,
- ADDS_FM_MM<1, 0x30>, ISA_MICROMIPS;
-def FDIV_MM : MMRel, ADDS_FT<"div.d", AFGR64Opnd, II_DIV_D, 0, fdiv>,
- ADDS_FM_MM<1, 0xf0>, ISA_MICROMIPS;
-def FMUL_MM : MMRel, ADDS_FT<"mul.d", AFGR64Opnd, II_MUL_D, 1, fmul>,
- ADDS_FM_MM<1, 0xb0>, ISA_MICROMIPS;
-def FSUB_MM : MMRel, ADDS_FT<"sub.d", AFGR64Opnd, II_SUB_D, 0, fsub>,
- ADDS_FM_MM<1, 0x70>, ISA_MICROMIPS;
+defm FADD : ADDS_MMM<"add.d", II_ADD_D, 1, fadd>,
+ ADDS_FM_MM<1, 0x30>, ISA_MICROMIPS;
+defm FDIV : ADDS_MMM<"div.d", II_DIV_D, 0, fdiv>,
+ ADDS_FM_MM<1, 0xf0>, ISA_MICROMIPS;
+defm FMUL : ADDS_MMM<"mul.d", II_MUL_D, 1, fmul>,
+ ADDS_FM_MM<1, 0xb0>, ISA_MICROMIPS;
+defm FSUB : ADDS_MMM<"sub.d", II_SUB_D, 0, fsub>,
+ ADDS_FM_MM<1, 0x70>, ISA_MICROMIPS;
+let isCodeGenOnly = 1 in {
def LWXC1_MM : MMRel, LWXC1_FT<"lwxc1", FGR32Opnd, II_LWXC1, load>,
LWXC1_FM_MM<0x48>, ISA_MICROMIPS32_NOT_MIPS32R6;
def SWXC1_MM : MMRel, SWXC1_FT<"swxc1", FGR32Opnd, II_SWXC1, store>,
@@ -76,8 +88,6 @@ def ROUND_W_S_MM : MMRel, StdMMR6Rel, AB
def CEIL_W_MM : MMRel, ABSS_FT<"ceil.w.d", FGR32Opnd, AFGR64Opnd, II_CEIL>,
ROUND_W_FM_MM<1, 0x6c>, ISA_MICROMIPS, FGR_32;
-def CVT_W_MM : MMRel, ABSS_FT<"cvt.w.d", FGR32Opnd, AFGR64Opnd, II_CVT>,
- ROUND_W_FM_MM<1, 0x24>, ISA_MICROMIPS, FGR_32;
def FLOOR_W_MM : MMRel, ABSS_FT<"floor.w.d", FGR32Opnd, AFGR64Opnd, II_FLOOR>,
ROUND_W_FM_MM<1, 0x2c>, ISA_MICROMIPS, FGR_32;
def ROUND_W_MM : MMRel, StdMMR6Rel, ABSS_FT<"round.w.d", FGR32Opnd, AFGR64Opnd,
@@ -91,6 +101,14 @@ def CVT_L_D64_MM : MMRel, ABSS_FT<"cvt.l
ROUND_W_FM_MM<1, 0x4>, ISA_MICROMIPS, FGR_64;
}
+let DecoderNamespace = "MicroMips" in {
+ def CVT_W_D32_MM : MMRel, ABSS_FT<"cvt.w.d", FGR32Opnd, AFGR64Opnd, II_CVT>,
+ ROUND_W_FM_MM<1, 0x24>, ISA_MICROMIPS, FGR_32;
+}
+let DecoderNamespace = "MicroMipsFP64" in {
+ def CVT_W_D64_MM : ABSS_FT<"cvt.w.d", FGR32Opnd, FGR64Opnd, II_CVT>,
+ ROUND_W_FM_MM<1, 0x24>, ISA_MICROMIPS, FGR_64;
+}
multiclass ABSS_MMM<string opstr, InstrItinClass Itin,
SDPatternOperator OpNode = null_frag> {
@@ -113,26 +131,39 @@ let DecoderNamespace = "MicroMips" in {
ABS_FM_MM<0, 0xd>, ISA_MICROMIPS;
}
-let isCodeGenOnly = 1 in {
def FMOV_S_MM : MMRel, ABSS_FT<"mov.s", FGR32Opnd, FGR32Opnd, II_MOV_S>,
ABS_FM_MM<0, 0x1>, ISA_MICROMIPS;
def FNEG_S_MM : MMRel, ABSS_FT<"neg.s", FGR32Opnd, FGR32Opnd, II_NEG, fneg>,
ABS_FM_MM<0, 0x2d>, ISA_MICROMIPS;
-def CVT_D_S_MM : MMRel, ABSS_FT<"cvt.d.s", AFGR64Opnd, FGR32Opnd, II_CVT>,
- ABS_FM_MM<0, 0x4d>, ISA_MICROMIPS, FGR_32;
-def CVT_D32_W_MM : MMRel, ABSS_FT<"cvt.d.w", AFGR64Opnd, FGR32Opnd, II_CVT>,
- ABS_FM_MM<1, 0x4d>, ISA_MICROMIPS, FGR_32;
-def CVT_S_D32_MM : MMRel, ABSS_FT<"cvt.s.d", FGR32Opnd, AFGR64Opnd, II_CVT>,
- ABS_FM_MM<0, 0x6d>, ISA_MICROMIPS, FGR_32;
+
+let DecoderNamespace = "MicroMips" in {
+ def CVT_D32_S_MM : MMRel, ABSS_FT<"cvt.d.s", AFGR64Opnd, FGR32Opnd, II_CVT>,
+ ABS_FM_MM<0, 0x4d>, ISA_MICROMIPS, FGR_32;
+ def CVT_D32_W_MM : MMRel, ABSS_FT<"cvt.d.w", AFGR64Opnd, FGR32Opnd, II_CVT>,
+ ABS_FM_MM<1, 0x4d>, ISA_MICROMIPS, FGR_32;
+}
+
+let DecoderNamespace = "MicroMipsFP64" in {
+ def CVT_D64_S_MM : ABSS_FT<"cvt.d.s", FGR64Opnd, FGR32Opnd, II_CVT>,
+ ABS_FM_MM<0, 0x4d>, ISA_MICROMIPS, FGR_64;
+ def CVT_D64_W_MM : ABSS_FT<"cvt.d.w", FGR64Opnd, FGR32Opnd, II_CVT>,
+ ABS_FM_MM<1, 0x4d>, ISA_MICROMIPS, FGR_64;
+ def CVT_S_D64_MM : ABSS_FT<"cvt.s.d", FGR32Opnd, FGR64Opnd, II_CVT>,
+ ABS_FM_MM<0, 0x6d>, ISA_MICROMIPS, FGR_64;
+}
+
+let DecoderNamespace = "MicroMips" in {
+ def CVT_S_D32_MM : MMRel, ABSS_FT<"cvt.s.d", FGR32Opnd, AFGR64Opnd, II_CVT>,
+ ABS_FM_MM<0, 0x6d>, ISA_MICROMIPS, FGR_32;
+}
+
def CVT_S_W_MM : MMRel, ABSS_FT<"cvt.s.w", FGR32Opnd, FGR32Opnd, II_CVT>,
ABS_FM_MM<1, 0x6d>, ISA_MICROMIPS;
-def FNEG_MM : MMRel, ABSS_FT<"neg.d", AFGR64Opnd, AFGR64Opnd, II_NEG, fneg>,
- ABS_FM_MM<1, 0x2d>, ISA_MICROMIPS, FGR_32;
-
-def FMOV_D32_MM : MMRel, ABSS_FT<"mov.d", AFGR64Opnd, AFGR64Opnd, II_MOV_D>,
- ABS_FM_MM<1, 0x1>, ISA_MICROMIPS, FGR_32;
+defm FNEG : ABSS_MMM<"neg.d", II_NEG, fneg>, ABS_FM_MM<1, 0x2d>;
+defm FMOV : ABSS_MMM<"mov.d", II_MOV_D>, ABS_FM_MM<1, 0x1>;
+let isCodeGenOnly = 1 in {
def MOVZ_I_S_MM : MMRel, CMov_I_F_FT<"movz.s", GPR32Opnd, FGR32Opnd,
II_MOVZ_S>, CMov_I_F_FM_MM<0x78, 0>,
ISA_MICROMIPS32_NOT_MIPS32R6;
@@ -196,10 +227,20 @@ def FSQRT_S_MM : MMRel, ABSS_FT<"sqrt.s"
fsqrt>, ROUND_W_FM_MM<0, 0x28>, ISA_MICROMIPS {
string DecoderNamespace = "MicroMips";
}
-def MTHC1_MM : MMRel, MTC1_64_FT<"mthc1", AFGR64Opnd, GPR32Opnd, II_MTHC1>,
- MFC1_FM_MM<0xe0>, ISA_MICROMIPS, FGR_32;
-def MFHC1_MM : MMRel, MFC1_FT<"mfhc1", GPR32Opnd, AFGR64Opnd, II_MFHC1>,
- MFC1_FM_MM<0xc0>, ISA_MICROMIPS, FGR_32;
+
+let DecoderNamespace = "MicroMips" in {
+ def MTHC1_D32_MM : MMRel, MTC1_64_FT<"mthc1", AFGR64Opnd, GPR32Opnd, II_MTHC1>,
+ MFC1_FM_MM<0xe0>, ISA_MICROMIPS, FGR_32;
+ def MFHC1_D32_MM : MMRel, MFC1_FT<"mfhc1", GPR32Opnd, AFGR64Opnd, II_MFHC1>,
+ MFC1_FM_MM<0xc0>, ISA_MICROMIPS, FGR_32;
+}
+
+let DecoderNamespace = "MicroMipsFP64" in {
+ def MTHC1_D64_MM : MTC1_64_FT<"mthc1", FGR64Opnd, GPR32Opnd, II_MTHC1>,
+ MFC1_FM_MM<0xe0>, ISA_MICROMIPS, FGR_64;
+ def MFHC1_D64_MM : MFC1_FT<"mfhc1", GPR32Opnd, FGR64Opnd, II_MFHC1>,
+ MFC1_FM_MM<0xc0>, ISA_MICROMIPS, FGR_64;
+}
let DecoderNamespace = "MicroMips" in {
def CFC1_MM : MMRel, MFC1_FT<"cfc1", GPR32Opnd, CCROpnd, II_CFC1>,
@@ -358,3 +399,12 @@ let AddedComplexity = 40 in {
def : LoadRegImmPat<LWC1_MM, f32, load>, ISA_MICROMIPS;
def : StoreRegImmPat<SWC1_MM, f32>, ISA_MICROMIPS;
}
+
+ def : MipsPat<(f32 (fpround FGR64Opnd:$src)),
+ (CVT_S_D64_MM FGR64Opnd:$src)>, ISA_MICROMIPS, FGR_64;
+ def : MipsPat<(f64 (fpextend FGR32Opnd:$src)),
+ (CVT_D64_S_MM FGR32Opnd:$src)>, ISA_MICROMIPS, FGR_64;
+ def : MipsPat<(f32 (fpround AFGR64Opnd:$src)),
+ (CVT_S_D32_MM AFGR64Opnd:$src)>, ISA_MICROMIPS, FGR_32;
+ def : MipsPat<(f64 (fpextend FGR32Opnd:$src)),
+ (CVT_D32_S_MM FGR32Opnd:$src)>, ISA_MICROMIPS, FGR_32;
Modified: llvm/trunk/lib/Target/Mips/MicroMipsInstrFormats.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MicroMipsInstrFormats.td?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MicroMipsInstrFormats.td (original)
+++ llvm/trunk/lib/Target/Mips/MicroMipsInstrFormats.td Thu Feb 8 01:25:17 2018
@@ -730,7 +730,6 @@ class ADDS_FM_MM<bits<2> fmt, bits<8> fu
let Inst{9-8} = fmt;
let Inst{7-0} = funct;
- list<dag> Pattern = [];
}
class LWXC1_FM_MM<bits<9> funct> : MMArch {
Modified: llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp Thu Feb 8 01:25:17 2018
@@ -108,6 +108,11 @@ static bool isShiftedMask(uint64_t I, ui
return true;
}
+void MipsTargetLowering::finalizeLowering(MachineFunction &MF) const {
+ MF.getFrameInfo().computeMaxCallFrameSize(MF);
+ TargetLoweringBase::finalizeLowering(MF);
+}
+
// The MIPS MSA ABI passes vector arguments in the integer register set.
// The number of integer registers used is dependant on the ABI used.
MVT MipsTargetLowering::getRegisterTypeForCallingConv(MVT VT) const {
Modified: llvm/trunk/lib/Target/Mips/MipsISelLowering.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsISelLowering.h?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsISelLowering.h (original)
+++ llvm/trunk/lib/Target/Mips/MipsISelLowering.h Thu Feb 8 01:25:17 2018
@@ -370,6 +370,8 @@ class TargetRegisterClass;
bool isJumpTableRelative() const override {
return getTargetMachine().isPositionIndependent();
}
+
+ void finalizeLowering(MachineFunction &MF) const override;
protected:
SDValue getGlobalReg(SelectionDAG &DAG, EVT Ty) const;
Modified: llvm/trunk/lib/Target/Mips/MipsInstrFPU.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsInstrFPU.td?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsInstrFPU.td (original)
+++ llvm/trunk/lib/Target/Mips/MipsInstrFPU.td Thu Feb 8 01:25:17 2018
@@ -364,7 +364,9 @@ def CVT_W_S : MMRel, ABSS_FT<"cvt.w.s
defm TRUNC_W : ROUND_M<"trunc.w.d", II_TRUNC>, ABSS_FM<0xd, 17>, ISA_MIPS2;
defm CEIL_W : ROUND_M<"ceil.w.d", II_CEIL>, ABSS_FM<0xe, 17>, ISA_MIPS2;
defm FLOOR_W : ROUND_M<"floor.w.d", II_FLOOR>, ABSS_FM<0xf, 17>, ISA_MIPS2;
-defm CVT_W : ROUND_M<"cvt.w.d", II_CVT>, ABSS_FM<0x24, 17>;
+let AdditionalPredicates = [NotInMicroMips] in {
+ defm CVT_W : ROUND_M<"cvt.w.d", II_CVT>, ABSS_FM<0x24, 17>;
+}
let AdditionalPredicates = [NotInMicroMips] in {
def RECIP_S : MMRel, ABSS_FT<"recip.s", FGR32Opnd, FGR32Opnd, II_RECIP_S>,
@@ -418,24 +420,26 @@ let AdditionalPredicates = [NotInMicroMi
ABSS_FM<0x25, 17>, INSN_MIPS3_32R2;
}
-def CVT_S_D32 : MMRel, ABSS_FT<"cvt.s.d", FGR32Opnd, AFGR64Opnd, II_CVT>,
- ABSS_FM<0x20, 17>, FGR_32;
+let AdditionalPredicates = [NotInMicroMips] in {
+ def CVT_S_D32 : MMRel, ABSS_FT<"cvt.s.d", FGR32Opnd, AFGR64Opnd, II_CVT>,
+ ABSS_FM<0x20, 17>, FGR_32;
+ def CVT_D32_S : MMRel, ABSS_FT<"cvt.d.s", AFGR64Opnd, FGR32Opnd, II_CVT>,
+ ABSS_FM<0x21, 16>, FGR_32;
+}
def CVT_D32_W : MMRel, ABSS_FT<"cvt.d.w", AFGR64Opnd, FGR32Opnd, II_CVT>,
ABSS_FM<0x21, 20>, FGR_32;
-def CVT_D32_S : MMRel, ABSS_FT<"cvt.d.s", AFGR64Opnd, FGR32Opnd, II_CVT>,
- ABSS_FM<0x21, 16>, FGR_32;
let DecoderNamespace = "MipsFP64" in {
- def CVT_S_D64 : ABSS_FT<"cvt.s.d", FGR32Opnd, FGR64Opnd, II_CVT>,
- ABSS_FM<0x20, 17>, FGR_64;
- let AdditionalPredicates = [NotInMicroMips] in{
+ let AdditionalPredicates = [NotInMicroMips] in {
def CVT_S_L : ABSS_FT<"cvt.s.l", FGR32Opnd, FGR64Opnd, II_CVT>,
ABSS_FM<0x20, 21>, FGR_64;
+ def CVT_S_D64 : ABSS_FT<"cvt.s.d", FGR32Opnd, FGR64Opnd, II_CVT>,
+ ABSS_FM<0x20, 17>, FGR_64;
+ def CVT_D64_W : ABSS_FT<"cvt.d.w", FGR64Opnd, FGR32Opnd, II_CVT>,
+ ABSS_FM<0x21, 20>, FGR_64;
+ def CVT_D64_S : ABSS_FT<"cvt.d.s", FGR64Opnd, FGR32Opnd, II_CVT>,
+ ABSS_FM<0x21, 16>, FGR_64;
}
- def CVT_D64_W : ABSS_FT<"cvt.d.w", FGR64Opnd, FGR32Opnd, II_CVT>,
- ABSS_FM<0x21, 20>, FGR_64;
- def CVT_D64_S : ABSS_FT<"cvt.d.s", FGR64Opnd, FGR32Opnd, II_CVT>,
- ABSS_FM<0x21, 16>, FGR_64;
def CVT_D64_L : ABSS_FT<"cvt.d.l", FGR64Opnd, FGR64Opnd, II_CVT>,
ABSS_FM<0x21, 21>, FGR_64;
}
@@ -456,7 +460,9 @@ let AdditionalPredicates = [NotInMicroMi
def FNEG_S : MMRel, ABSS_FT<"neg.s", FGR32Opnd, FGR32Opnd, II_NEG, fneg>,
ABSS_FM<0x7, 16>;
-defm FNEG : ABSS_M<"neg.d", II_NEG, fneg>, ABSS_FM<0x7, 17>;
+let AdditionalPredicates = [NotInMicroMips] in {
+ defm FNEG : ABSS_M<"neg.d", II_NEG, fneg>, ABSS_FM<0x7, 17>;
+}
let AdditionalPredicates = [NotInMicroMips] in {
def FSQRT_S : MMRel, StdMMR6Rel, ABSS_FT<"sqrt.s", FGR32Opnd, FGR32Opnd,
@@ -508,15 +514,14 @@ let AdditionalPredicates = [NotInMicroMi
bitconvert>, MFC1_FM<5>, ISA_MIPS3;
def DMFC1 : MFC1_FT<"dmfc1", GPR64Opnd, FGR64Opnd, II_DMFC1,
bitconvert>, MFC1_FM<1>, ISA_MIPS3;
-}
-
-def FMOV_S : MMRel, ABSS_FT<"mov.s", FGR32Opnd, FGR32Opnd, II_MOV_S>,
- ABSS_FM<0x6, 16>;
-def FMOV_D32 : MMRel, ABSS_FT<"mov.d", AFGR64Opnd, AFGR64Opnd, II_MOV_D>,
- ABSS_FM<0x6, 17>, FGR_32;
-def FMOV_D64 : ABSS_FT<"mov.d", FGR64Opnd, FGR64Opnd, II_MOV_D>,
- ABSS_FM<0x6, 17>, FGR_64 {
- let DecoderNamespace = "MipsFP64";
+ def FMOV_S : MMRel, ABSS_FT<"mov.s", FGR32Opnd, FGR32Opnd, II_MOV_S>,
+ ABSS_FM<0x6, 16>;
+ def FMOV_D32 : MMRel, ABSS_FT<"mov.d", AFGR64Opnd, AFGR64Opnd, II_MOV_D>,
+ ABSS_FM<0x6, 17>, FGR_32;
+ def FMOV_D64 : ABSS_FT<"mov.d", FGR64Opnd, FGR64Opnd, II_MOV_D>,
+ ABSS_FM<0x6, 17>, FGR_64 {
+ let DecoderNamespace = "MipsFP64";
+ }
}
/// Floating Point Memory Instructions
@@ -586,18 +591,20 @@ let DecoderNamespace="MipsFP64" in {
}
/// Floating-point Aritmetic
-def FADD_S : MMRel, ADDS_FT<"add.s", FGR32Opnd, II_ADD_S, 1, fadd>,
- ADDS_FM<0x00, 16>;
-defm FADD : ADDS_M<"add.d", II_ADD_D, 1, fadd>, ADDS_FM<0x00, 17>;
-def FDIV_S : MMRel, ADDS_FT<"div.s", FGR32Opnd, II_DIV_S, 0, fdiv>,
- ADDS_FM<0x03, 16>;
-defm FDIV : ADDS_M<"div.d", II_DIV_D, 0, fdiv>, ADDS_FM<0x03, 17>;
-def FMUL_S : MMRel, ADDS_FT<"mul.s", FGR32Opnd, II_MUL_S, 1, fmul>,
- ADDS_FM<0x02, 16>;
-defm FMUL : ADDS_M<"mul.d", II_MUL_D, 1, fmul>, ADDS_FM<0x02, 17>;
-def FSUB_S : MMRel, ADDS_FT<"sub.s", FGR32Opnd, II_SUB_S, 0, fsub>,
- ADDS_FM<0x01, 16>;
-defm FSUB : ADDS_M<"sub.d", II_SUB_D, 0, fsub>, ADDS_FM<0x01, 17>;
+let AdditionalPredicates = [NotInMicroMips] in {
+ def FADD_S : MMRel, ADDS_FT<"add.s", FGR32Opnd, II_ADD_S, 1, fadd>,
+ ADDS_FM<0x00, 16>;
+ defm FADD : ADDS_M<"add.d", II_ADD_D, 1, fadd>, ADDS_FM<0x00, 17>;
+ def FDIV_S : MMRel, ADDS_FT<"div.s", FGR32Opnd, II_DIV_S, 0, fdiv>,
+ ADDS_FM<0x03, 16>;
+ defm FDIV : ADDS_M<"div.d", II_DIV_D, 0, fdiv>, ADDS_FM<0x03, 17>;
+ def FMUL_S : MMRel, ADDS_FT<"mul.s", FGR32Opnd, II_MUL_S, 1, fmul>,
+ ADDS_FM<0x02, 16>;
+ defm FMUL : ADDS_M<"mul.d", II_MUL_D, 1, fmul>, ADDS_FM<0x02, 17>;
+ def FSUB_S : MMRel, ADDS_FT<"sub.s", FGR32Opnd, II_SUB_S, 0, fsub>,
+ ADDS_FM<0x01, 16>;
+ defm FSUB : ADDS_M<"sub.d", II_SUB_D, 0, fsub>, ADDS_FM<0x01, 17>;
+}
def MADD_S : MMRel, MADDS_FT<"madd.s", FGR32Opnd, II_MADD_S, fadd>,
MADDS_FM<4, 0>, INSN_MIPS4_32R2_NOT_32R6_64R6, MADD4;
@@ -861,10 +868,12 @@ def : MipsPat<(f64 (sint_to_fp GPR32Opnd
(PseudoCVT_D32_W GPR32Opnd:$src)>, FGR_32;
def : MipsPat<(MipsTruncIntFP AFGR64Opnd:$src),
(TRUNC_W_D32 AFGR64Opnd:$src)>, FGR_32;
-def : MipsPat<(f32 (fpround AFGR64Opnd:$src)),
- (CVT_S_D32 AFGR64Opnd:$src)>, FGR_32;
-def : MipsPat<(f64 (fpextend FGR32Opnd:$src)),
- (CVT_D32_S FGR32Opnd:$src)>, FGR_32;
+let AdditionalPredicates = [NotInMicroMips] in {
+ def : MipsPat<(f32 (fpround AFGR64Opnd:$src)),
+ (CVT_S_D32 AFGR64Opnd:$src)>, FGR_32;
+ def : MipsPat<(f64 (fpextend FGR32Opnd:$src)),
+ (CVT_D32_S FGR32Opnd:$src)>, FGR_32;
+}
def : MipsPat<(f64 fpimm0), (DMTC1 ZERO_64)>, FGR_64;
def : MipsPat<(f64 fpimm0neg), (FNEG_D64 (DMTC1 ZERO_64))>, FGR_64;
@@ -883,10 +892,12 @@ def : MipsPat<(MipsTruncIntFP FGR32Opnd:
def : MipsPat<(MipsTruncIntFP FGR64Opnd:$src),
(TRUNC_L_D64 FGR64Opnd:$src)>, FGR_64;
-def : MipsPat<(f32 (fpround FGR64Opnd:$src)),
- (CVT_S_D64 FGR64Opnd:$src)>, FGR_64;
-def : MipsPat<(f64 (fpextend FGR32Opnd:$src)),
- (CVT_D64_S FGR32Opnd:$src)>, FGR_64;
+let AdditionalPredicates = [NotInMicroMips] in {
+ def : MipsPat<(f32 (fpround FGR64Opnd:$src)),
+ (CVT_S_D64 FGR64Opnd:$src)>, FGR_64;
+ def : MipsPat<(f64 (fpextend FGR32Opnd:$src)),
+ (CVT_D64_S FGR32Opnd:$src)>, FGR_64;
+}
// To generate NMADD and NMSUB instructions when fneg node is present
multiclass NMADD_NMSUB<Instruction Nmadd, Instruction Nmsub, RegisterOperand RC> {
Modified: llvm/trunk/lib/Target/Mips/MipsRegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsRegisterInfo.cpp?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsRegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MipsRegisterInfo.cpp Thu Feb 8 01:25:17 2018
@@ -74,7 +74,9 @@ MipsRegisterInfo::getRegPressureLimit(co
case Mips::GPR64RegClassID:
case Mips::DSPRRegClassID: {
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
- return 28 - TFI->hasFP(MF);
+ bool HasFP = MF.getFrameInfo().isMaxCallFrameSizeComputed()
+ ? TFI->hasFP(MF) : true;
+ return 28 - HasFP;
}
case Mips::FGR32RegClassID:
return 32;
Modified: llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.cpp?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.cpp Thu Feb 8 01:25:17 2018
@@ -379,28 +379,30 @@ bool MipsSEInstrInfo::expandPostRAPseudo
expandCvtFPInt(MBB, MI, Mips::CVT_S_W, Mips::MTC1, false);
break;
case Mips::PseudoCVT_D32_W:
- expandCvtFPInt(MBB, MI, Mips::CVT_D32_W, Mips::MTC1, false);
+ Opc = isMicroMips ? Mips::CVT_D32_W_MM : Mips::CVT_D32_W;
+ expandCvtFPInt(MBB, MI, Opc, Mips::MTC1, false);
break;
case Mips::PseudoCVT_S_L:
expandCvtFPInt(MBB, MI, Mips::CVT_S_L, Mips::DMTC1, true);
break;
case Mips::PseudoCVT_D64_W:
- expandCvtFPInt(MBB, MI, Mips::CVT_D64_W, Mips::MTC1, true);
+ Opc = isMicroMips ? Mips::CVT_D64_W_MM : Mips::CVT_D64_W;
+ expandCvtFPInt(MBB, MI, Opc, Mips::MTC1, true);
break;
case Mips::PseudoCVT_D64_L:
expandCvtFPInt(MBB, MI, Mips::CVT_D64_L, Mips::DMTC1, true);
break;
case Mips::BuildPairF64:
- expandBuildPairF64(MBB, MI, false);
+ expandBuildPairF64(MBB, MI, isMicroMips, false);
break;
case Mips::BuildPairF64_64:
- expandBuildPairF64(MBB, MI, true);
+ expandBuildPairF64(MBB, MI, isMicroMips, true);
break;
case Mips::ExtractElementF64:
- expandExtractElementF64(MBB, MI, false);
+ expandExtractElementF64(MBB, MI, isMicroMips, false);
break;
case Mips::ExtractElementF64_64:
- expandExtractElementF64(MBB, MI, true);
+ expandExtractElementF64(MBB, MI, isMicroMips, true);
break;
case Mips::MIPSeh_return32:
case Mips::MIPSeh_return64:
@@ -651,6 +653,7 @@ void MipsSEInstrInfo::expandCvtFPInt(Mac
void MipsSEInstrInfo::expandExtractElementF64(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I,
+ bool isMicroMips,
bool FP64) const {
unsigned DstReg = I->getOperand(0).getReg();
unsigned SrcReg = I->getOperand(1).getReg();
@@ -682,7 +685,10 @@ void MipsSEInstrInfo::expandExtractEleme
// We therefore pretend that it reads the bottom 32-bits to
// artificially create a dependency and prevent the scheduler
// changing the behaviour of the code.
- BuildMI(MBB, I, dl, get(FP64 ? Mips::MFHC1_D64 : Mips::MFHC1_D32), DstReg)
+ BuildMI(MBB, I, dl,
+ get(isMicroMips ? (FP64 ? Mips::MFHC1_D64_MM : Mips::MFHC1_D32_MM)
+ : (FP64 ? Mips::MFHC1_D64 : Mips::MFHC1_D32)),
+ DstReg)
.addReg(SrcReg);
} else
BuildMI(MBB, I, dl, get(Mips::MFC1), DstReg).addReg(SubReg);
@@ -690,7 +696,7 @@ void MipsSEInstrInfo::expandExtractEleme
void MipsSEInstrInfo::expandBuildPairF64(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I,
- bool FP64) const {
+ bool isMicroMips, bool FP64) const {
unsigned DstReg = I->getOperand(0).getReg();
unsigned LoReg = I->getOperand(1).getReg(), HiReg = I->getOperand(2).getReg();
const MCInstrDesc& Mtc1Tdd = get(Mips::MTC1);
@@ -735,7 +741,10 @@ void MipsSEInstrInfo::expandBuildPairF64
// We therefore pretend that it reads the bottom 32-bits to
// artificially create a dependency and prevent the scheduler
// changing the behaviour of the code.
- BuildMI(MBB, I, dl, get(FP64 ? Mips::MTHC1_D64 : Mips::MTHC1_D32), DstReg)
+ BuildMI(MBB, I, dl,
+ get(isMicroMips ? (FP64 ? Mips::MTHC1_D64_MM : Mips::MTHC1_D32_MM)
+ : (FP64 ? Mips::MTHC1_D64 : Mips::MTHC1_D32)),
+ DstReg)
.addReg(DstReg)
.addReg(HiReg);
} else if (Subtarget.isABI_FPXX())
Modified: llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.h?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.h (original)
+++ llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.h Thu Feb 8 01:25:17 2018
@@ -107,9 +107,11 @@ private:
unsigned CvtOpc, unsigned MovOpc, bool IsI64) const;
void expandExtractElementF64(MachineBasicBlock &MBB,
- MachineBasicBlock::iterator I, bool FP64) const;
+ MachineBasicBlock::iterator I, bool isMicroMips,
+ bool FP64) const;
void expandBuildPairF64(MachineBasicBlock &MBB,
- MachineBasicBlock::iterator I, bool FP64) const;
+ MachineBasicBlock::iterator I, bool isMicroMips,
+ bool FP64) const;
void expandEhReturn(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I) const;
};
Added: llvm/trunk/test/CodeGen/Mips/llvm-ir/arith-fp.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/arith-fp.ll?rev=324584&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/arith-fp.ll (added)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/arith-fp.ll Thu Feb 8 01:25:17 2018
@@ -0,0 +1,55 @@
+; RUN: llc -march=mips -mcpu=mips32 -asm-show-inst < %s | FileCheck %s --check-prefix=MIPS32
+; RUN: llc -march=mips -mcpu=mips32r2 -mattr=+fp64 -asm-show-inst < %s | FileCheck %s --check-prefix=MIPS32FP64
+; RUN: llc -march=mips -mcpu=mips32r3 -mattr=+micromips -asm-show-inst < %s | FileCheck %s --check-prefix=MM
+; RUN: llc -march=mips -mcpu=mips32r3 -mattr=+micromips,+fp64 -asm-show-inst < %s | FileCheck %s --check-prefix=MMFP64
+; RUN: llc -march=mips -mcpu=mips32r6 -mattr=+micromips -asm-show-inst < %s | FileCheck %s --check-prefix=MMR6
+
+define double @add_d(double %a, double %b) {
+; MIPS32: add.d {{.*}} # <MCInst #{{[0-9]+}} FADD_D32
+; MIPS32FP64: add.d {{.*}} # <MCInst #{{[0-9]+}} FADD_D64
+; MM: add.d {{.*}} # <MCInst #{{[0-9]+}} FADD_D32_MM
+; MMFP64: add.d {{.*}} # <MCInst #{{[0-9]+}} FADD_D64_MM
+; MMR6: add.d {{.*}} # <MCInst #{{[0-9]+}} FADD_D64_MM
+ %1 = fadd double %a, %b
+ ret double %1
+}
+
+define double @sub_d(double %a, double %b) {
+; MIPS32: sub.d {{.*}} # <MCInst #{{[0-9]+}} FSUB_D32
+; MIPS32FP64: sub.d {{.*}} # <MCInst #{{[0-9]+}} FSUB_D64
+; MM: sub.d {{.*}} # <MCInst #{{[0-9]+}} FSUB_D32_MM
+; MMFP64: sub.d {{.*}} # <MCInst #{{[0-9]+}} FSUB_D64_MM
+; MMR6: sub.d {{.*}} # <MCInst #{{[0-9]+}} FSUB_D64_MM
+ %1 = fsub double %a, %b
+ ret double %1
+}
+
+define double @mul_d(double %a, double %b) {
+; MIPS32: mul.d {{.*}} # <MCInst #{{[0-9]+}} FMUL_D32
+; MIPS32FP64: mul.d {{.*}} # <MCInst #{{[0-9]+}} FMUL_D64
+; MM: mul.d {{.*}} # <MCInst #{{[0-9]+}} FMUL_D32_MM
+; MMFP64: mul.d {{.*}} # <MCInst #{{[0-9]+}} FMUL_D64_MM
+; MMR6: mul.d {{.*}} # <MCInst #{{[0-9]+}} FMUL_D64_MM
+ %1 = fmul double %a, %b
+ ret double %1
+}
+
+define double @div_d(double %a, double %b) {
+; MIPS32: div.d {{.*}} # <MCInst #{{[0-9]+}} FDIV_D32
+; MIPS32FP64: div.d {{.*}} # <MCInst #{{[0-9]+}} FDIV_D64
+; MM: div.d {{.*}} # <MCInst #{{[0-9]+}} FDIV_D32_MM
+; MMFP64: div.d {{.*}} # <MCInst #{{[0-9]+}} FDIV_D64_MM
+; MMR6: div.d {{.*}} # <MCInst #{{[0-9]+}} FDIV_D64_MM
+ %1 = fdiv double %a, %b
+ ret double %1
+}
+
+define double @fneg(double %a) {
+; MIPS32: neg.d {{.*}} # <MCInst #{{[0-9]+}} FNEG_D32
+; MIPS32FP64: neg.d {{.*}} # <MCInst #{{[0-9]+}} FNEG_D64
+; MM: neg.d {{.*}} # <MCInst #{{[0-9]+}} FNEG_D32_MM
+; MMFP64: neg.d {{.*}} # <MCInst #{{[0-9]+}} FNEG_D64_MM
+; MMR6: neg.d {{.*}} # <MCInst #{{[0-9]+}} FNEG_D64_MM
+ %1 = fsub double -0.000000e+00, %a
+ ret double %1
+}
Added: llvm/trunk/test/CodeGen/Mips/llvm-ir/bitcast.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/bitcast.ll?rev=324584&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/bitcast.ll (added)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/bitcast.ll Thu Feb 8 01:25:17 2018
@@ -0,0 +1,30 @@
+; RUN: llc -march=mips -mcpu=mips32r2 -asm-show-inst \
+; RUN: -mno-ldc1-sdc1 < %s | FileCheck %s --check-prefix=MIPS32R2
+; RUN: llc -march=mips -mcpu=mips32r2 -mattr=+fp64 -asm-show-inst \
+; RUN: -mno-ldc1-sdc1 < %s | FileCheck %s --check-prefix=MIPS32FP64
+; RUN: llc -march=mips -mcpu=mips32r3 -mattr=+micromips -asm-show-inst \
+; RUN: -mno-ldc1-sdc1 < %s | FileCheck %s --check-prefix=MM
+; RUN: llc -march=mips -mcpu=mips32r3 -mattr=+micromips,+fp64 -asm-show-inst \
+; RUN: -mno-ldc1-sdc1 < %s | FileCheck %s --check-prefix=MMFP64
+; RUN: llc -march=mips -mcpu=mips32r6 -mattr=+micromips -asm-show-inst \
+; RUN: -mno-ldc1-sdc1 < %s | FileCheck %s --check-prefix=MMR6
+
+define double @mthc1(i64 %a) {
+; MIPS32R2: mthc1 {{.*}} # <MCInst #{{[0-9]+}} MTHC1_D32
+; MIPS32FP64: mthc1 {{.*}} # <MCInst #{{[0-9]+}} MTHC1_D64
+; MM: mthc1 {{.*}} # <MCInst #{{[0-9]+}} MTHC1_D32_MM
+; MMFP64: mthc1 {{.*}} # <MCInst #{{[0-9]+}} MTHC1_D64_MM
+; MMR6: mthc1 {{.*}} # <MCInst #{{[0-9]+}} MTHC1_D64_MM
+ %1 = bitcast i64 %a to double
+ ret double %1
+}
+
+define i64 @mfhc1(double %a) {
+; MIPS32R2: mfhc1 {{.*}} # <MCInst #{{[0-9]+}} MFHC1_D32
+; MIPS32FP64: mfhc1 {{.*}} # <MCInst #{{[0-9]+}} MFHC1_D64
+; MM: mfhc1 {{.*}} # <MCInst #{{[0-9]+}} MFHC1_D32_MM
+; MMFP64: mfhc1 {{.*}} # <MCInst #{{[0-9]+}} MFHC1_D64_MM
+; MMR6: mfhc1 {{.*}} # <MCInst #{{[0-9]+}} MFHC1_D64_MM
+ %1 = bitcast double %a to i64
+ ret i64 %1
+}
Added: llvm/trunk/test/CodeGen/Mips/llvm-ir/cvt.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/cvt.ll?rev=324584&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/cvt.ll (added)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/cvt.ll Thu Feb 8 01:25:17 2018
@@ -0,0 +1,37 @@
+; RUN: llc -march=mips -mcpu=mips32 -asm-show-inst < %s | FileCheck %s --check-prefix=MIPS32
+; RUN: llc -march=mips -mcpu=mips32r2 -mattr=+fp64 -asm-show-inst < %s | FileCheck %s --check-prefix=MIPS32FP64
+; RUN: llc -march=mips -mcpu=mips32r3 -mattr=+micromips -asm-show-inst < %s | FileCheck %s --check-prefix=MM
+; RUN: llc -march=mips -mcpu=mips32r3 -mattr=+micromips,+fp64 -asm-show-inst < %s | FileCheck %s --check-prefix=MMFP64
+; RUN: llc -march=mips -mcpu=mips32r6 -mattr=+micromips -asm-show-inst < %s | FileCheck %s --check-prefix=MMR6
+
+; TODO: Test for cvt_w_d is missing, could not generate instruction
+
+define double @cvt_d_s(float %a) {
+; MIPS32: cvt.d.s {{.*}} # <MCInst #{{[0-9]+}} CVT_D32_S
+; MIPS32FP64: cvt.d.s {{.*}} # <MCInst #{{[0-9]+}} CVT_D64_S
+; MM: cvt.d.s {{.*}} # <MCInst #{{[0-9]+}} CVT_D32_S_MM
+; MMFP64: cvt.d.s {{.*}} # <MCInst #{{[0-9]+}} CVT_D64_S_MM
+; MMR6: cvt.d.s {{.*}} # <MCInst #{{[0-9]+}} CVT_D64_S_MM
+ %1 = fpext float %a to double
+ ret double %1
+}
+
+define double @cvt_d_w(i32 %a) {
+; MIPS32: cvt.d.w {{.*}} # <MCInst #{{[0-9]+}} CVT_D32_W
+; MIPS32FP64: cvt.d.w {{.*}} # <MCInst #{{[0-9]+}} CVT_D64_W
+; MM: cvt.d.w {{.*}} # <MCInst #{{[0-9]+}} CVT_D32_W_MM
+; MMFP64: cvt.d.w {{.*}} # <MCInst #{{[0-9]+}} CVT_D64_W_MM
+; MMR6: cvt.d.w {{.*}} # <MCInst #{{[0-9]+}} CVT_D64_W_MM
+ %1 = sitofp i32 %a to double
+ ret double %1
+}
+
+define float @cvt_s_d(double %a) {
+; MIPS32: cvt.s.d {{.*}} # <MCInst #{{[0-9]+}} CVT_S_D32
+; MIPS32FP64: cvt.s.d {{.*}} # <MCInst #{{[0-9]+}} CVT_S_D64
+; MM: cvt.s.d {{.*}} # <MCInst #{{[0-9]+}} CVT_S_D32_MM
+; MMFP64: cvt.s.d {{.*}} # <MCInst #{{[0-9]+}} CVT_S_D64_MM
+; MMR6: cvt.s.d {{.*}} # <MCInst #{{[0-9]+}} CVT_S_D64_MM
+ %1 = fptrunc double %a to float
+ ret float %1
+}
Added: llvm/trunk/test/CodeGen/Mips/maxcallframesize.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/maxcallframesize.ll?rev=324584&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/maxcallframesize.ll (added)
+++ llvm/trunk/test/CodeGen/Mips/maxcallframesize.ll Thu Feb 8 01:25:17 2018
@@ -0,0 +1,17 @@
+; RUN: llc < %s -mtriple=mips-unknown-linux -stop-before=prologepilog | FileCheck %s
+
+; Test that maxCallFrameSize is being computed early on.
+
+ at glob = external global i32*
+
+declare void @bar(i32*, [20000 x i8]* byval)
+
+define void @foo([20000 x i8]* %addr) {
+ %tmp = alloca [4 x i32], align 32
+ %tmp0 = getelementptr [4 x i32], [4 x i32]* %tmp, i32 0, i32 0
+ call void @bar(i32* %tmp0, [20000 x i8]* byval %addr)
+ ret void
+}
+
+; CHECK: adjustsStack: true
+; CHECK: maxCallFrameSize: 20008
Modified: llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-el.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-el.txt?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-el.txt (original)
+++ llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-el.txt Thu Feb 8 01:25:17 2018
@@ -208,3 +208,15 @@
0x0c 0x54 0x7b 0x03 # CHECK: abs.s $f0, $f12
0x0c 0x54 0x3b 0x4a # CHECK: sqrt.d $f0, $f12
0x0c 0x54 0x7b 0x23 # CHECK: abs.d $f0, $f12
+0x80 0x54 0x3b 0x38 # CHECK: mthc1 $4, $f0
+0x80 0x54 0x3b 0x30 # CHECK: mfhc1 $4, $f0
+0x82 0x54 0x30 0x01 # CHECK: add.d $f0, $f2, $f4
+0x82 0x54 0x70 0x01 # CHECK: sub.d $f0, $f2, $f4
+0x82 0x54 0xb0 0x01 # CHECK: mul.d $f0, $f2, $f4
+0x82 0x54 0xf0 0x01 # CHECK: div.d $f0, $f2, $f4
+0x02 0x54 0x7b 0x20 # CHECK: mov.d $f0, $f2
+0x02 0x54 0x7b 0x2b # CHECK: neg.d $f0, $f2
+0x02 0x54 0x3b 0x49 # CHECK: cvt.w.d $f0, $f2
+0x02 0x54 0x7b 0x13 # CHECK: cvt.d.s $f0, $f2
+0x02 0x54 0x7b 0x33 # CHECK: cvt.d.w $f0, $f2
+0x02 0x54 0x7b 0x1b # CHECK: cvt.s.d $f0, $f2
Modified: llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-fp64-el.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-fp64-el.txt?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-fp64-el.txt (original)
+++ llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-fp64-el.txt Thu Feb 8 01:25:17 2018
@@ -5,3 +5,15 @@
0x0c 0x54 0x7b 0x03 # CHECK: abs.s $f0, $f12
0x0c 0x54 0x3b 0x4a # CHECK: sqrt.d $f0, $f12
0x0c 0x54 0x7b 0x23 # CHECK: abs.d $f0, $f12
+0x80 0x54 0x3b 0x38 # CHECK: mthc1 $4, $f0
+0x80 0x54 0x3b 0x30 # CHECK: mfhc1 $4, $f0
+0x82 0x54 0x30 0x01 # CHECK: add.d $f0, $f2, $f4
+0x82 0x54 0x70 0x01 # CHECK: sub.d $f0, $f2, $f4
+0x82 0x54 0xb0 0x01 # CHECK: mul.d $f0, $f2, $f4
+0x82 0x54 0xf0 0x01 # CHECK: div.d $f0, $f2, $f4
+0x02 0x54 0x7b 0x20 # CHECK: mov.d $f0, $f2
+0x02 0x54 0x7b 0x2b # CHECK: neg.d $f0, $f2
+0x02 0x54 0x3b 0x49 # CHECK: cvt.w.d $f0, $f2
+0x02 0x54 0x7b 0x13 # CHECK: cvt.d.s $f0, $f2
+0x02 0x54 0x7b 0x33 # CHECK: cvt.d.w $f0, $f2
+0x02 0x54 0x7b 0x1b # CHECK: cvt.s.d $f0, $f2
Modified: llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-fp64.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-fp64.txt?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-fp64.txt (original)
+++ llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid-fp64.txt Thu Feb 8 01:25:17 2018
@@ -5,3 +5,15 @@
0x54 0x0c 0x03 0x7b # CHECK: abs.s $f0, $f12
0x54 0x0c 0x4a 0x3b # CHECK: sqrt.d $f0, $f12
0x54 0x0c 0x23 0x7b # CHECK: abs.d $f0, $f12
+0x54 0x80 0x38 0x3b # CHECK: mthc1 $4, $f0
+0x54 0x80 0x30 0x3b # CHECK: mfhc1 $4, $f0
+0x54 0x82 0x01 0x30 # CHECK: add.d $f0, $f2, $f4
+0x54 0x82 0x01 0x70 # CHECK: sub.d $f0, $f2, $f4
+0x54 0x82 0x01 0xb0 # CHECK: mul.d $f0, $f2, $f4
+0x54 0x82 0x01 0xf0 # CHECK: div.d $f0, $f2, $f4
+0x54 0x02 0x20 0x7b # CHECK: mov.d $f0, $f2
+0x54 0x02 0x2b 0x7b # CHECK: neg.d $f0, $f2
+0x54 0x02 0x49 0x3b # CHECK: cvt.w.d $f0, $f2
+0x54 0x02 0x13 0x7b # CHECK: cvt.d.s $f0, $f2
+0x54 0x02 0x33 0x7b # CHECK: cvt.d.w $f0, $f2
+0x54 0x02 0x1b 0x7b # CHECK: cvt.s.d $f0, $f2
Modified: llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid.txt?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid.txt (original)
+++ llvm/trunk/test/MC/Disassembler/Mips/micromips32r3/valid.txt Thu Feb 8 01:25:17 2018
@@ -212,3 +212,15 @@
0x54 0x0c 0x03 0x7b # CHECK: abs.s $f0, $f12
0x54 0x0c 0x4a 0x3b # CHECK: sqrt.d $f0, $f12
0x54 0x0c 0x23 0x7b # CHECK: abs.d $f0, $f12
+0x54 0x80 0x38 0x3b # CHECK: mthc1 $4, $f0
+0x54 0x80 0x30 0x3b # CHECK: mfhc1 $4, $f0
+0x54 0x82 0x01 0x30 # CHECK: add.d $f0, $f2, $f4
+0x54 0x82 0x01 0x70 # CHECK: sub.d $f0, $f2, $f4
+0x54 0x82 0x01 0xb0 # CHECK: mul.d $f0, $f2, $f4
+0x54 0x82 0x01 0xf0 # CHECK: div.d $f0, $f2, $f4
+0x54 0x02 0x20 0x7b # CHECK: mov.d $f0, $f2
+0x54 0x02 0x2b 0x7b # CHECK: neg.d $f0, $f2
+0x54 0x02 0x49 0x3b # CHECK: cvt.w.d $f0, $f2
+0x54 0x02 0x13 0x7b # CHECK: cvt.d.s $f0, $f2
+0x54 0x02 0x33 0x7b # CHECK: cvt.d.w $f0, $f2
+0x54 0x02 0x1b 0x7b # CHECK: cvt.s.d $f0, $f2
Modified: llvm/trunk/test/MC/Disassembler/Mips/mips32/valid-fp64-el.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/mips32/valid-fp64-el.txt?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/Mips/mips32/valid-fp64-el.txt (original)
+++ llvm/trunk/test/MC/Disassembler/Mips/mips32/valid-fp64-el.txt Thu Feb 8 01:25:17 2018
@@ -5,3 +5,13 @@
0x05 0x60 0x00 0x46 # CHECK: abs.s $f0, $f12
0x04 0x60 0x20 0x46 # CHECK: sqrt.d $f0, $f12
0x05 0x60 0x20 0x46 # CHECK: abs.d $f0, $f12
+0x00 0x10 0x24 0x46 # CHECK: add.d $f0, $f2, $f4
+0x01 0x10 0x24 0x46 # CHECK: sub.d $f0, $f2, $f4
+0x02 0x10 0x24 0x46 # CHECK: mul.d $f0, $f2, $f4
+0x03 0x10 0x24 0x46 # CHECK: div.d $f0, $f2, $f4
+0x06 0x10 0x20 0x46 # CHECK: mov.d $f0, $f2
+0x07 0x10 0x20 0x46 # CHECK: neg.d $f0, $f2
+0x24 0x10 0x20 0x46 # CHECK: cvt.w.d $f0, $f2
+0x21 0x10 0x00 0x46 # CHECK: cvt.d.s $f0, $f2
+0x21 0x10 0x80 0x46 # CHECK: cvt.d.w $f0, $f2
+0x20 0x10 0x20 0x46 # CHECK: cvt.s.d $f0, $f2
Modified: llvm/trunk/test/MC/Disassembler/Mips/mips32/valid-fp64.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/mips32/valid-fp64.txt?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/Mips/mips32/valid-fp64.txt (original)
+++ llvm/trunk/test/MC/Disassembler/Mips/mips32/valid-fp64.txt Thu Feb 8 01:25:17 2018
@@ -5,3 +5,13 @@
0x46 0x00 0x60 0x05 # CHECK: abs.s $f0, $f12
0x46 0x20 0x60 0x04 # CHECK: sqrt.d $f0, $f12
0x46 0x20 0x60 0x05 # CHECK: abs.d $f0, $f12
+0x46 0x24 0x10 0x00 # CHECK: add.d $f0, $f2, $f4
+0x46 0x24 0x10 0x01 # CHECK: sub.d $f0, $f2, $f4
+0x46 0x24 0x10 0x02 # CHECK: mul.d $f0, $f2, $f4
+0x46 0x24 0x10 0x03 # CHECK: div.d $f0, $f2, $f4
+0x46 0x20 0x10 0x06 # CHECK: mov.d $f0, $f2
+0x46 0x20 0x10 0x07 # CHECK: neg.d $f0, $f2
+0x46 0x20 0x10 0x24 # CHECK: cvt.w.d $f0, $f2
+0x46 0x00 0x10 0x21 # CHECK: cvt.d.s $f0, $f2
+0x46 0x80 0x10 0x21 # CHECK: cvt.d.w $f0, $f2
+0x46 0x20 0x10 0x20 # CHECK: cvt.s.d $f0, $f2
Modified: llvm/trunk/test/MC/Disassembler/Mips/mips32r2/valid-fp64-el.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/mips32r2/valid-fp64-el.txt?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/Mips/mips32r2/valid-fp64-el.txt (original)
+++ llvm/trunk/test/MC/Disassembler/Mips/mips32r2/valid-fp64-el.txt Thu Feb 8 01:25:17 2018
@@ -5,3 +5,15 @@
0x05 0x60 0x00 0x46 # CHECK: abs.s $f0, $f12
0x04 0x60 0x20 0x46 # CHECK: sqrt.d $f0, $f12
0x05 0x60 0x20 0x46 # CHECK: abs.d $f0, $f12
+0x00 0x10 0x24 0x46 # CHECK: add.d $f0, $f2, $f4
+0x01 0x10 0x24 0x46 # CHECK: sub.d $f0, $f2, $f4
+0x02 0x10 0x24 0x46 # CHECK: mul.d $f0, $f2, $f4
+0x03 0x10 0x24 0x46 # CHECK: div.d $f0, $f2, $f4
+0x06 0x10 0x20 0x46 # CHECK: mov.d $f0, $f2
+0x07 0x10 0x20 0x46 # CHECK: neg.d $f0, $f2
+0x24 0x10 0x20 0x46 # CHECK: cvt.w.d $f0, $f2
+0x21 0x10 0x00 0x46 # CHECK: cvt.d.s $f0, $f2
+0x21 0x10 0x80 0x46 # CHECK: cvt.d.w $f0, $f2
+0x20 0x10 0x20 0x46 # CHECK: cvt.s.d $f0, $f2
+0x00 0x00 0xe4 0x44 # CHECK: mthc1 $4, $f0
+0x00 0x00 0x64 0x44 # CHECK: mfhc1 $4, $f0
Modified: llvm/trunk/test/MC/Disassembler/Mips/mips32r2/valid-fp64.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/mips32r2/valid-fp64.txt?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/Mips/mips32r2/valid-fp64.txt (original)
+++ llvm/trunk/test/MC/Disassembler/Mips/mips32r2/valid-fp64.txt Thu Feb 8 01:25:17 2018
@@ -5,3 +5,15 @@
0x46 0x00 0x60 0x05 # CHECK: abs.s $f0, $f12
0x46 0x20 0x60 0x04 # CHECK: sqrt.d $f0, $f12
0x46 0x20 0x60 0x05 # CHECK: abs.d $f0, $f12
+0x46 0x24 0x10 0x00 # CHECK: add.d $f0, $f2, $f4
+0x46 0x24 0x10 0x01 # CHECK: sub.d $f0, $f2, $f4
+0x46 0x24 0x10 0x02 # CHECK: mul.d $f0, $f2, $f4
+0x46 0x24 0x10 0x03 # CHECK: div.d $f0, $f2, $f4
+0x46 0x20 0x10 0x06 # CHECK: mov.d $f0, $f2
+0x46 0x20 0x10 0x07 # CHECK: neg.d $f0, $f2
+0x46 0x20 0x10 0x24 # CHECK: cvt.w.d $f0, $f2
+0x46 0x00 0x10 0x21 # CHECK: cvt.d.s $f0, $f2
+0x46 0x80 0x10 0x21 # CHECK: cvt.d.w $f0, $f2
+0x46 0x20 0x10 0x20 # CHECK: cvt.s.d $f0, $f2
+0x44 0xe4 0x00 0x00 # CHECK: mthc1 $4, $f0
+0x44 0x64 0x00 0x00 # CHECK: mfhc1 $4, $f0
Modified: llvm/trunk/test/MC/Disassembler/Mips/mips32r3/valid-fp64-el.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/mips32r3/valid-fp64-el.txt?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/Mips/mips32r3/valid-fp64-el.txt (original)
+++ llvm/trunk/test/MC/Disassembler/Mips/mips32r3/valid-fp64-el.txt Thu Feb 8 01:25:17 2018
@@ -5,3 +5,15 @@
0x05 0x60 0x00 0x46 # CHECK: abs.s $f0, $f12
0x04 0x60 0x20 0x46 # CHECK: sqrt.d $f0, $f12
0x05 0x60 0x20 0x46 # CHECK: abs.d $f0, $f12
+0x00 0x10 0x24 0x46 # CHECK: add.d $f0, $f2, $f4
+0x01 0x10 0x24 0x46 # CHECK: sub.d $f0, $f2, $f4
+0x02 0x10 0x24 0x46 # CHECK: mul.d $f0, $f2, $f4
+0x03 0x10 0x24 0x46 # CHECK: div.d $f0, $f2, $f4
+0x06 0x10 0x20 0x46 # CHECK: mov.d $f0, $f2
+0x07 0x10 0x20 0x46 # CHECK: neg.d $f0, $f2
+0x24 0x10 0x20 0x46 # CHECK: cvt.w.d $f0, $f2
+0x21 0x10 0x00 0x46 # CHECK: cvt.d.s $f0, $f2
+0x21 0x10 0x80 0x46 # CHECK: cvt.d.w $f0, $f2
+0x20 0x10 0x20 0x46 # CHECK: cvt.s.d $f0, $f2
+0x00 0x00 0xe4 0x44 # CHECK: mthc1 $4, $f0
+0x00 0x00 0x64 0x44 # CHECK: mfhc1 $4, $f0
Modified: llvm/trunk/test/MC/Disassembler/Mips/mips32r3/valid-fp64.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/mips32r3/valid-fp64.txt?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/Mips/mips32r3/valid-fp64.txt (original)
+++ llvm/trunk/test/MC/Disassembler/Mips/mips32r3/valid-fp64.txt Thu Feb 8 01:25:17 2018
@@ -5,3 +5,15 @@
0x46 0x00 0x60 0x05 # CHECK: abs.s $f0, $f12
0x46 0x20 0x60 0x04 # CHECK: sqrt.d $f0, $f12
0x46 0x20 0x60 0x05 # CHECK: abs.d $f0, $f12
+0x46 0x24 0x10 0x00 # CHECK: add.d $f0, $f2, $f4
+0x46 0x24 0x10 0x01 # CHECK: sub.d $f0, $f2, $f4
+0x46 0x24 0x10 0x02 # CHECK: mul.d $f0, $f2, $f4
+0x46 0x24 0x10 0x03 # CHECK: div.d $f0, $f2, $f4
+0x46 0x20 0x10 0x06 # CHECK: mov.d $f0, $f2
+0x46 0x20 0x10 0x07 # CHECK: neg.d $f0, $f2
+0x46 0x20 0x10 0x24 # CHECK: cvt.w.d $f0, $f2
+0x46 0x00 0x10 0x21 # CHECK: cvt.d.s $f0, $f2
+0x46 0x80 0x10 0x21 # CHECK: cvt.d.w $f0, $f2
+0x46 0x20 0x10 0x20 # CHECK: cvt.s.d $f0, $f2
+0x44 0xe4 0x00 0x00 # CHECK: mthc1 $4, $f0
+0x44 0x64 0x00 0x00 # CHECK: mfhc1 $4, $f0
Modified: llvm/trunk/test/MC/Disassembler/Mips/mips32r5/valid-fp64-el.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/mips32r5/valid-fp64-el.txt?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/Mips/mips32r5/valid-fp64-el.txt (original)
+++ llvm/trunk/test/MC/Disassembler/Mips/mips32r5/valid-fp64-el.txt Thu Feb 8 01:25:17 2018
@@ -5,3 +5,15 @@
0x05 0x60 0x00 0x46 # CHECK: abs.s $f0, $f12
0x04 0x60 0x20 0x46 # CHECK: sqrt.d $f0, $f12
0x05 0x60 0x20 0x46 # CHECK: abs.d $f0, $f12
+0x00 0x10 0x24 0x46 # CHECK: add.d $f0, $f2, $f4
+0x01 0x10 0x24 0x46 # CHECK: sub.d $f0, $f2, $f4
+0x02 0x10 0x24 0x46 # CHECK: mul.d $f0, $f2, $f4
+0x03 0x10 0x24 0x46 # CHECK: div.d $f0, $f2, $f4
+0x06 0x10 0x20 0x46 # CHECK: mov.d $f0, $f2
+0x07 0x10 0x20 0x46 # CHECK: neg.d $f0, $f2
+0x24 0x10 0x20 0x46 # CHECK: cvt.w.d $f0, $f2
+0x21 0x10 0x00 0x46 # CHECK: cvt.d.s $f0, $f2
+0x21 0x10 0x80 0x46 # CHECK: cvt.d.w $f0, $f2
+0x20 0x10 0x20 0x46 # CHECK: cvt.s.d $f0, $f2
+0x00 0x00 0xe4 0x44 # CHECK: mthc1 $4, $f0
+0x00 0x00 0x64 0x44 # CHECK: mfhc1 $4, $f0
Modified: llvm/trunk/test/MC/Disassembler/Mips/mips32r5/valid-fp64.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/mips32r5/valid-fp64.txt?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/Mips/mips32r5/valid-fp64.txt (original)
+++ llvm/trunk/test/MC/Disassembler/Mips/mips32r5/valid-fp64.txt Thu Feb 8 01:25:17 2018
@@ -5,3 +5,15 @@
0x46 0x00 0x60 0x05 # CHECK: abs.s $f0, $f12
0x46 0x20 0x60 0x04 # CHECK: sqrt.d $f0, $f12
0x46 0x20 0x60 0x05 # CHECK: abs.d $f0, $f12
+0x46 0x24 0x10 0x00 # CHECK: add.d $f0, $f2, $f4
+0x46 0x24 0x10 0x01 # CHECK: sub.d $f0, $f2, $f4
+0x46 0x24 0x10 0x02 # CHECK: mul.d $f0, $f2, $f4
+0x46 0x24 0x10 0x03 # CHECK: div.d $f0, $f2, $f4
+0x46 0x20 0x10 0x06 # CHECK: mov.d $f0, $f2
+0x46 0x20 0x10 0x07 # CHECK: neg.d $f0, $f2
+0x46 0x20 0x10 0x24 # CHECK: cvt.w.d $f0, $f2
+0x46 0x00 0x10 0x21 # CHECK: cvt.d.s $f0, $f2
+0x46 0x80 0x10 0x21 # CHECK: cvt.d.w $f0, $f2
+0x46 0x20 0x10 0x20 # CHECK: cvt.s.d $f0, $f2
+0x44 0xe4 0x00 0x00 # CHECK: mthc1 $4, $f0
+0x44 0x64 0x00 0x00 # CHECK: mfhc1 $4, $f0
Modified: llvm/trunk/test/MC/Mips/micromips/valid-fp64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/micromips/valid-fp64.s?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/micromips/valid-fp64.s (original)
+++ llvm/trunk/test/MC/Mips/micromips/valid-fp64.s Thu Feb 8 01:25:17 2018
@@ -1,11 +1,35 @@
# RUN: llvm-mc -arch=mips -mcpu=mips32r3 -mattr=+micromips,+fp64 -show-encoding -show-inst %s \
# RUN: | FileCheck %s
-abs.s $f0, $f12 # CHECK: abs.s $f0, $f12 # encoding: [0x54,0x0c,0x03,0x7b]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_S_MM
-abs.d $f0, $f12 # CHECK: abs.d $f0, $f12 # encoding: [0x54,0x0c,0x23,0x7b]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_D64_MM
-sqrt.s $f0, $f12 # CHECK: sqrt.s $f0, $f12 # encoding: [0x54,0x0c,0x0a,0x3b]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_S_MM
-sqrt.d $f0, $f12 # CHECK: sqrt.d $f0, $f12 # encoding: [0x54,0x0c,0x4a,0x3b]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_D64_MM
+abs.d $f0, $f12 # CHECK: abs.d $f0, $f12 # encoding: [0x54,0x0c,0x23,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_D64_MM
+abs.s $f0, $f12 # CHECK: abs.s $f0, $f12 # encoding: [0x54,0x0c,0x03,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_S_MM
+add.d $f0, $f2, $f4 # CHECK: add.d $f0, $f2, $f4 # encoding: [0x54,0x82,0x01,0x30]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FADD_D64_MM
+cvt.d.s $f0, $f2 # CHECK: cvt.d.s $f0, $f2 # encoding: [0x54,0x02,0x13,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_D64_S_MM
+cvt.d.w $f0, $f2 # CHECK: cvt.d.w $f0, $f2 # encoding: [0x54,0x02,0x33,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_D64_W_MM
+cvt.s.d $f0, $f2 # CHECK: cvt.s.d $f0, $f2 # encoding: [0x54,0x02,0x1b,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_S_D64_MM
+cvt.w.d $f0, $f2 # CHECK: cvt.w.d $f0, $f2 # encoding: [0x54,0x02,0x49,0x3b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_W_D64_MM
+div.d $f0, $f2, $f4 # CHECK: div.d $f0, $f2, $f4 # encoding: [0x54,0x82,0x01,0xf0]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FDIV_D64_MM
+mfhc1 $4, $f0 # CHECK: mfhc1 $4, $f0 # encoding: [0x54,0x80,0x30,0x3b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} MFHC1_D64_MM
+mov.d $f0, $f2 # CHECK: mov.d $f0, $f2 # encoding: [0x54,0x02,0x20,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FMOV_D64_MM
+mthc1 $4, $f0 # CHECK: mthc1 $4, $f0 # encoding: [0x54,0x80,0x38,0x3b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} MTHC1_D64_MM
+mul.d $f0, $f2, $f4 # CHECK: mul.d $f0, $f2, $f4 # encoding: [0x54,0x82,0x01,0xb0]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FMUL_D64_MM
+neg.d $f0, $f2 # CHECK: neg.d $f0, $f2 # encoding: [0x54,0x02,0x2b,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FNEG_D64_MM
+sqrt.d $f0, $f12 # CHECK: sqrt.d $f0, $f12 # encoding: [0x54,0x0c,0x4a,0x3b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_D64_MM
+sqrt.s $f0, $f12 # CHECK: sqrt.s $f0, $f12 # encoding: [0x54,0x0c,0x0a,0x3b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_S_MM
+sub.d $f0, $f2, $f4 # CHECK: sub.d $f0, $f2, $f4 # encoding: [0x54,0x82,0x01,0x70]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSUB_D64_MM
Modified: llvm/trunk/test/MC/Mips/micromips/valid.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/micromips/valid.s?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/micromips/valid.s (original)
+++ llvm/trunk/test/MC/Mips/micromips/valid.s Thu Feb 8 01:25:17 2018
@@ -58,6 +58,8 @@ sqrt.s $f0, $f12 # CHECK: sq
sqrt.d $f0, $f12 # CHECK: sqrt.d $f0, $f12 # encoding: [0x54,0x0c,0x4a,0x3b]
# CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_D32_MM
add $9, $6, $7 # CHECK: add $9, $6, $7 # encoding: [0x00,0xe6,0x49,0x10]
+add.d $f0, $f2, $f4 # CHECK: add.d $f0, $f2, $f4 # encoding: [0x54,0x82,0x01,0x30]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FADD_D32_MM
addi $9, $6, 17767 # CHECK: addi $9, $6, 17767 # encoding: [0x11,0x26,0x45,0x67]
addiu $9, $6, -15001 # CHECK: addiu $9, $6, -15001 # encoding: [0x31,0x26,0xc5,0x67]
addi $9, $6, 17767 # CHECK: addi $9, $6, 17767 # encoding: [0x11,0x26,0x45,0x67]
@@ -66,6 +68,8 @@ addu $9, $6, $7 # CHECK: add
sub $9, $6, $7 # CHECK: sub $9, $6, $7 # encoding: [0x00,0xe6,0x49,0x90]
subu $4, $3, $5 # CHECK: subu $4, $3, $5 # encoding: [0x00,0xa3,0x21,0xd0]
sub $6, $zero, $7 # CHECK: neg $6, $7 # encoding: [0x00,0xe0,0x31,0x90]
+sub.d $f0, $f2, $f4 # CHECK: sub.d $f0, $f2, $f4 # encoding: [0x54,0x82,0x01,0x70]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSUB_D32_MM
subu $6, $zero, $7 # CHECK: subu $6, $zero, $7 # encoding: [0x00,0xe0,0x31,0xd0]
addu $7, $8, $zero # CHECK: addu $7, $8, $zero # encoding: [0x00,0x08,0x39,0x50]
slt $3, $3, $5 # CHECK: slt $3, $3, $5 # encoding: [0x00,0xa3,0x1b,0x50]
@@ -84,9 +88,13 @@ nor $9, $6, $7 # CHECK: nor
not $7, $8 # CHECK: not $7, $8 # encoding: [0x00,0x08,0x3a,0xd0]
not $7 # CHECK: not $7, $7 # encoding: [0x00,0x07,0x3a,0xd0]
mul $9, $6, $7 # CHECK: mul $9, $6, $7 # encoding: [0x00,0xe6,0x4a,0x10]
+mul.d $f0, $f2, $f4 # CHECK: mul.d $f0, $f2, $f4 # encoding: [0x54,0x82,0x01,0xb0]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FMUL_D32_MM
mult $9, $7 # CHECK: mult $9, $7 # encoding: [0x00,0xe9,0x8b,0x3c]
multu $9, $7 # CHECK: multu $9, $7 # encoding: [0x00,0xe9,0x9b,0x3c]
div $zero, $9, $7 # CHECK: div $zero, $9, $7 # encoding: [0x00,0xe9,0xab,0x3c]
+div.d $f0, $f2, $f4 # CHECK: div.d $f0, $f2, $f4 # encoding: [0x54,0x82,0x01,0xf0]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FDIV_D32_MM
divu $zero, $9, $7 # CHECK: divu $zero, $9, $7 # encoding: [0x00,0xe9,0xbb,0x3c]
sll $4, $3, 7 # CHECK: sll $4, $3, 7 # encoding: [0x00,0x83,0x38,0x00]
sllv $2, $3, $5 # CHECK: sllv $2, $3, $5 # encoding: [0x00,0x65,0x10,0x10]
@@ -111,6 +119,8 @@ lwl $4, 16($5) # CHECK: lwl
lwr $4, 16($5) # CHECK: lwr $4, 16($5) # encoding: [0x60,0x85,0x10,0x10]
swl $4, 16($5) # CHECK: swl $4, 16($5) # encoding: [0x60,0x85,0x80,0x10]
swr $4, 16($5) # CHECK: swr $4, 16($5) # encoding: [0x60,0x85,0x90,0x10]
+mov.d $f0, $f2 # CHECK: mov.d $f0, $f2 # encoding: [0x54,0x02,0x20,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FMOV_D32_MM
movz $9, $6, $7 # CHECK: movz $9, $6, $7 # encoding: [0x00,0xe6,0x48,0x58]
movn $9, $6, $7 # CHECK: movn $9, $6, $7 # encoding: [0x00,0xe6,0x48,0x18]
movt $9, $6, $fcc0 # CHECK: movt $9, $6, $fcc0 # encoding: [0x55,0x26,0x09,0x7b]
@@ -121,10 +131,16 @@ mfhi $6 # CHECK: mfh
# FIXME: MTLO should also have its 16 bit implementation selected in micromips
mtlo $6 # CHECK: mtlo $6 # encoding: [0x00,0x06,0x3d,0x7c]
mflo $6 # CHECK: mflo $6 # encoding: [0x46,0x46]
+mfhc1 $4, $f0 # CHECK: mfhc1 $4, $f0 # encoding: [0x54,0x80,0x30,0x3b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} MFHC1_D32_MM
+mthc1 $4, $f0 # CHECK: mthc1 $4, $f0 # encoding: [0x54,0x80,0x38,0x3b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} MTHC1_D32_MM
madd $4, $5 # CHECK: madd $4, $5 # encoding: [0x00,0xa4,0xcb,0x3c]
maddu $4, $5 # CHECK: maddu $4, $5 # encoding: [0x00,0xa4,0xdb,0x3c]
msub $4, $5 # CHECK: msub $4, $5 # encoding: [0x00,0xa4,0xeb,0x3c]
msubu $4, $5 # CHECK: msubu $4, $5 # encoding: [0x00,0xa4,0xfb,0x3c]
+neg.d $f0, $f2 # CHECK: neg.d $f0, $f2 # encoding: [0x54,0x02,0x2b,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FNEG_D32_MM
clz $9, $6 # CHECK: clz $9, $6 # encoding: [0x01,0x26,0x5b,0x3c]
clo $9, $6 # CHECK: clo $9, $6 # encoding: [0x01,0x26,0x4b,0x3c]
seb $9, $6 # CHECK: seb $9, $6 # encoding: [0x01,0x26,0x2b,0x3c]
@@ -250,6 +266,14 @@ c.ult.d $fcc6, $f6, $f16 # CHECK: c.u
c.ult.s $fcc7, $f24, $f10 # CHECK: c.ult.s $fcc7, $f24, $f10 # encoding: [0x55,0x58,0xe1,0x7c]
c.un.d $fcc6, $f22, $f24 # CHECK: c.un.d $fcc6, $f22, $f24 # encoding: [0x57,0x16,0xc4,0x7c]
c.un.s $fcc1, $f30, $f4 # CHECK: c.un.s $fcc1, $f30, $f4 # encoding: [0x54,0x9e,0x20,0x7c]
+cvt.w.d $f0, $f2 # CHECK: cvt.w.d $f0, $f2 # encoding: [0x54,0x02,0x49,0x3b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_W_D32_MM
+cvt.d.s $f0, $f2 # CHECK: cvt.d.s $f0, $f2 # encoding: [0x54,0x02,0x13,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_D32_S_MM
+cvt.d.w $f0, $f2 # CHECK: cvt.d.w $f0, $f2 # encoding: [0x54,0x02,0x33,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_D32_W_MM
+cvt.s.d $f0, $f2 # CHECK: cvt.s.d $f0, $f2 # encoding: [0x54,0x02,0x1b,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_S_D32_MM
bc1t 8 # CHECK: bc1t 8 # encoding: [0x43,0xa0,0x00,0x04]
# CHECK-NEXT: # <MCInst #{{[0-9]+}} BC1T_MM
bc1f 16 # CHECK: bc1f 16 # encoding: [0x43,0x80,0x00,0x08]
Modified: llvm/trunk/test/MC/Mips/micromips32r6/valid.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/micromips32r6/valid.s?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/micromips32r6/valid.s (original)
+++ llvm/trunk/test/MC/Mips/micromips32r6/valid.s Thu Feb 8 01:25:17 2018
@@ -151,20 +151,26 @@
swe $5, 8($4) # CHECK: swe $5, 8($4) # encoding: [0x60,0xa4,0xae,0x08]
add.s $f3, $f4, $f5 # CHECK: add.s $f3, $f4, $f5 # encoding: [0x54,0xa4,0x18,0x30]
add.d $f2, $f4, $f6 # CHECK: add.d $f2, $f4, $f6 # encoding: [0x54,0xc4,0x11,0x30]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FADD_D64_MM
sub.s $f3, $f4, $f5 # CHECK: sub.s $f3, $f4, $f5 # encoding: [0x54,0xa4,0x18,0x70]
sub.d $f2, $f4, $f6 # CHECK: sub.d $f2, $f4, $f6 # encoding: [0x54,0xc4,0x11,0x70]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSUB_D64_MM
mul.s $f3, $f4, $f5 # CHECK: mul.s $f3, $f4, $f5 # encoding: [0x54,0xa4,0x18,0xb0]
mul.d $f2, $f4, $f6 # CHECK: mul.d $f2, $f4, $f6 # encoding: [0x54,0xc4,0x11,0xb0]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FMUL_D64_MM
div.s $f3, $f4, $f5 # CHECK: div.s $f3, $f4, $f5 # encoding: [0x54,0xa4,0x18,0xf0]
div.d $f2, $f4, $f6 # CHECK: div.d $f2, $f4, $f6 # encoding: [0x54,0xc4,0x11,0xf0]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FDIV_D64_MM
maddf.s $f3, $f4, $f5 # CHECK: maddf.s $f3, $f4, $f5 # encoding: [0x54,0xa4,0x19,0xb8]
maddf.d $f3, $f4, $f5 # CHECK: maddf.d $f3, $f4, $f5 # encoding: [0x54,0xa4,0x1b,0xb8]
msubf.s $f3, $f4, $f5 # CHECK: msubf.s $f3, $f4, $f5 # encoding: [0x54,0xa4,0x19,0xf8]
msubf.d $f3, $f4, $f5 # CHECK: msubf.d $f3, $f4, $f5 # encoding: [0x54,0xa4,0x1b,0xf8]
mov.s $f6, $f7 # CHECK: mov.s $f6, $f7 # encoding: [0x54,0xc7,0x00,0x7b]
mov.d $f4, $f6 # CHECK: mov.d $f4, $f6 # encoding: [0x54,0x86,0x20,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FMOV_D64_MM
neg.s $f6, $f7 # CHECK: neg.s $f6, $f7 # encoding: [0x54,0xc7,0x0b,0x7b]
- neg.d $f4, $f6 # CHECK: neg.d $f4, $f6 # encoding: [0x54,0x86,0x2b,0x7b]
+ neg.d $f0, $f2 # CHECK: neg.d $f0, $f2 # encoding: [0x54,0x02,0x2b,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FNEG_D64_MM
max.s $f5, $f4, $f3 # CHECK: max.s $f5, $f4, $f3 # encoding: [0x54,0x64,0x28,0x0b]
max.d $f5, $f4, $f3 # CHECK: max.d $f5, $f4, $f3 # encoding: [0x54,0x64,0x2a,0x0b]
maxa.s $f5, $f4, $f3 # CHECK: maxa.s $f5, $f4, $f3 # encoding: [0x54,0x64,0x28,0x2b]
@@ -209,10 +215,14 @@
cvt.l.d $f3, $f4 # CHECK: cvt.l.d $f3, $f4 # encoding: [0x54,0x64,0x41,0x3b]
cvt.w.s $f3, $f4 # CHECK: cvt.w.s $f3, $f4 # encoding: [0x54,0x64,0x09,0x3b]
cvt.w.d $f3, $f4 # CHECK: cvt.w.d $f3, $f4 # encoding: [0x54,0x64,0x49,0x3b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_W_D64_MM
cvt.d.s $f2, $f4 # CHECK: cvt.d.s $f2, $f4 # encoding: [0x54,0x44,0x13,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_D64_S_MM
cvt.d.w $f2, $f4 # CHECK: cvt.d.w $f2, $f4 # encoding: [0x54,0x44,0x33,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_D64_W_MM
cvt.d.l $f2, $f4 # CHECK: cvt.d.l $f2, $f4 # encoding: [0x54,0x44,0x53,0x7b]
cvt.s.d $f2, $f4 # CHECK: cvt.s.d $f2, $f4 # encoding: [0x54,0x44,0x1b,0x7b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_S_D64_MM
cvt.s.w $f3, $f4 # CHECK: cvt.s.w $f3, $f4 # encoding: [0x54,0x64,0x3b,0x7b]
cvt.s.l $f3, $f4 # CHECK: cvt.s.l $f3, $f4 # encoding: [0x54,0x64,0x5b,0x7b]
abs.s $f0, $f12 # CHECK: abs.s $f0, $f12 # encoding: [0x54,0x0c,0x03,0x7b]
@@ -319,6 +329,7 @@
mthc0 $7, $8 # CHECK: mthc0 $7, $8, 0 # encoding: [0x00,0xe8,0x02,0xf4]
mthc0 $9, $10, 1 # CHECK: mthc0 $9, $10, 1 # encoding: [0x01,0x2a,0x0a,0xf4]
mthc1 $11, $f12 # CHECK: mthc1 $11, $f12 # encoding: [0x55,0x6c,0x38,0x3b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} MTHC1_D64_MM
mthc2 $13, $14 # CHECK: mthc2 $13, $14 # encoding: [0x01,0xae,0x9d,0x3c]
mfc0 $3, $7 # CHECK: mfc0 $3, $7, 0 # encoding: [0x00,0x67,0x00,0xfc]
mfc0 $3, $7, 3 # CHECK: mfc0 $3, $7, 3 # encoding: [0x00,0x67,0x18,0xfc]
@@ -327,6 +338,7 @@
mfhc0 $20, $21 # CHECK: mfhc0 $20, $21, 0 # encoding: [0x02,0x95,0x00,0xf4]
mfhc0 $1, $2, 1 # CHECK: mfhc0 $1, $2, 1 # encoding: [0x00,0x22,0x08,0xf4]
mfhc1 $zero, $f6 # CHECK: mfhc1 $zero, $f6 # encoding: [0x54,0x06,0x30,0x3b]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} MFHC1_D64_MM
mfhc2 $23, $16 # CHECK: mfhc2 $23, $16 # encoding: [0x02,0xf0,0x8d,0x3c]
tlbp # CHECK: tlbp # encoding: [0x00,0x00,0x03,0x7c]
tlbr # CHECK: tlbr # encoding: [0x00,0x00,0x13,0x7c]
Modified: llvm/trunk/test/MC/Mips/mips1/valid.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips1/valid.s?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/mips1/valid.s (original)
+++ llvm/trunk/test/MC/Mips/mips1/valid.s Thu Feb 8 01:25:17 2018
@@ -8,7 +8,8 @@ a:
abs.s $f0,$f12 # CHECK: abs.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x05]
# CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_S
add $s7,$s2,$a1
- add.d $f1,$f7,$f29
+ add.d $f0, $f2, $f4 # CHECK: add.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x00]
+ # CHECK-NEXT: # <MCInst #1067 FADD_D32
add.s $f8,$f21,$f24
addi $13,$9,26322
addi $8,$8,~1 # CHECK: addi $8, $8, -2 # encoding: [0x21,0x08,0xff,0xfe]
@@ -32,14 +33,19 @@ a:
c.sf.s $f14,$f22
cfc1 $s1,$21
ctc1 $a2,$26
- cvt.d.s $f22,$f28
- cvt.d.w $f26,$f11
- cvt.s.d $f26,$f8
+ cvt.d.s $f0,$f2 # CHECK: cvt.d.s $f0, $f2 # encoding: [0x46,0x00,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #732 CVT_D32_S
+ cvt.d.w $f0,$f2 # CHECK: cvt.d.w $f0, $f2 # encoding: [0x46,0x80,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #734 CVT_D32_W
+ cvt.s.d $f0,$f2 # CHECK: cvt.s.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x20]
+ # CHECK-NEXT: # <MCInst #748 CVT_S_D32
cvt.s.w $f22,$f15
- cvt.w.d $f20,$f14
+ cvt.w.d $f0,$f2 # CHECK: cvt.w.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x24]
+ # CHECK-NEXT: # <MCInst #757 CVT_W_D32
cvt.w.s $f20,$f24
div $zero,$25,$11
- div.d $f29,$f20,$f27
+ div.d $f0, $f2, $f4 # CHECK: div.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x03]
+ # CHECK-NEXT: # <MCInst #1105 FDIV_D32
div.s $f4,$f5,$f15
divu $zero,$25,$15
ehb # CHECK: ehb # encoding: [0x00,0x00,0x00,0xc0]
@@ -65,7 +71,8 @@ a:
mfhi $s3
mfhi $sp
mflo $s1
- mov.d $f20,$f14
+ mov.d $f0,$f2 # CHECK: mov.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x06]
+ # CHECK-NEXT: # <MCInst #1160 FMOV_D32
mov.s $f2,$f27
move $s8,$a0 # CHECK: move $fp, $4 # encoding: [0x00,0x80,0xf0,0x25]
move $25,$a2 # CHECK: move $25, $6 # encoding: [0x00,0xc0,0xc8,0x25]
@@ -73,7 +80,8 @@ a:
mthi $s1
mtlo $sp
mtlo $25
- mul.d $f20,$f20,$f16
+ mul.d $f0, $f2, $f4 # CHECK: mul.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x02]
+ # CHECK-NEXT: # <MCInst #1170 FMUL_D32
mul.s $f30,$f10,$f2
mult $sp,$s4
mult $sp,$v0
@@ -83,7 +91,8 @@ a:
neg $2, $3 # CHECK: neg $2, $3 # encoding: [0x00,0x03,0x10,0x22]
negu $2 # CHECK: negu $2, $2 # encoding: [0x00,0x02,0x10,0x23]
negu $2,$3 # CHECK: negu $2, $3 # encoding: [0x00,0x03,0x10,0x23]
- neg.d $f27,$f18
+ neg.d $f0,$f2 # CHECK: neg.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x07]
+ # CHECK-NEXT: # <MCInst #1178 FNEG_D32
neg.s $f1,$f15
nop
nor $a3,$zero,$a3
@@ -121,7 +130,8 @@ a:
sub $s6,$s3,$12
sub $22,$17,-3126 # CHECK: addi $22, $17, 3126 # encoding: [0x22,0x36,0x0c,0x36]
sub $13,6512 # CHECK: addi $13, $13, -6512 # encoding: [0x21,0xad,0xe6,0x90]
- sub.d $f18,$f3,$f17
+ sub.d $f0, $f2, $f4 # CHECK: sub.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x01]
+ # CHECK-NEXT: # <MCInst #1213 FSUB_D32
sub.s $f23,$f22,$f22
subu $sp,$s6,$s6
sw $ra,-10160($sp)
Modified: llvm/trunk/test/MC/Mips/mips2/valid.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips2/valid.s?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/mips2/valid.s (original)
+++ llvm/trunk/test/MC/Mips/mips2/valid.s Thu Feb 8 01:25:17 2018
@@ -10,7 +10,8 @@ a:
add $s7,$s2,$a1
add $9,$14,15176 # CHECK: addi $9, $14, 15176 # encoding: [0x21,0xc9,0x3b,0x48]
add $24,-7193 # CHECK: addi $24, $24, -7193 # encoding: [0x23,0x18,0xe3,0xe7]
- add.d $f1,$f7,$f29
+ add.d $f0, $f2, $f4 # CHECK: add.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x00]
+ # CHECK-NEXT: # <MCInst #1067 FADD_D32
add.s $f8,$f21,$f24
addi $13,$9,26322
addi $8,$8,~1 # CHECK: addi $8, $8, -2 # encoding: [0x21,0x08,0xff,0xfe]
@@ -46,14 +47,19 @@ a:
ceil.w.s $f6,$f20
cfc1 $s1,$21
ctc1 $a2,$26
- cvt.d.s $f22,$f28
- cvt.d.w $f26,$f11
- cvt.s.d $f26,$f8
+ cvt.d.s $f0,$f2 # CHECK: cvt.d.s $f0, $f2 # encoding: [0x46,0x00,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #732 CVT_D32_S
+ cvt.d.w $f0,$f2 # CHECK: cvt.d.w $f0, $f2 # encoding: [0x46,0x80,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #734 CVT_D32_W
+ cvt.s.d $f0,$f2 # CHECK: cvt.s.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x20]
+ # CHECK-NEXT: # <MCInst #748 CVT_S_D32
cvt.s.w $f22,$f15
- cvt.w.d $f20,$f14
+ cvt.w.d $f0,$f2 # CHECK: cvt.w.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x24]
+ # CHECK-NEXT: # <MCInst #757 CVT_W_D32
cvt.w.s $f20,$f24
div $zero,$25,$11
- div.d $f29,$f20,$f27
+ div.d $f0, $f2, $f4 # CHECK: div.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x03]
+ # CHECK-NEXT: # <MCInst #1105 FDIV_D32
div.s $f4,$f5,$f15
divu $zero,$25,$15
ehb # CHECK: ehb # encoding: [0x00,0x00,0x00,0xc0]
@@ -87,7 +93,8 @@ a:
mfhi $s3
mfhi $sp
mflo $s1
- mov.d $f20,$f14
+ mov.d $f0,$f2 # CHECK: mov.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x06]
+ # CHECK-NEXT: # <MCInst #1160 FMOV_D32
mov.s $f2,$f27
move $s8,$a0 # CHECK: move $fp, $4 # encoding: [0x00,0x80,0xf0,0x25]
move $25,$a2 # CHECK: move $25, $6 # encoding: [0x00,0xc0,0xc8,0x25]
@@ -95,7 +102,8 @@ a:
mthi $s1
mtlo $sp
mtlo $25
- mul.d $f20,$f20,$f16
+ mul.d $f0, $f2, $f4 # CHECK: mul.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x02]
+ # CHECK-NEXT: # <MCInst #1170 FMUL_D32
mul.s $f30,$f10,$f2
mult $sp,$s4
mult $sp,$v0
@@ -105,7 +113,8 @@ a:
neg $2, $3 # CHECK: neg $2, $3 # encoding: [0x00,0x03,0x10,0x22]
negu $2 # CHECK: negu $2, $2 # encoding: [0x00,0x02,0x10,0x23]
negu $2,$3 # CHECK: negu $2, $3 # encoding: [0x00,0x03,0x10,0x23]
- neg.d $f27,$f18
+ neg.d $f0,$f2 # CHECK: neg.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x07]
+ # CHECK-NEXT: # <MCInst #1178 FNEG_D32
neg.s $f1,$f15
nop
nor $a3,$zero,$a3
@@ -155,7 +164,8 @@ a:
sub $s6,$s3,$12
sub $22,$17,-3126 # CHECK: addi $22, $17, 3126 # encoding: [0x22,0x36,0x0c,0x36]
sub $13,6512 # CHECK: addi $13, $13, -6512 # encoding: [0x21,0xad,0xe6,0x90]
- sub.d $f18,$f3,$f17
+ sub.d $f0, $f2, $f4 # CHECK: sub.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x01]
+ # CHECK-NEXT: # <MCInst #1213 FSUB_D32
sub.s $f23,$f22,$f22
subu $sp,$s6,$s6
sw $ra,-10160($sp)
Modified: llvm/trunk/test/MC/Mips/mips32/valid.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips32/valid.s?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/mips32/valid.s (original)
+++ llvm/trunk/test/MC/Mips/mips32/valid.s Thu Feb 8 01:25:17 2018
@@ -10,7 +10,8 @@ a:
add $s7,$s2,$a1
add $9,$14,15176 # CHECK: addi $9, $14, 15176 # encoding: [0x21,0xc9,0x3b,0x48]
add $24,-7193 # CHECK: addi $24, $24, -7193 # encoding: [0x23,0x18,0xe3,0xe7]
- add.d $f1,$f7,$f29
+ add.d $f0, $f2, $f4 # CHECK: add.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x00]
+ # CHECK-NEXT: # <MCInst #1067 FADD_D32
add.s $f8,$f21,$f24
addi $13,$9,26322
addi $8,$8,~1 # CHECK: addi $8, $8, -2 # encoding: [0x21,0x08,0xff,0xfe]
@@ -81,15 +82,20 @@ a:
clo $11,$a1 # CHECK: clo $11, $5 # encoding: [0x70,0xab,0x58,0x21]
clz $sp,$gp # CHECK: clz $sp, $gp # encoding: [0x73,0x9d,0xe8,0x20]
ctc1 $a2,$26
- cvt.d.s $f22,$f28
- cvt.d.w $f26,$f11
- cvt.s.d $f26,$f8
+ cvt.d.s $f0,$f2 # CHECK: cvt.d.s $f0, $f2 # encoding: [0x46,0x00,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #732 CVT_D32_S
+ cvt.d.w $f0,$f2 # CHECK: cvt.d.w $f0, $f2 # encoding: [0x46,0x80,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #734 CVT_D32_W
+ cvt.s.d $f0,$f2 # CHECK: cvt.s.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x20]
+ # CHECK-NEXT: # <MCInst #748 CVT_S_D32
cvt.s.w $f22,$f15
- cvt.w.d $f20,$f14
+ cvt.w.d $f0,$f2 # CHECK: cvt.w.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x24]
+ # CHECK-NEXT: # <MCInst #757 CVT_W_D32
cvt.w.s $f20,$f24
deret
div $zero,$25,$11
- div.d $f29,$f20,$f27
+ div.d $f0, $f2, $f4 # CHECK: div.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x03]
+ # CHECK-NEXT: # <MCInst #1105 FDIV_D32
div.s $f4,$f5,$f15
divu $zero,$25,$15
ehb # CHECK: ehb # encoding: [0x00,0x00,0x00,0xc0]
@@ -127,7 +133,8 @@ a:
mfhi $s3
mfhi $sp
mflo $s1
- mov.d $f20,$f14
+ mov.d $f0,$f2 # CHECK: mov.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x06]
+ # CHECK-NEXT: # <MCInst #1160 FMOV_D32
mov.s $f2,$f27
move $s8,$a0 # CHECK: move $fp, $4 # encoding: [0x00,0x80,0xf0,0x25]
move $25,$a2 # CHECK: move $25, $6 # encoding: [0x00,0xc0,0xc8,0x25]
@@ -151,7 +158,8 @@ a:
mtlo $sp
mtlo $25
mul $s0,$s4,$at
- mul.d $f20,$f20,$f16
+ mul.d $f0, $f2, $f4 # CHECK: mul.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x02]
+ # CHECK-NEXT: # <MCInst #1170 FMUL_D32
mul.s $f30,$f10,$f2
mult $sp,$s4
mult $sp,$v0
@@ -161,7 +169,8 @@ a:
neg $2, $3 # CHECK: neg $2, $3 # encoding: [0x00,0x03,0x10,0x22]
negu $2 # CHECK: negu $2, $2 # encoding: [0x00,0x02,0x10,0x23]
negu $2,$3 # CHECK: negu $2, $3 # encoding: [0x00,0x03,0x10,0x23]
- neg.d $f27,$f18
+ neg.d $f0,$f2 # CHECK: neg.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x07]
+ # CHECK-NEXT: # <MCInst #1178 FNEG_D32
neg.s $f1,$f15
nop
nor $a3,$zero,$a3
@@ -213,7 +222,8 @@ a:
sub $s6,$s3,$12
sub $22,$17,-3126 # CHECK: addi $22, $17, 3126 # encoding: [0x22,0x36,0x0c,0x36]
sub $13,6512 # CHECK: addi $13, $13, -6512 # encoding: [0x21,0xad,0xe6,0x90]
- sub.d $f18,$f3,$f17
+ sub.d $f0, $f2, $f4 # CHECK: sub.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x01]
+ # CHECK-NEXT: # <MCInst #1213 FSUB_D32
sub.s $f23,$f22,$f22
subu $sp,$s6,$s6
sw $ra,-10160($sp)
Modified: llvm/trunk/test/MC/Mips/mips32r2/valid-fp64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips32r2/valid-fp64.s?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/mips32r2/valid-fp64.s (original)
+++ llvm/trunk/test/MC/Mips/mips32r2/valid-fp64.s Thu Feb 8 01:25:17 2018
@@ -1,11 +1,35 @@
# RUN: llvm-mc -arch=mips -mcpu=mips32r2 -mattr=+fp64 -show-encoding -show-inst %s | \
# RUN: FileCheck %s
-abs.s $f0, $f12 # CHECK: abs.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x05]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_S
-abs.d $f0, $f12 # CHECK: abs.d $f0, $f12 # encoding: [0x46,0x20,0x60,0x05]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_D64
-sqrt.s $f0, $f12 # CHECK: sqrt.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x04]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_S
-sqrt.d $f0, $f12 # CHECK: sqrt.d $f0, $f12 # encoding: [0x46,0x20,0x60,0x04]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_D64
+abs.d $f0, $f12 # CHECK: abs.d $f0, $f12 # encoding: [0x46,0x20,0x60,0x05]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_D64
+abs.s $f0, $f12 # CHECK: abs.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x05]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_S
+add.d $f0, $f2, $f4 # CHECK: add.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x00]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FADD_D64
+cvt.d.s $f0, $f2 # CHECK: cvt.d.s $f0, $f2 # encoding: [0x46,0x00,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_D64_S
+cvt.d.w $f0, $f2 # CHECK: cvt.d.w $f0, $f2 # encoding: [0x46,0x80,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_D64_W
+cvt.s.d $f0, $f2 # CHECK: cvt.s.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x20]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_S_D64
+cvt.w.d $f0, $f2 # CHECK: cvt.w.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x24]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_W_D64
+div.d $f0, $f2, $f4 # CHECK: div.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x03]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FDIV_D64
+mfhc1 $4, $f0 # CHECK: mfhc1 $4, $f0 # encoding: [0x44,0x64,0x00,0x00]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} MFHC1_D64
+mov.d $f0, $f2 # CHECK: mov.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x06]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FMOV_D64
+mthc1 $4, $f0 # CHECK: mthc1 $4, $f0 # encoding: [0x44,0xe4,0x00,0x00]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} MTHC1_D64
+mul.d $f0, $f2, $f4 # CHECK: mul.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x02]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FMUL_D64
+neg.d $f0, $f2 # CHECK: neg.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x07]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FNEG_D64
+sqrt.d $f0, $f12 # CHECK: sqrt.d $f0, $f12 # encoding: [0x46,0x20,0x60,0x04]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_D64
+sqrt.s $f0, $f12 # CHECK: sqrt.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x04]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_S
+sub.d $f0, $f2, $f4 # CHECK: sub.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x01]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSUB_D64
Modified: llvm/trunk/test/MC/Mips/mips32r2/valid.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips32r2/valid.s?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/mips32r2/valid.s (original)
+++ llvm/trunk/test/MC/Mips/mips32r2/valid.s Thu Feb 8 01:25:17 2018
@@ -10,7 +10,8 @@ a:
add $s7,$s2,$a1
add $9,$14,15176 # CHECK: addi $9, $14, 15176 # encoding: [0x21,0xc9,0x3b,0x48]
add $24,-7193 # CHECK: addi $24, $24, -7193 # encoding: [0x23,0x18,0xe3,0xe7]
- add.d $f1,$f7,$f29
+ add.d $f0, $f2, $f4 # CHECK: add.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x00]
+ # CHECK-NEXT: # <MCInst #1067 FADD_D32
add.s $f8,$f21,$f24
addi $13,$9,26322
addi $8,$8,~1 # CHECK: addi $8, $8, -2 # encoding: [0x21,0x08,0xff,0xfe]
@@ -81,19 +82,24 @@ a:
clo $11,$a1 # CHECK: clo $11, $5 # encoding: [0x70,0xab,0x58,0x21]
clz $sp,$gp # CHECK: clz $sp, $gp # encoding: [0x73,0x9d,0xe8,0x20]
ctc1 $a2,$26
- cvt.d.s $f22,$f28
- cvt.d.w $f26,$f11
+ cvt.d.s $f0,$f2 # CHECK: cvt.d.s $f0, $f2 # encoding: [0x46,0x00,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #732 CVT_D32_S
+ cvt.d.w $f0,$f2 # CHECK: cvt.d.w $f0, $f2 # encoding: [0x46,0x80,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #734 CVT_D32_W
cvt.l.d $f24,$f15
cvt.l.s $f11,$f29
- cvt.s.d $f26,$f8
+ cvt.s.d $f0,$f2 # CHECK: cvt.s.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x20]
+ # CHECK-NEXT: # <MCInst #748 CVT_S_D32
cvt.s.w $f22,$f15
- cvt.w.d $f20,$f14
+ cvt.w.d $f0,$f2 # CHECK: cvt.w.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x24]
+ # CHECK-NEXT: # <MCInst #757 CVT_W_D32
cvt.w.s $f20,$f24
deret
di $s8 # CHECK: di $fp # encoding: [0x41,0x7e,0x60,0x00]
di # CHECK: di # encoding: [0x41,0x60,0x60,0x00]
div $zero,$25,$11
- div.d $f29,$f20,$f27
+ div.d $f0, $f2, $f4 # CHECK: div.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x03]
+ # CHECK-NEXT: # <MCInst #1105 FDIV_D32
div.s $f4,$f5,$f15
divu $zero,$25,$15
ehb # CHECK: ehb # encoding: [0x00,0x00,0x00,0xc0]
@@ -138,11 +144,13 @@ a:
maddu $24,$s2
mfc0 $8,$15,1 # CHECK: mfc0 $8, $15, 1 # encoding: [0x40,0x08,0x78,0x01]
mfc1 $a3,$f27
- mfhc1 $s8,$f24
+ mfhc1 $4,$f0 # CHECK: mfhc1 $4, $f0 # encoding: [0x44,0x64,0x00,0x00]
+ # CHECK-NEXT: # <MCInst #1559 MFHC1_D32
mfhi $s3
mfhi $sp
mflo $s1
- mov.d $f20,$f14
+ mov.d $f0,$f2 # CHECK: mov.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x06]
+ # CHECK-NEXT: # <MCInst #1160 FMOV_D32
mov.s $f2,$f27
move $s8,$a0 # CHECK: move $fp, $4 # encoding: [0x00,0x80,0xf0,0x25]
move $25,$a2 # CHECK: move $25, $6 # encoding: [0x00,0xc0,0xc8,0x25]
@@ -164,12 +172,14 @@ a:
msubu $15,$a1
mtc0 $9,$15,1 # CHECK: mtc0 $9, $15, 1 # encoding: [0x40,0x89,0x78,0x01]
mtc1 $s8,$f9
- mthc1 $zero,$f16
+ mthc1 $4,$f0 # CHECK: mthc1 $4, $f0 # encoding: [0x44,0xe4,0x00,0x00]
+ # CHECK-NEXT: # <MCInst #1712 MTHC1_D32
mthi $s1
mtlo $sp
mtlo $25
mul $s0,$s4,$at
- mul.d $f20,$f20,$f16
+ mul.d $f0, $f2, $f4 # CHECK: mul.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x02]
+ # CHECK-NEXT: # <MCInst #1170 FMUL_D32
mul.s $f30,$f10,$f2
mult $sp,$s4
mult $sp,$v0
@@ -179,7 +189,8 @@ a:
neg $2, $3 # CHECK: neg $2, $3 # encoding: [0x00,0x03,0x10,0x22]
negu $2 # CHECK: negu $2, $2 # encoding: [0x00,0x02,0x10,0x23]
negu $2,$3 # CHECK: negu $2, $3 # encoding: [0x00,0x03,0x10,0x23]
- neg.d $f27,$f18
+ neg.d $f0,$f2 # CHECK: neg.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x07]
+ # CHECK-NEXT: # <MCInst #1178 FNEG_D32
neg.s $f1,$f15
nmadd.d $f18,$f9,$f14,$f19
nmadd.s $f0,$f5,$f25,$f12
@@ -254,7 +265,8 @@ a:
sub $s6,$s3,$12
sub $22,$17,-3126 # CHECK: addi $22, $17, 3126 # encoding: [0x22,0x36,0x0c,0x36]
sub $13,6512 # CHECK: addi $13, $13, -6512 # encoding: [0x21,0xad,0xe6,0x90]
- sub.d $f18,$f3,$f17
+ sub.d $f0, $f2, $f4 # CHECK: sub.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x01]
+ # CHECK-NEXT: # <MCInst #1213 FSUB_D32
sub.s $f23,$f22,$f22
subu $sp,$s6,$s6
suxc1 $f12,$k1($13)
Modified: llvm/trunk/test/MC/Mips/mips32r3/valid-fp64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips32r3/valid-fp64.s?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/mips32r3/valid-fp64.s (original)
+++ llvm/trunk/test/MC/Mips/mips32r3/valid-fp64.s Thu Feb 8 01:25:17 2018
@@ -1,11 +1,35 @@
# RUN: llvm-mc -arch=mips -mcpu=mips32r3 -mattr=+fp64 -show-encoding -show-inst %s | \
# RUN: FileCheck %s
-abs.s $f0, $f12 # CHECK: abs.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x05]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_S
-abs.d $f0, $f12 # CHECK: abs.d $f0, $f12 # encoding: [0x46,0x20,0x60,0x05]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_D64
-sqrt.s $f0, $f12 # CHECK: sqrt.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x04]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_S
-sqrt.d $f0, $f12 # CHECK: sqrt.d $f0, $f12 # encoding: [0x46,0x20,0x60,0x04]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_D64
+abs.d $f0, $f12 # CHECK: abs.d $f0, $f12 # encoding: [0x46,0x20,0x60,0x05]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_D64
+abs.s $f0, $f12 # CHECK: abs.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x05]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_S
+add.d $f0, $f2, $f4 # CHECK: add.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x00]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FADD_D64
+cvt.d.s $f0, $f2 # CHECK: cvt.d.s $f0, $f2 # encoding: [0x46,0x00,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_D64_S
+cvt.d.w $f0, $f2 # CHECK: cvt.d.w $f0, $f2 # encoding: [0x46,0x80,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_D64_W
+cvt.s.d $f0, $f2 # CHECK: cvt.s.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x20]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_S_D64
+cvt.w.d $f0, $f2 # CHECK: cvt.w.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x24]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_W_D64
+div.d $f0, $f2, $f4 # CHECK: div.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x03]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FDIV_D64
+mfhc1 $4, $f0 # CHECK: mfhc1 $4, $f0 # encoding: [0x44,0x64,0x00,0x00]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} MFHC1_D64
+mov.d $f0, $f2 # CHECK: mov.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x06]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FMOV_D64
+mthc1 $4, $f0 # CHECK: mthc1 $4, $f0 # encoding: [0x44,0xe4,0x00,0x00]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} MTHC1_D64
+mul.d $f0, $f2, $f4 # CHECK: mul.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x02]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FMUL_D64
+neg.d $f0, $f2 # CHECK: neg.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x07]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FNEG_D64
+sqrt.d $f0, $f12 # CHECK: sqrt.d $f0, $f12 # encoding: [0x46,0x20,0x60,0x04]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_D64
+sqrt.s $f0, $f12 # CHECK: sqrt.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x04]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_S
+sub.d $f0, $f2, $f4 # CHECK: sub.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x01]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSUB_D64
Modified: llvm/trunk/test/MC/Mips/mips32r3/valid.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips32r3/valid.s?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/mips32r3/valid.s (original)
+++ llvm/trunk/test/MC/Mips/mips32r3/valid.s Thu Feb 8 01:25:17 2018
@@ -10,7 +10,8 @@ a:
add $s7,$s2,$a1
add $9,$14,15176 # CHECK: addi $9, $14, 15176 # encoding: [0x21,0xc9,0x3b,0x48]
add $24,-7193 # CHECK: addi $24, $24, -7193 # encoding: [0x23,0x18,0xe3,0xe7]
- add.d $f1,$f7,$f29
+ add.d $f0, $f2, $f4 # CHECK: add.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x00]
+ # CHECK-NEXT: # <MCInst #1067 FADD_D32
add.s $f8,$f21,$f24
addi $13,$9,26322
addi $8,$8,~1 # CHECK: addi $8, $8, -2 # encoding: [0x21,0x08,0xff,0xfe]
@@ -81,19 +82,24 @@ a:
clo $11,$a1 # CHECK: clo $11, $5 # encoding: [0x70,0xab,0x58,0x21]
clz $sp,$gp # CHECK: clz $sp, $gp # encoding: [0x73,0x9d,0xe8,0x20]
ctc1 $a2,$26
- cvt.d.s $f22,$f28
- cvt.d.w $f26,$f11
+ cvt.d.s $f0,$f2 # CHECK: cvt.d.s $f0, $f2 # encoding: [0x46,0x00,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #732 CVT_D32_S
+ cvt.d.w $f0,$f2 # CHECK: cvt.d.w $f0, $f2 # encoding: [0x46,0x80,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #734 CVT_D32_W
cvt.l.d $f24,$f15
cvt.l.s $f11,$f29
- cvt.s.d $f26,$f8
+ cvt.s.d $f0,$f2 # CHECK: cvt.s.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x20]
+ # CHECK-NEXT: # <MCInst #748 CVT_S_D32
cvt.s.w $f22,$f15
- cvt.w.d $f20,$f14
+ cvt.w.d $f0,$f2 # CHECK: cvt.w.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x24]
+ # CHECK-NEXT: # <MCInst #757 CVT_W_D32
cvt.w.s $f20,$f24
deret
di $s8 # CHECK: di $fp # encoding: [0x41,0x7e,0x60,0x00]
di # CHECK: di # encoding: [0x41,0x60,0x60,0x00]
div $zero,$25,$11
- div.d $f29,$f20,$f27
+ div.d $f0, $f2, $f4 # CHECK: div.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x03]
+ # CHECK-NEXT: # <MCInst #1105 FDIV_D32
div.s $f4,$f5,$f15
divu $zero,$25,$15
ehb # CHECK: ehb # encoding: [0x00,0x00,0x00,0xc0]
@@ -138,11 +144,13 @@ a:
maddu $24,$s2
mfc0 $8,$15,1 # CHECK: mfc0 $8, $15, 1 # encoding: [0x40,0x08,0x78,0x01]
mfc1 $a3,$f27
- mfhc1 $s8,$f24
+ mfhc1 $4,$f0 # CHECK: mfhc1 $4, $f0 # encoding: [0x44,0x64,0x00,0x00]
+ # CHECK-NEXT: # <MCInst #1559 MFHC1_D32
mfhi $s3
mfhi $sp
mflo $s1
- mov.d $f20,$f14
+ mov.d $f0,$f2 # CHECK: mov.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x06]
+ # CHECK-NEXT: # <MCInst #1160 FMOV_D32
mov.s $f2,$f27
move $s8,$a0 # CHECK: move $fp, $4 # encoding: [0x00,0x80,0xf0,0x25]
move $25,$a2 # CHECK: move $25, $6 # encoding: [0x00,0xc0,0xc8,0x25]
@@ -164,12 +172,14 @@ a:
msubu $15,$a1
mtc0 $9,$15,1 # CHECK: mtc0 $9, $15, 1 # encoding: [0x40,0x89,0x78,0x01]
mtc1 $s8,$f9
- mthc1 $zero,$f16
+ mthc1 $4,$f0 # CHECK: mthc1 $4, $f0 # encoding: [0x44,0xe4,0x00,0x00]
+ # CHECK-NEXT: # <MCInst #1712 MTHC1_D32
mthi $s1
mtlo $sp
mtlo $25
mul $s0,$s4,$at
- mul.d $f20,$f20,$f16
+ mul.d $f0, $f2, $f4 # CHECK: mul.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x02]
+ # CHECK-NEXT: # <MCInst #1170 FMUL_D32
mul.s $f30,$f10,$f2
mult $sp,$s4
mult $sp,$v0
@@ -179,7 +189,8 @@ a:
neg $2, $3 # CHECK: neg $2, $3 # encoding: [0x00,0x03,0x10,0x22]
negu $2 # CHECK: negu $2, $2 # encoding: [0x00,0x02,0x10,0x23]
negu $2,$3 # CHECK: negu $2, $3 # encoding: [0x00,0x03,0x10,0x23]
- neg.d $f27,$f18
+ neg.d $f0,$f2 # CHECK: neg.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x07]
+ # CHECK-NEXT: # <MCInst #1178 FNEG_D32
neg.s $f1,$f15
nmadd.d $f18,$f9,$f14,$f19
nmadd.s $f0,$f5,$f25,$f12
@@ -254,7 +265,8 @@ a:
sub $s6,$s3,$12
sub $22,$17,-3126 # CHECK: addi $22, $17, 3126 # encoding: [0x22,0x36,0x0c,0x36]
sub $13,6512 # CHECK: addi $13, $13, -6512 # encoding: [0x21,0xad,0xe6,0x90]
- sub.d $f18,$f3,$f17
+ sub.d $f0, $f2, $f4 # CHECK: sub.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x01]
+ # CHECK-NEXT: # <MCInst #1213 FSUB_D32
sub.s $f23,$f22,$f22
subu $sp,$s6,$s6
suxc1 $f12,$k1($13)
Modified: llvm/trunk/test/MC/Mips/mips32r5/valid-fp64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips32r5/valid-fp64.s?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/mips32r5/valid-fp64.s (original)
+++ llvm/trunk/test/MC/Mips/mips32r5/valid-fp64.s Thu Feb 8 01:25:17 2018
@@ -1,11 +1,35 @@
# RUN: llvm-mc -arch=mips -mcpu=mips32r5 -mattr=+fp64 -show-encoding -show-inst %s | \
# RUN: FileCheck %s
-abs.s $f0, $f12 # CHECK: abs.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x05]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_S
-abs.d $f0, $f12 # CHECK: abs.d $f0, $f12 # encoding: [0x46,0x20,0x60,0x05]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_D64
-sqrt.s $f0, $f12 # CHECK: sqrt.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x04]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_S
-sqrt.d $f0, $f12 # CHECK: sqrt.d $f0, $f12 # encoding: [0x46,0x20,0x60,0x04]
- # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_D64
+abs.d $f0, $f12 # CHECK: abs.d $f0, $f12 # encoding: [0x46,0x20,0x60,0x05]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_D64
+abs.s $f0, $f12 # CHECK: abs.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x05]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FABS_S
+add.d $f0, $f2, $f4 # CHECK: add.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x00]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FADD_D64
+cvt.d.s $f0, $f2 # CHECK: cvt.d.s $f0, $f2 # encoding: [0x46,0x00,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_D64_S
+cvt.d.w $f0, $f2 # CHECK: cvt.d.w $f0, $f2 # encoding: [0x46,0x80,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_D64_W
+cvt.s.d $f0, $f2 # CHECK: cvt.s.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x20]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_S_D64
+cvt.w.d $f0, $f2 # CHECK: cvt.w.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x24]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} CVT_W_D64
+div.d $f0, $f2, $f4 # CHECK: div.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x03]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FDIV_D64
+mfhc1 $4, $f0 # CHECK: mfhc1 $4, $f0 # encoding: [0x44,0x64,0x00,0x00]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} MFHC1_D64
+mov.d $f0, $f2 # CHECK: mov.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x06]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FMOV_D64
+mthc1 $4, $f0 # CHECK: mthc1 $4, $f0 # encoding: [0x44,0xe4,0x00,0x00]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} MTHC1_D64
+mul.d $f0, $f2, $f4 # CHECK: mul.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x02]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FMUL_D64
+neg.d $f0, $f2 # CHECK: neg.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x07]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FNEG_D64
+sqrt.d $f0, $f12 # CHECK: sqrt.d $f0, $f12 # encoding: [0x46,0x20,0x60,0x04]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_D64
+sqrt.s $f0, $f12 # CHECK: sqrt.s $f0, $f12 # encoding: [0x46,0x00,0x60,0x04]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSQRT_S
+sub.d $f0, $f2, $f4 # CHECK: sub.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x01]
+ # CHECK-NEXT: # <MCInst #{{[0-9]+}} FSUB_D64
Modified: llvm/trunk/test/MC/Mips/mips32r5/valid.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips32r5/valid.s?rev=324584&r1=324583&r2=324584&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/mips32r5/valid.s (original)
+++ llvm/trunk/test/MC/Mips/mips32r5/valid.s Thu Feb 8 01:25:17 2018
@@ -10,7 +10,8 @@ a:
add $s7,$s2,$a1
add $9,$14,15176 # CHECK: addi $9, $14, 15176 # encoding: [0x21,0xc9,0x3b,0x48]
add $24,-7193 # CHECK: addi $24, $24, -7193 # encoding: [0x23,0x18,0xe3,0xe7]
- add.d $f1,$f7,$f29
+ add.d $f0, $f2, $f4 # CHECK: add.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x00]
+ # CHECK-NEXT: # <MCInst #1067 FADD_D32
add.s $f8,$f21,$f24
addi $13,$9,26322
addi $8,$8,~1 # CHECK: addi $8, $8, -2 # encoding: [0x21,0x08,0xff,0xfe]
@@ -81,19 +82,24 @@ a:
clo $11,$a1 # CHECK: clo $11, $5 # encoding: [0x70,0xab,0x58,0x21]
clz $sp,$gp # CHECK: clz $sp, $gp # encoding: [0x73,0x9d,0xe8,0x20]
ctc1 $a2,$26
- cvt.d.s $f22,$f28
- cvt.d.w $f26,$f11
+ cvt.d.s $f0,$f2 # CHECK: cvt.d.s $f0, $f2 # encoding: [0x46,0x00,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #732 CVT_D32_S
+ cvt.d.w $f0,$f2 # CHECK: cvt.d.w $f0, $f2 # encoding: [0x46,0x80,0x10,0x21]
+ # CHECK-NEXT: # <MCInst #734 CVT_D32_W
cvt.l.d $f24,$f15
cvt.l.s $f11,$f29
- cvt.s.d $f26,$f8
+ cvt.s.d $f0,$f2 # CHECK: cvt.s.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x20]
+ # CHECK-NEXT: # <MCInst #748 CVT_S_D32
cvt.s.w $f22,$f15
- cvt.w.d $f20,$f14
+ cvt.w.d $f0,$f2 # CHECK: cvt.w.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x24]
+ # CHECK-NEXT: # <MCInst #757 CVT_W_D32
cvt.w.s $f20,$f24
deret
di $s8 # CHECK: di $fp # encoding: [0x41,0x7e,0x60,0x00]
di # CHECK: di # encoding: [0x41,0x60,0x60,0x00]
div $zero,$25,$11
- div.d $f29,$f20,$f27
+ div.d $f0, $f2, $f4 # CHECK: div.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x03]
+ # CHECK-NEXT: # <MCInst #1105 FDIV_D32
div.s $f4,$f5,$f15
divu $zero,$25,$15
ehb # CHECK: ehb # encoding: [0x00,0x00,0x00,0xc0]
@@ -139,11 +145,13 @@ a:
maddu $24,$s2
mfc0 $8,$15,1 # CHECK: mfc0 $8, $15, 1 # encoding: [0x40,0x08,0x78,0x01]
mfc1 $a3,$f27
- mfhc1 $s8,$f24
+ mfhc1 $4,$f0 # CHECK: mfhc1 $4, $f0 # encoding: [0x44,0x64,0x00,0x00]
+ # CHECK-NEXT: # <MCInst #1559 MFHC1_D32
mfhi $s3
mfhi $sp
mflo $s1
- mov.d $f20,$f14
+ mov.d $f0,$f2 # CHECK: mov.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x06]
+ # CHECK-NEXT: # <MCInst #1160 FMOV_D32
mov.s $f2,$f27
move $s8,$a0 # CHECK: move $fp, $4 # encoding: [0x00,0x80,0xf0,0x25]
move $25,$a2 # CHECK: move $25, $6 # encoding: [0x00,0xc0,0xc8,0x25]
@@ -165,12 +173,14 @@ a:
msubu $15,$a1
mtc0 $9,$15,1 # CHECK: mtc0 $9, $15, 1 # encoding: [0x40,0x89,0x78,0x01]
mtc1 $s8,$f9
- mthc1 $zero,$f16
+ mthc1 $4,$f0 # CHECK: mthc1 $4, $f0 # encoding: [0x44,0xe4,0x00,0x00]
+ # CHECK-NEXT: # <MCInst #1712 MTHC1_D32
mthi $s1
mtlo $sp
mtlo $25
mul $s0,$s4,$at
- mul.d $f20,$f20,$f16
+ mul.d $f0, $f2, $f4 # CHECK: mul.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x02]
+ # CHECK-NEXT: # <MCInst #1170 FMUL_D32
mul.s $f30,$f10,$f2
mult $sp,$s4
mult $sp,$v0
@@ -180,7 +190,8 @@ a:
neg $2, $3 # CHECK: neg $2, $3 # encoding: [0x00,0x03,0x10,0x22]
negu $2 # CHECK: negu $2, $2 # encoding: [0x00,0x02,0x10,0x23]
negu $2,$3 # CHECK: negu $2, $3 # encoding: [0x00,0x03,0x10,0x23]
- neg.d $f27,$f18
+ neg.d $f0,$f2 # CHECK: neg.d $f0, $f2 # encoding: [0x46,0x20,0x10,0x07]
+ # CHECK-NEXT: # <MCInst #1178 FNEG_D32
neg.s $f1,$f15
nmadd.d $f18,$f9,$f14,$f19
nmadd.s $f0,$f5,$f25,$f12
@@ -255,7 +266,8 @@ a:
sub $s6,$s3,$12
sub $22,$17,-3126 # CHECK: addi $22, $17, 3126 # encoding: [0x22,0x36,0x0c,0x36]
sub $13,6512 # CHECK: addi $13, $13, -6512 # encoding: [0x21,0xad,0xe6,0x90]
- sub.d $f18,$f3,$f17
+ sub.d $f0, $f2, $f4 # CHECK: sub.d $f0, $f2, $f4 # encoding: [0x46,0x24,0x10,0x01]
+ # CHECK-NEXT: # <MCInst #1213 FSUB_D32
sub.s $f23,$f22,$f22
subu $sp,$s6,$s6
suxc1 $f12,$k1($13)
More information about the llvm-commits
mailing list