[llvm] r292117 - [mips] Correct c.cond.fmt instruction definition.

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 31 10:35:07 PST 2017


Merged to 4.0 in r293665.

On Mon, Jan 16, 2017 at 5:55 AM, Simon Dardis via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: sdardis
> Date: Mon Jan 16 07:55:58 2017
> New Revision: 292117
>
> URL: http://llvm.org/viewvc/llvm-project?rev=292117&view=rev
> Log:
> [mips] Correct c.cond.fmt instruction definition.
>
> Permit explicit $fcc<X> operand in c.cond.fmt instruction.
>
> Add c.cond.fmt to the MIPS to microMIPS instruction mapping table.
>
> Check that $fcc1 - $fcc7 are unusable for MIPS-I to MIPS-III for
> c.cond.fmt, bc1t, bc1f.
>
> Reviewers: seanbruno, zoran.jovanovic, vkalintiris
>
> Differential Revision: https://reviews.llvm.org/D24510
>
>
> Removed:
>     llvm/trunk/test/MC/Disassembler/Mips/mips4/valid-xfail-mips4.txt
>     llvm/trunk/test/MC/Mips/mips3/invalid-mips4-wrong-error.s
> Modified:
>     llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
>     llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h
>     llvm/trunk/lib/Target/Mips/MicroMipsInstrFPU.td
>     llvm/trunk/lib/Target/Mips/MicroMipsInstrFormats.td
>     llvm/trunk/lib/Target/Mips/MipsFastISel.cpp
>     llvm/trunk/lib/Target/Mips/MipsInstrFPU.td
>     llvm/trunk/lib/Target/Mips/MipsInstrFormats.td
>     llvm/trunk/test/MC/Mips/micromips/valid.s
>     llvm/trunk/test/MC/Mips/mips1/invalid-mips4-wrong-error.s
>     llvm/trunk/test/MC/Mips/mips1/invalid-mips4.s
>     llvm/trunk/test/MC/Mips/mips1/invalid-mips5-wrong-error.s
>     llvm/trunk/test/MC/Mips/mips1/invalid-mips5.s
>     llvm/trunk/test/MC/Mips/mips2/invalid-mips32.s
>     llvm/trunk/test/MC/Mips/mips2/invalid-mips32r2.s
>     llvm/trunk/test/MC/Mips/mips2/invalid-mips4-wrong-error.s
>     llvm/trunk/test/MC/Mips/mips2/invalid-mips4.s
>     llvm/trunk/test/MC/Mips/mips2/invalid-mips5.s
>     llvm/trunk/test/MC/Mips/mips3/invalid-mips4.s
>     llvm/trunk/test/MC/Mips/mips3/invalid-mips5-wrong-error.s
>     llvm/trunk/test/MC/Mips/mips3/invalid-mips5.s
>     llvm/trunk/test/MC/Mips/mips32/valid-xfail.s
>     llvm/trunk/test/MC/Mips/mips32/valid.s
>     llvm/trunk/test/MC/Mips/mips32r2/valid-xfail.s
>     llvm/trunk/test/MC/Mips/mips32r2/valid.s
>     llvm/trunk/test/MC/Mips/mips32r3/valid-xfail.s
>     llvm/trunk/test/MC/Mips/mips32r3/valid.s
>     llvm/trunk/test/MC/Mips/mips32r5/valid-xfail.s
>     llvm/trunk/test/MC/Mips/mips32r5/valid.s
>     llvm/trunk/test/MC/Mips/mips4/valid-xfail.s
>     llvm/trunk/test/MC/Mips/mips4/valid.s
>     llvm/trunk/test/MC/Mips/mips5/valid-xfail.s
>     llvm/trunk/test/MC/Mips/mips5/valid.s
>     llvm/trunk/test/MC/Mips/mips64/valid-xfail.s
>     llvm/trunk/test/MC/Mips/mips64/valid.s
>     llvm/trunk/test/MC/Mips/mips64r2/valid-xfail.s
>     llvm/trunk/test/MC/Mips/mips64r2/valid.s
>     llvm/trunk/test/MC/Mips/mips64r3/valid-xfail.s
>     llvm/trunk/test/MC/Mips/mips64r3/valid.s
>     llvm/trunk/test/MC/Mips/mips64r5/valid-xfail.s
>     llvm/trunk/test/MC/Mips/mips64r5/valid.s
>
> Modified: llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp Mon Jan 16 07:55:58 2017
> @@ -413,6 +413,7 @@ public:
>      Match_RequiresDifferentOperands,
>      Match_RequiresNoZeroRegister,
>      Match_RequiresSameSrcAndDst,
> +    Match_NoFCCRegisterForCurrentISA,
>      Match_NonZeroOperandForSync,
>  #define GET_OPERAND_DIAGNOSTIC_TYPES
>  #include "MipsGenAsmMatcher.inc"
> @@ -1461,8 +1462,6 @@ public:
>    bool isFCCAsmReg() const {
>      if (!(isRegIdx() && RegIdx.Kind & RegKind_FCC))
>        return false;
> -    if (!AsmParser.hasEightFccRegisters())
> -      return RegIdx.Index == 0;
>      return RegIdx.Index <= 7;
>    }
>    bool isACCAsmReg() const {
> @@ -4053,6 +4052,7 @@ MipsAsmParser::checkEarlyTargetMatchPred
>      return Match_RequiresSameSrcAndDst;
>    }
>  }
> +
>  unsigned MipsAsmParser::checkTargetMatchPredicate(MCInst &Inst) {
>    switch (Inst.getOpcode()) {
>    // As described by the MIPSR6 spec, daui must not use the zero operand for
> @@ -4131,9 +4131,15 @@ unsigned MipsAsmParser::checkTargetMatch
>      if (Inst.getOperand(0).getReg() == Inst.getOperand(1).getReg())
>        return Match_RequiresDifferentOperands;
>      return Match_Success;
> -  default:
> -    return Match_Success;
>    }
> +
> +  uint64_t TSFlags = getInstDesc(Inst.getOpcode()).TSFlags;
> +  if ((TSFlags & MipsII::HasFCCRegOperand) &&
> +      (Inst.getOperand(0).getReg() != Mips::FCC0) && !hasEightFccRegisters())
> +    return Match_NoFCCRegisterForCurrentISA;
> +
> +  return Match_Success;
> +
>  }
>
>  static SMLoc RefineErrorLoc(const SMLoc Loc, const OperandVector &Operands,
> @@ -4191,6 +4197,9 @@ bool MipsAsmParser::MatchAndEmitInstruct
>      return Error(IDLoc, "invalid operand ($zero) for instruction");
>    case Match_RequiresSameSrcAndDst:
>      return Error(IDLoc, "source and destination must match");
> +  case Match_NoFCCRegisterForCurrentISA:
> +    return Error(RefineErrorLoc(IDLoc, Operands, ErrorInfo),
> +                 "non-zero fcc register doesn't exist in current ISA level");
>    case Match_Immz:
>      return Error(RefineErrorLoc(IDLoc, Operands, ErrorInfo), "expected '0'");
>    case Match_UImm1_0:
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h Mon Jan 16 07:55:58 2017
> @@ -123,7 +123,9 @@ namespace MipsII {
>      HasForbiddenSlot = 1 << 5,
>      /// IsPCRelativeLoad - A Load instruction with implicit source register
>      ///                    ($pc) with explicit offset and destination register
> -    IsPCRelativeLoad = 1 << 6
> +    IsPCRelativeLoad = 1 << 6,
> +    /// HasFCCRegOperand - Instruction uses an $fcc<x> register.
> +    HasFCCRegOperand = 1 << 7
>
>    };
>  }
>
> Modified: llvm/trunk/lib/Target/Mips/MicroMipsInstrFPU.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MicroMipsInstrFPU.td?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MicroMipsInstrFPU.td (original)
> +++ llvm/trunk/lib/Target/Mips/MicroMipsInstrFPU.td Mon Jan 16 07:55:58 2017
> @@ -27,9 +27,20 @@ def SUXC1_MM : MMRel, SWXC1_FT<"suxc1",
>                 SWXC1_FM_MM<0x188>, INSN_MIPS5_32R2_NOT_32R6_64R6;
>
>  def FCMP_S32_MM : MMRel, CEQS_FT<"s", FGR32, II_C_CC_S, MipsFPCmp>,
> -                  CEQS_FM_MM<0>;
> +                  CEQS_FM_MM<0> {
> +  // FIXME: This is a required to work around the fact that these instructions
> +  //        only use $fcc0. Ideally, MipsFPCmp nodes could be removed and the
> +  //        fcc register set is used directly.
> +  bits<3> fcc = 0;
> +}
> +
>  def FCMP_D32_MM : MMRel, CEQS_FT<"d", AFGR64, II_C_CC_D, MipsFPCmp>,
> -                  CEQS_FM_MM<1>;
> +                  CEQS_FM_MM<1> {
> +  // FIXME: This is a required to work around the fact that these instructions
> +  //        only use $fcc0. Ideally, MipsFPCmp nodes could be removed and the
> +  //        fcc register set is used directly.
> +  bits<3> fcc = 0;
> +}
>
>  def BC1F_MM : MMRel, BC1F_FT<"bc1f", brtarget_mm, II_BC1F, MIPS_BRANCH_F>,
>                BC1F_FM_MM<0x1c>, ISA_MIPS1_NOT_32R6_64R6;
> @@ -164,6 +175,98 @@ let AdditionalPredicates = [InMicroMips]
>      def SWC1_MM : MMRel, SW_FT<"swc1", FGR32Opnd, mem_mm_16, II_SWC1, store>,
>                    LW_FM_MM<0x26>;
>    }
> +
> +  multiclass C_COND_MM<string TypeStr, RegisterOperand RC, bits<2> fmt,
> +                      InstrItinClass itin> {
> +    def C_F_#NAME#_MM : MMRel, C_COND_FT<"f", TypeStr, RC, itin>,
> +                    C_COND_FM_MM<fmt, 0> {
> +      let BaseOpcode = "c.f."#NAME;
> +      let isCommutable = 1;
> +    }
> +    def C_UN_#NAME#_MM : MMRel, C_COND_FT<"un", TypeStr, RC, itin>,
> +                     C_COND_FM_MM<fmt, 1> {
> +      let BaseOpcode = "c.un."#NAME;
> +      let isCommutable = 1;
> +    }
> +    def C_EQ_#NAME#_MM : MMRel, C_COND_FT<"eq", TypeStr, RC, itin>,
> +                     C_COND_FM_MM<fmt, 2> {
> +      let BaseOpcode = "c.eq."#NAME;
> +      let isCommutable = 1;
> +    }
> +    def C_UEQ_#NAME#_MM : MMRel, C_COND_FT<"ueq", TypeStr, RC, itin>,
> +                      C_COND_FM_MM<fmt, 3> {
> +      let BaseOpcode = "c.ueq."#NAME;
> +      let isCommutable = 1;
> +    }
> +    def C_OLT_#NAME#_MM : MMRel, C_COND_FT<"olt", TypeStr, RC, itin>,
> +                      C_COND_FM_MM<fmt, 4> {
> +      let BaseOpcode = "c.olt."#NAME;
> +    }
> +    def C_ULT_#NAME#_MM : MMRel, C_COND_FT<"ult", TypeStr, RC, itin>,
> +                      C_COND_FM_MM<fmt, 5> {
> +      let BaseOpcode = "c.ult."#NAME;
> +    }
> +    def C_OLE_#NAME#_MM : MMRel, C_COND_FT<"ole", TypeStr, RC, itin>,
> +                      C_COND_FM_MM<fmt, 6> {
> +      let BaseOpcode = "c.ole."#NAME;
> +    }
> +    def C_ULE_#NAME#_MM : MMRel, C_COND_FT<"ule", TypeStr, RC, itin>,
> +                       C_COND_FM_MM<fmt, 7> {
> +      let BaseOpcode = "c.ule."#NAME;
> +    }
> +    def C_SF_#NAME#_MM : MMRel, C_COND_FT<"sf", TypeStr, RC, itin>,
> +                     C_COND_FM_MM<fmt, 8> {
> +      let BaseOpcode = "c.sf."#NAME;
> +      let isCommutable = 1;
> +    }
> +    def C_NGLE_#NAME#_MM : MMRel, C_COND_FT<"ngle", TypeStr, RC, itin>,
> +                       C_COND_FM_MM<fmt, 9> {
> +      let BaseOpcode = "c.ngle."#NAME;
> +    }
> +    def C_SEQ_#NAME#_MM : MMRel, C_COND_FT<"seq", TypeStr, RC, itin>,
> +                      C_COND_FM_MM<fmt, 10> {
> +      let BaseOpcode = "c.seq."#NAME;
> +      let isCommutable = 1;
> +    }
> +    def C_NGL_#NAME#_MM : MMRel, C_COND_FT<"ngl", TypeStr, RC, itin>,
> +                      C_COND_FM_MM<fmt, 11> {
> +      let BaseOpcode = "c.ngl."#NAME;
> +    }
> +    def C_LT_#NAME#_MM : MMRel, C_COND_FT<"lt", TypeStr, RC, itin>,
> +                     C_COND_FM_MM<fmt, 12> {
> +      let BaseOpcode = "c.lt."#NAME;
> +    }
> +    def C_NGE_#NAME#_MM : MMRel, C_COND_FT<"nge", TypeStr, RC, itin>,
> +                      C_COND_FM_MM<fmt, 13> {
> +      let BaseOpcode = "c.nge."#NAME;
> +    }
> +    def C_LE_#NAME#_MM : MMRel, C_COND_FT<"le", TypeStr, RC, itin>,
> +                     C_COND_FM_MM<fmt, 14> {
> +      let BaseOpcode = "c.le."#NAME;
> +    }
> +    def C_NGT_#NAME#_MM : MMRel, C_COND_FT<"ngt", TypeStr, RC, itin>,
> +                      C_COND_FM_MM<fmt, 15> {
> +      let BaseOpcode = "c.ngt."#NAME;
> +    }
> +  }
> +
> +  defm S   : C_COND_MM<"s", FGR32Opnd, 0b00, II_C_CC_S>,
> +             ISA_MIPS1_NOT_32R6_64R6;
> +  defm D32 : C_COND_MM<"d", AFGR64Opnd, 0b01, II_C_CC_D>,
> +             ISA_MIPS1_NOT_32R6_64R6, FGR_32;
> +  let DecoderNamespace = "Mips64" in
> +  defm D64 : C_COND_MM<"d", FGR64Opnd, 0b01, II_C_CC_D>,
> +                ISA_MIPS1_NOT_32R6_64R6, FGR_64;
> +
> +  defm S_MM   : C_COND_ALIASES<"s", FGR32Opnd>, HARDFLOAT,
> +                ISA_MIPS1_NOT_32R6_64R6;
> +  defm D32_MM : C_COND_ALIASES<"d", AFGR64Opnd>, HARDFLOAT,
> +                ISA_MIPS1_NOT_32R6_64R6, FGR_32;
> +  defm D64_MM : C_COND_ALIASES<"d", FGR64Opnd>, HARDFLOAT,
> +                ISA_MIPS1_NOT_32R6_64R6, FGR_64;
> +
> +  defm : BC1_ALIASES<BC1T_MM, "bc1t", BC1F_MM, "bc1f">,
> +         ISA_MIPS1_NOT_32R6_64R6, HARDFLOAT;
>  }
>
>  //===----------------------------------------------------------------------===//
>
> Modified: llvm/trunk/lib/Target/Mips/MicroMipsInstrFormats.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MicroMipsInstrFormats.td?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MicroMipsInstrFormats.td (original)
> +++ llvm/trunk/lib/Target/Mips/MicroMipsInstrFormats.td Mon Jan 16 07:55:58 2017
> @@ -766,6 +766,7 @@ class SWXC1_FM_MM<bits<9> funct> : MMArc
>  class CEQS_FM_MM<bits<2> fmt> : MMArch {
>    bits<5> fs;
>    bits<5> ft;
> +  bits<3> fcc;
>    bits<4> cond;
>
>    bits<32> Inst;
> @@ -773,13 +774,17 @@ class CEQS_FM_MM<bits<2> fmt> : MMArch {
>    let Inst{31-26} = 0x15;
>    let Inst{25-21} = ft;
>    let Inst{20-16} = fs;
> -  let Inst{15-13} = 0x0;  // cc
> +  let Inst{15-13} = fcc;
>    let Inst{12}    = 0;
>    let Inst{11-10} = fmt;
>    let Inst{9-6}   = cond;
>    let Inst{5-0}   = 0x3c;
>  }
>
> +class C_COND_FM_MM<bits <2> fmt, bits<4> c> : CEQS_FM_MM<fmt> {
> +  let cond = c;
> +}
> +
>  class BC1F_FM_MM<bits<5> tf> : MMArch {
>    bits<16> offset;
>
>
> Modified: llvm/trunk/lib/Target/Mips/MipsFastISel.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsFastISel.cpp?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsFastISel.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsFastISel.cpp Mon Jan 16 07:55:58 2017
> @@ -698,8 +698,8 @@ bool MipsFastISel::emitCmp(unsigned Resu
>      unsigned RegWithOne = createResultReg(&Mips::GPR32RegClass);
>      emitInst(Mips::ADDiu, RegWithZero).addReg(Mips::ZERO).addImm(0);
>      emitInst(Mips::ADDiu, RegWithOne).addReg(Mips::ZERO).addImm(1);
> -    emitInst(Opc).addReg(LeftReg).addReg(RightReg).addReg(
> -        Mips::FCC0, RegState::ImplicitDefine);
> +    emitInst(Opc).addReg(Mips::FCC0, RegState::Define).addReg(LeftReg)
> +                 .addReg(RightReg);
>      emitInst(CondMovOpc, ResultReg)
>          .addReg(RegWithOne)
>          .addReg(Mips::FCC0)
>
> Modified: llvm/trunk/lib/Target/Mips/MipsInstrFPU.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsInstrFPU.td?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsInstrFPU.td (original)
> +++ llvm/trunk/lib/Target/Mips/MipsInstrFPU.td Mon Jan 16 07:55:58 2017
> @@ -219,6 +219,7 @@ class BC1F_FT<string opstr, DAGOperand o
>    let isTerminator = 1;
>    let hasDelaySlot = DelaySlot;
>    let Defs = [AT];
> +  let hasFCCRegOperand = 1;
>  }
>
>  class CEQS_FT<string typestr, RegisterClass RC, InstrItinClass Itin,
> @@ -229,41 +230,106 @@ class CEQS_FT<string typestr, RegisterCl
>           !strconcat("c.$cond.", typestr)>, HARDFLOAT {
>    let Defs = [FCC0];
>    let isCodeGenOnly = 1;
> +  let hasFCCRegOperand = 1;
>  }
>
> +
> +// Note: MIPS-IV introduced $fcc1-$fcc7 and renamed FCSR31[23] $fcc0. Rather
> +//       duplicating the instruction definition for MIPS1 - MIPS3, we expand
> +//       c.cond.ft if necessary, and reject it after constructing the
> +//       instruction if the ISA doesn't support it.
>  class C_COND_FT<string CondStr, string Typestr, RegisterOperand RC,
>                  InstrItinClass itin>  :
> -   InstSE<(outs), (ins RC:$fs, RC:$ft),
> -          !strconcat("c.", CondStr, ".", Typestr, "\t$fs, $ft"), [], itin,
> -          FrmFR>, HARDFLOAT;
> +   InstSE<(outs FCCRegsOpnd:$fcc), (ins RC:$fs, RC:$ft),
> +          !strconcat("c.", CondStr, ".", Typestr, "\t$fcc, $fs, $ft"), [], itin,
> +          FrmFR>, HARDFLOAT {
> +  let isCompare = 1;
> +  let hasFCCRegOperand = 1;
> +}
> +
>
>  multiclass C_COND_M<string TypeStr, RegisterOperand RC, bits<5> fmt,
>                      InstrItinClass itin> {
> -  def C_F_#NAME : C_COND_FT<"f", TypeStr, RC, itin>, C_COND_FM<fmt, 0>;
> -  def C_UN_#NAME : C_COND_FT<"un", TypeStr, RC, itin>, C_COND_FM<fmt, 1>;
> -  def C_EQ_#NAME : C_COND_FT<"eq", TypeStr, RC, itin>, C_COND_FM<fmt, 2>;
> -  def C_UEQ_#NAME : C_COND_FT<"ueq", TypeStr, RC, itin>, C_COND_FM<fmt, 3>;
> -  def C_OLT_#NAME : C_COND_FT<"olt", TypeStr, RC, itin>, C_COND_FM<fmt, 4>;
> -  def C_ULT_#NAME : C_COND_FT<"ult", TypeStr, RC, itin>, C_COND_FM<fmt, 5>;
> -  def C_OLE_#NAME : C_COND_FT<"ole", TypeStr, RC, itin>, C_COND_FM<fmt, 6>;
> -  def C_ULE_#NAME : C_COND_FT<"ule", TypeStr, RC, itin>, C_COND_FM<fmt, 7>;
> -  def C_SF_#NAME : C_COND_FT<"sf", TypeStr, RC, itin>, C_COND_FM<fmt, 8>;
> -  def C_NGLE_#NAME : C_COND_FT<"ngle", TypeStr, RC, itin>, C_COND_FM<fmt, 9>;
> -  def C_SEQ_#NAME : C_COND_FT<"seq", TypeStr, RC, itin>, C_COND_FM<fmt, 10>;
> -  def C_NGL_#NAME : C_COND_FT<"ngl", TypeStr, RC, itin>, C_COND_FM<fmt, 11>;
> -  def C_LT_#NAME : C_COND_FT<"lt", TypeStr, RC, itin>, C_COND_FM<fmt, 12>;
> -  def C_NGE_#NAME : C_COND_FT<"nge", TypeStr, RC, itin>, C_COND_FM<fmt, 13>;
> -  def C_LE_#NAME : C_COND_FT<"le", TypeStr, RC, itin>, C_COND_FM<fmt, 14>;
> -  def C_NGT_#NAME : C_COND_FT<"ngt", TypeStr, RC, itin>, C_COND_FM<fmt, 15>;
> +  def C_F_#NAME : MMRel, C_COND_FT<"f", TypeStr, RC, itin>,
> +                  C_COND_FM<fmt, 0> {
> +    let BaseOpcode = "c.f."#NAME;
> +    let isCommutable = 1;
> +  }
> +  def C_UN_#NAME : MMRel, C_COND_FT<"un", TypeStr, RC, itin>,
> +                   C_COND_FM<fmt, 1> {
> +    let BaseOpcode = "c.un."#NAME;
> +    let isCommutable = 1;
> +  }
> +  def C_EQ_#NAME : MMRel, C_COND_FT<"eq", TypeStr, RC, itin>,
> +                   C_COND_FM<fmt, 2> {
> +    let BaseOpcode = "c.eq."#NAME;
> +    let isCommutable = 1;
> +  }
> +  def C_UEQ_#NAME : MMRel, C_COND_FT<"ueq", TypeStr, RC, itin>,
> +                    C_COND_FM<fmt, 3> {
> +    let BaseOpcode = "c.ueq."#NAME;
> +    let isCommutable = 1;
> +  }
> +  def C_OLT_#NAME : MMRel, C_COND_FT<"olt", TypeStr, RC, itin>,
> +                    C_COND_FM<fmt, 4> {
> +    let BaseOpcode = "c.olt."#NAME;
> +  }
> +  def C_ULT_#NAME : MMRel, C_COND_FT<"ult", TypeStr, RC, itin>,
> +                    C_COND_FM<fmt, 5> {
> +    let BaseOpcode = "c.ult."#NAME;
> +  }
> +  def C_OLE_#NAME : MMRel, C_COND_FT<"ole", TypeStr, RC, itin>,
> +                    C_COND_FM<fmt, 6> {
> +    let BaseOpcode = "c.ole."#NAME;
> +  }
> +  def C_ULE_#NAME : MMRel, C_COND_FT<"ule", TypeStr, RC, itin>,
> +                     C_COND_FM<fmt, 7> {
> +    let BaseOpcode = "c.ule."#NAME;
> +  }
> +  def C_SF_#NAME : MMRel, C_COND_FT<"sf", TypeStr, RC, itin>,
> +                   C_COND_FM<fmt, 8> {
> +    let BaseOpcode = "c.sf."#NAME;
> +    let isCommutable = 1;
> +  }
> +  def C_NGLE_#NAME : MMRel, C_COND_FT<"ngle", TypeStr, RC, itin>,
> +                     C_COND_FM<fmt, 9> {
> +    let BaseOpcode = "c.ngle."#NAME;
> +  }
> +  def C_SEQ_#NAME : MMRel, C_COND_FT<"seq", TypeStr, RC, itin>,
> +                    C_COND_FM<fmt, 10> {
> +    let BaseOpcode = "c.seq."#NAME;
> +    let isCommutable = 1;
> +  }
> +  def C_NGL_#NAME : MMRel, C_COND_FT<"ngl", TypeStr, RC, itin>,
> +                    C_COND_FM<fmt, 11> {
> +    let BaseOpcode = "c.ngl."#NAME;
> +  }
> +  def C_LT_#NAME : MMRel, C_COND_FT<"lt", TypeStr, RC, itin>,
> +                   C_COND_FM<fmt, 12> {
> +    let BaseOpcode = "c.lt."#NAME;
> +  }
> +  def C_NGE_#NAME : MMRel, C_COND_FT<"nge", TypeStr, RC, itin>,
> +                    C_COND_FM<fmt, 13> {
> +    let BaseOpcode = "c.nge."#NAME;
> +  }
> +  def C_LE_#NAME : MMRel, C_COND_FT<"le", TypeStr, RC, itin>,
> +                   C_COND_FM<fmt, 14> {
> +    let BaseOpcode = "c.le."#NAME;
> +  }
> +  def C_NGT_#NAME : MMRel, C_COND_FT<"ngt", TypeStr, RC, itin>,
> +                    C_COND_FM<fmt, 15> {
> +    let BaseOpcode = "c.ngt."#NAME;
> +  }
>  }
>
> +let AdditionalPredicates = [NotInMicroMips] in {
>  defm S : C_COND_M<"s", FGR32Opnd, 16, II_C_CC_S>, ISA_MIPS1_NOT_32R6_64R6;
>  defm D32 : C_COND_M<"d", AFGR64Opnd, 17, II_C_CC_D>, ISA_MIPS1_NOT_32R6_64R6,
>             FGR_32;
>  let DecoderNamespace = "Mips64" in
>  defm D64 : C_COND_M<"d", FGR64Opnd, 17, II_C_CC_D>, ISA_MIPS1_NOT_32R6_64R6,
>             FGR_64;
> -
> +}
>  //===----------------------------------------------------------------------===//
>  // Floating Point Instructions
>  //===----------------------------------------------------------------------===//
> @@ -549,13 +615,29 @@ def BC1TL : MMRel, BC1F_FT<"bc1tl", brta
>  /// Floating Point Compare
>  let AdditionalPredicates = [NotInMicroMips] in {
>    def FCMP_S32 : MMRel, CEQS_FT<"s", FGR32, II_C_CC_S, MipsFPCmp>, CEQS_FM<16>,
> -                 ISA_MIPS1_NOT_32R6_64R6;
> +                 ISA_MIPS1_NOT_32R6_64R6 {
> +
> +  // FIXME: This is a required to work around the fact that these instructions
> +  //        only use $fcc0. Ideally, MipsFPCmp nodes could be removed and the
> +  //        fcc register set is used directly.
> +  bits<3> fcc = 0;
> +  }
>    def FCMP_D32 : MMRel, CEQS_FT<"d", AFGR64, II_C_CC_D, MipsFPCmp>, CEQS_FM<17>,
> -                 ISA_MIPS1_NOT_32R6_64R6, FGR_32;
> +                 ISA_MIPS1_NOT_32R6_64R6, FGR_32 {
> +  // FIXME: This is a required to work around the fact that these instructions
> +  //        only use $fcc0. Ideally, MipsFPCmp nodes could be removed and the
> +  //        fcc register set is used directly.
> +  bits<3> fcc = 0;
> +  }
>  }
>  let DecoderNamespace = "Mips64" in
>  def FCMP_D64 : CEQS_FT<"d", FGR64, II_C_CC_D, MipsFPCmp>, CEQS_FM<17>,
> -               ISA_MIPS1_NOT_32R6_64R6, FGR_64;
> +               ISA_MIPS1_NOT_32R6_64R6, FGR_64 {
> +  // FIXME: This is a required to work around the fact that thiese instructions
> +  //        only use $fcc0. Ideally, MipsFPCmp nodes could be removed and the
> +  //        fcc register set is used directly.
> +  bits<3> fcc = 0;
> +}
>
>  //===----------------------------------------------------------------------===//
>  // Floating Point Pseudo-Instructions
> @@ -602,15 +684,6 @@ def PseudoTRUNC_W_D : MipsAsmPseudoInst<
>  //===----------------------------------------------------------------------===//
>  // InstAliases.
>  //===----------------------------------------------------------------------===//
> -def : MipsInstAlias<"bc1t $offset", (BC1T FCC0, brtarget:$offset)>,
> -      ISA_MIPS1_NOT_32R6_64R6, HARDFLOAT;
> -def : MipsInstAlias<"bc1tl $offset", (BC1TL FCC0, brtarget:$offset)>,
> -      ISA_MIPS2_NOT_32R6_64R6, HARDFLOAT;
> -def : MipsInstAlias<"bc1f $offset", (BC1F FCC0, brtarget:$offset)>,
> -      ISA_MIPS1_NOT_32R6_64R6, HARDFLOAT;
> -def : MipsInstAlias<"bc1fl $offset", (BC1FL FCC0, brtarget:$offset)>,
> -      ISA_MIPS2_NOT_32R6_64R6, HARDFLOAT;
> -
>  def : MipsInstAlias
>          <"s.s $fd, $addr", (SWC1 FGR32Opnd:$fd, mem_simm16:$addr), 0>,
>        ISA_MIPS2, HARDFLOAT;
> @@ -630,6 +703,80 @@ def : MipsInstAlias
>  def : MipsInstAlias
>          <"l.d $fd, $addr", (LDC164 FGR64Opnd:$fd, mem_simm16:$addr), 0>,
>        FGR_64, ISA_MIPS2, HARDFLOAT;
> +
> +multiclass C_COND_ALIASES<string TypeStr, RegisterOperand RC> {
> +  def : MipsInstAlias<!strconcat("c.f.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_F_"#NAME) FCC0,
> +                                                       RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.un.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_UN_"#NAME) FCC0,
> +                                                        RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.eq.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_EQ_"#NAME) FCC0,
> +                                                        RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.ueq.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_UEQ_"#NAME) FCC0,
> +                                                         RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.olt.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_OLT_"#NAME) FCC0,
> +                                                         RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.ult.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_ULT_"#NAME) FCC0,
> +                                                         RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.ole.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_OLE_"#NAME) FCC0,
> +                                                         RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.ule.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_ULE_"#NAME) FCC0,
> +                                                         RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.sf.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_SF_"#NAME) FCC0,
> +                                                        RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.ngle.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_NGLE_"#NAME) FCC0,
> +                                                          RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.seq.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_SEQ_"#NAME) FCC0,
> +                                                         RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.ngl.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_NGL_"#NAME) FCC0,
> +                                                         RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.lt.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_LT_"#NAME) FCC0,
> +                                                        RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.nge.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_NGE_"#NAME) FCC0,
> +                                                         RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.le.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_LE_"#NAME) FCC0,
> +                                                        RC:$fs, RC:$ft), 1>;
> +  def : MipsInstAlias<!strconcat("c.ngt.", TypeStr, " $fs, $ft"),
> +                      (!cast<Instruction>("C_NGT_"#NAME) FCC0,
> +                                                         RC:$fs, RC:$ft), 1>;
> +}
> +
> +multiclass BC1_ALIASES<Instruction BCTrue, string BCTrueString,
> +                       Instruction BCFalse, string BCFalseString> {
> +  def : MipsInstAlias<!strconcat(BCTrueString, " $offset"),
> +                                (BCTrue FCC0, brtarget:$offset), 1>;
> +
> +  def : MipsInstAlias<!strconcat(BCFalseString, " $offset"),
> +                                (BCFalse FCC0, brtarget:$offset), 1>;
> +}
> +
> +let AdditionalPredicates = [NotInMicroMips] in {
> +  defm S   : C_COND_ALIASES<"s", FGR32Opnd>, HARDFLOAT,
> +             ISA_MIPS1_NOT_32R6_64R6;
> +  defm D32 : C_COND_ALIASES<"d", AFGR64Opnd>, HARDFLOAT,
> +             ISA_MIPS1_NOT_32R6_64R6, FGR_32;
> +  defm D64 : C_COND_ALIASES<"d", FGR64Opnd>, HARDFLOAT,
> +             ISA_MIPS1_NOT_32R6_64R6, FGR_64;
> +
> +  defm : BC1_ALIASES<BC1T, "bc1t", BC1F, "bc1f">, ISA_MIPS1_NOT_32R6_64R6,
> +         HARDFLOAT;
> +  defm : BC1_ALIASES<BC1TL, "bc1tl", BC1FL, "bc1fl">, ISA_MIPS2_NOT_32R6_64R6,
> +         HARDFLOAT;
> +}
>  //===----------------------------------------------------------------------===//
>  // Floating Point Patterns
>  //===----------------------------------------------------------------------===//
>
> Modified: llvm/trunk/lib/Target/Mips/MipsInstrFormats.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsInstrFormats.td?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsInstrFormats.td (original)
> +++ llvm/trunk/lib/Target/Mips/MipsInstrFormats.td Mon Jan 16 07:55:58 2017
> @@ -101,12 +101,15 @@ class MipsInst<dag outs, dag ins, string
>    bit IsPCRelativeLoad = 0; // Load instruction with implicit source register
>                              // ($pc) and with explicit offset and destination
>                              // register
> +  bit hasFCCRegOperand = 0; // Instruction uses $fcc<X> register and is
> +                            // present in MIPS-I to MIPS-III.
>
> -  // TSFlags layout should be kept in sync with MipsInstrInfo.h.
> +  // TSFlags layout should be kept in sync with MCTargetDesc/MipsBaseInfo.h.
>    let TSFlags{3-0}   = FormBits;
>    let TSFlags{4}     = isCTI;
>    let TSFlags{5}     = hasForbiddenSlot;
>    let TSFlags{6}     = IsPCRelativeLoad;
> +  let TSFlags{7}     = hasFCCRegOperand;
>
>    let DecoderNamespace = "Mips";
>
> @@ -829,6 +832,7 @@ class BC1F_FM<bit nd, bit tf> : StdArch
>  class CEQS_FM<bits<5> fmt> : StdArch {
>    bits<5> fs;
>    bits<5> ft;
> +  bits<3> fcc;
>    bits<4> cond;
>
>    bits<32> Inst;
> @@ -837,7 +841,7 @@ class CEQS_FM<bits<5> fmt> : StdArch {
>    let Inst{25-21} = fmt;
>    let Inst{20-16} = ft;
>    let Inst{15-11} = fs;
> -  let Inst{10-8} = 0; // cc
> +  let Inst{10-8} = fcc;
>    let Inst{7-4} = 0x3;
>    let Inst{3-0} = cond;
>  }
>
> Removed: llvm/trunk/test/MC/Disassembler/Mips/mips4/valid-xfail-mips4.txt
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/Mips/mips4/valid-xfail-mips4.txt?rev=292116&view=auto
> ==============================================================================
> --- llvm/trunk/test/MC/Disassembler/Mips/mips4/valid-xfail-mips4.txt (original)
> +++ llvm/trunk/test/MC/Disassembler/Mips/mips4/valid-xfail-mips4.txt (removed)
> @@ -1,38 +0,0 @@
> -# RUN: llvm-mc %s -triple=mips64-unknown-linux -disassemble -mcpu=mips4 | FileCheck %s
> -# XFAIL: *
> -0x46 0x2f 0x79 0x32 # CHECK: c.eq.d $fcc1, $f15, $f15
> -0x46 0x11 0xc5 0x32 # CHECK: c.eq.s $fcc5, $f24, $f17
> -0x46 0x35 0x5c 0x30 # CHECK: c.f.d $fcc4, $f11, $f21
> -0x46 0x07 0xf4 0x30 # CHECK: c.f.s $fcc4, $f30, $f7
> -0x46 0x21 0x94 0x3e # CHECK: c.le.d $fcc4, $f18, $f1
> -0x46 0x04 0xc6 0x3e # CHECK: c.le.s $fcc6, $f24, $f4
> -0x46 0x23 0x4b 0x3c # CHECK: c.lt.d $fcc3, $f9, $f3
> -0x46 0x0e 0x8a 0x3c # CHECK: c.lt.s $fcc2, $f17, $f14
> -0x46 0x30 0xad 0x3d # CHECK: c.nge.d $fcc5, $f21, $f16
> -0x46 0x08 0x5b 0x3d # CHECK: c.nge.s $fcc3, $f11, $f8
> -0x46 0x17 0xfa 0x3b # CHECK: c.ngl.s $fcc2, $f31, $f23
> -0x46 0x17 0x92 0x39 # CHECK: c.ngle.s $fcc2, $f18, $f23
> -0x46 0x27 0xc4 0x3f # CHECK: c.ngt.d $fcc4, $f24, $f7
> -0x46 0x0d 0x45 0x3f # CHECK: c.ngt.s $fcc5, $f8, $f13
> -0x46 0x3f 0x82 0x36 # CHECK: c.ole.d $fcc2, $f16, $f31
> -0x46 0x14 0x3b 0x36 # CHECK: c.ole.s $fcc3, $f7, $f20
> -0x46 0x3c 0x9c 0x34 # CHECK: c.olt.d $fcc4, $f19, $f28
> -0x46 0x07 0xa6 0x34 # CHECK: c.olt.s $fcc6, $f20, $f7
> -0x46 0x27 0xfc 0x3a # CHECK: c.seq.d $fcc4, $f31, $f7
> -0x46 0x19 0x0f 0x3a # CHECK: c.seq.s $fcc7, $f1, $f25
> -0x46 0x39 0x6c 0x33 # CHECK: c.ueq.d $fcc4, $f13, $f25
> -0x46 0x1e 0x1e 0x33 # CHECK: c.ueq.s $fcc6, $f3, $f30
> -0x46 0x32 0xcf 0x37 # CHECK: c.ule.d $fcc7, $f25, $f18
> -0x46 0x1e 0xaf 0x37 # CHECK: c.ule.s $fcc7, $f21, $f30
> -0x46 0x31 0x36 0x35 # CHECK: c.ult.d $fcc6, $f6, $f17
> -0x46 0x0a 0xc7 0x35 # CHECK: c.ult.s $fcc7, $f24, $f10
> -0x46 0x38 0xbe 0x31 # CHECK: c.un.d $fcc6, $f23, $f24
> -0x46 0x04 0xf1 0x31 # CHECK: c.un.s $fcc1, $f30, $f4
> -0x4e 0x74 0xd4 0xa1 # CHECK: madd.d $f18, $f19, $f26, $f20
> -0x4f 0xf9 0x98 0x60 # CHECK: madd.s $f1, $f31, $f19, $f25
> -0x4c 0x32 0xfa 0xa9 # CHECK: msub.d $f10, $f1, $f31, $f18
> -0x4e 0x70 0x53 0x28 # CHECK: msub.s $f12, $f19, $f10, $f16
> -0x4d 0x33 0x74 0xb1 # CHECK: nmadd.d $f18, $f9, $f14, $f19
> -0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12
> -0x4d 0x1e 0x87 0xb9 # CHECK: nmsub.d $f30, $f8, $f16, $f30
> -0x4f 0x04 0x98 0x78 # CHECK: nmsub.s $f1, $f24, $f19, $f4
>
> 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=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/micromips/valid.s (original)
> +++ llvm/trunk/test/MC/Mips/micromips/valid.s Mon Jan 16 07:55:58 2017
> @@ -210,6 +210,42 @@ recip.s $f2, $f4            # CHECK: rec
>  recip.d $f2, $f4            # CHECK: recip.d $f2, $f4       # encoding: [0x54,0x44,0x52,0x3b]
>  rsqrt.s $f3, $f5            # CHECK: rsqrt.s $f3, $f5       # encoding: [0x54,0x65,0x02,0x3b]
>  rsqrt.d $f2, $f4            # CHECK: rsqrt.d $f2, $f4       # encoding: [0x54,0x44,0x42,0x3b]
> +c.eq.d   $fcc1, $f14, $f14  # CHECK: c.eq.d   $fcc1, $f14, $f14 # encoding: [0x55,0xce,0x24,0xbc]
> +c.eq.s   $fcc5, $f24, $f17  # CHECK: c.eq.s   $fcc5, $f24, $f17 # encoding: [0x56,0x38,0xa0,0xbc]
> +c.f.d    $fcc4, $f10, $f20  # CHECK: c.f.d    $fcc4, $f10, $f20 # encoding: [0x56,0x8a,0x84,0x3c]
> +c.f.s    $fcc4, $f30, $f7   # CHECK: c.f.s    $fcc4, $f30, $f7  # encoding: [0x54,0xfe,0x80,0x3c]
> +c.le.d   $fcc4, $f18, $f0   # CHECK: c.le.d   $fcc4, $f18, $f0  # encoding: [0x54,0x12,0x87,0xbc]
> +c.le.s   $fcc6, $f24, $f4   # CHECK: c.le.s   $fcc6, $f24, $f4  # encoding: [0x54,0x98,0xc3,0xbc]
> +c.lt.d   $fcc3, $f8, $f2    # CHECK: c.lt.d   $fcc3, $f8, $f2   # encoding: [0x54,0x48,0x67,0x3c]
> +c.lt.s   $fcc2, $f17, $f14  # CHECK: c.lt.s   $fcc2, $f17, $f14 # encoding: [0x55,0xd1,0x43,0x3c]
> +c.nge.d  $fcc5, $f20, $f16  # CHECK: c.nge.d  $fcc5, $f20, $f16 # encoding: [0x56,0x14,0xa7,0x7c]
> +c.nge.s  $fcc3, $f11, $f8   # CHECK: c.nge.s  $fcc3, $f11, $f8  # encoding: [0x55,0x0b,0x63,0x7c]
> +c.ngl.s  $fcc2, $f31, $f23  # CHECK: c.ngl.s  $fcc2, $f31, $f23 # encoding: [0x56,0xff,0x42,0xfc]
> +c.ngle.s $fcc2, $f18, $f23  # CHECK: c.ngle.s $fcc2, $f18, $f23 # encoding: [0x56,0xf2,0x42,0x7c]
> +c.ngl.d  $f28, $f28         # CHECK: c.ngl.d  $f28, $f28        # encoding: [0x57,0x9c,0x06,0xfc]
> +c.ngle.d $f0, $f16          # CHECK: c.ngle.d $f0, $f16         # encoding: [0x56,0x00,0x06,0x7c]
> +c.ngt.d  $fcc4, $f24, $f6   # CHECK: c.ngt.d  $fcc4, $f24, $f6  # encoding: [0x54,0xd8,0x87,0xfc]
> +c.ngt.s  $fcc5, $f8, $f13   # CHECK: c.ngt.s  $fcc5, $f8, $f13  # encoding: [0x55,0xa8,0xa3,0xfc]
> +c.ole.d  $fcc2, $f16, $f30  # CHECK: c.ole.d  $fcc2, $f16, $f30 # encoding: [0x57,0xd0,0x45,0xbc]
> +c.ole.s  $fcc3, $f7, $f20   # CHECK: c.ole.s  $fcc3, $f7, $f20  # encoding: [0x56,0x87,0x61,0xbc]
> +c.olt.d  $fcc4, $f18, $f28  # CHECK: c.olt.d  $fcc4, $f18, $f28 # encoding: [0x57,0x92,0x85,0x3c]
> +c.olt.s  $fcc6, $f20, $f7   # CHECK: c.olt.s  $fcc6, $f20, $f7  # encoding: [0x54,0xf4,0xc1,0x3c]
> +c.seq.d  $fcc4, $f30, $f6   # CHECK: c.seq.d  $fcc4, $f30, $f6  # encoding: [0x54,0xde,0x86,0xbc]
> +c.seq.s  $fcc7, $f1, $f25   # CHECK: c.seq.s  $fcc7, $f1, $f25  # encoding: [0x57,0x21,0xe2,0xbc]
> +c.sf.d   $f30, $f0          # CHECK: c.sf.d   $f30, $f0         # encoding: [0x54,0x1e,0x06,0x3c]
> +c.sf.s   $f14, $f22         # CHECK: c.sf.s   $f14, $f22        # encoding: [0x56,0xce,0x02,0x3c]
> +c.ueq.d  $fcc4, $f12, $f24  # CHECK: c.ueq.d  $fcc4, $f12, $f24 # encoding: [0x57,0x0c,0x84,0xfc]
> +c.ueq.s  $fcc6, $f3, $f30   # CHECK: c.ueq.s  $fcc6, $f3, $f30  # encoding: [0x57,0xc3,0xc0,0xfc]
> +c.ule.d  $fcc7, $f24, $f18  # CHECK: c.ule.d  $fcc7, $f24, $f18 # encoding: [0x56,0x58,0xe5,0xfc]
> +c.ule.s  $fcc7, $f21, $f30  # CHECK: c.ule.s  $fcc7, $f21, $f30 # encoding: [0x57,0xd5,0xe1,0xfc]
> +c.ult.d  $fcc6, $f6, $f16   # CHECK: c.ult.d  $fcc6, $f6, $f16  # encoding: [0x56,0x06,0xc5,0x7c]
> +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]
> +bc1t 8                      # CHECK: bc1t 8                     # encoding: [0x43,0xa0,0x00,0x04]
> +bc1f 16                     # CHECK: bc1f 16                    # encoding: [0x43,0x80,0x00,0x08]
> +bc1t $fcc1, 4               # CHECK: bc1t $fcc1, 4              # encoding: [0x43,0xa0,0x00,0x02]
> +bc1f $fcc2, -20             # CHECK: bc1f $fcc2, -20            # encoding: [0x43,0x80,0xff,0xf6]
>  sync                        # CHECK: sync                   # encoding: [0x00,0x00,0x6b,0x7c]
>  sync 0                      # CHECK: sync 0                 # encoding: [0x00,0x00,0x6b,0x7c]
>  sync 1                      # CHECK: sync 1                 # encoding: [0x00,0x01,0x6b,0x7c]
>
> Modified: llvm/trunk/test/MC/Mips/mips1/invalid-mips4-wrong-error.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips1/invalid-mips4-wrong-error.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips1/invalid-mips4-wrong-error.s (original)
> +++ llvm/trunk/test/MC/Mips/mips1/invalid-mips4-wrong-error.s Mon Jan 16 07:55:58 2017
> @@ -6,8 +6,8 @@
>  # RUN: FileCheck %s < %t1
>
>         .set noat
> -        bc1fl     $fcc7,27          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> -        bc1tl     $fcc7,27          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        bc1fl     $fcc7,27          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> +        bc1tl     $fcc7,27          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          ldc2      $8,-21181($at)    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset
>          ldc2      $20,-1024($s2)    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset
>          ldl       $24,-4167($24)    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
>
> Modified: llvm/trunk/test/MC/Mips/mips1/invalid-mips4.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips1/invalid-mips4.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips1/invalid-mips4.s (original)
> +++ llvm/trunk/test/MC/Mips/mips1/invalid-mips4.s Mon Jan 16 07:55:58 2017
> @@ -5,8 +5,8 @@
>  # RUN: FileCheck %s < %t1
>
>          .set noat
> -        bc1f      $fcc1, 4          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> -        bc1t      $fcc1, 4          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        bc1f      $fcc1, 4          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        bc1t      $fcc1, 4          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>          ceil.l.d  $f1,$f3           # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          ceil.l.s  $f18,$f13         # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          ceil.w.d  $f11,$f25         # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> @@ -53,19 +53,19 @@
>          ldxc1     $f8,$s7($15)      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          lwxc1     $f12,$s1($s8)     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf      $gp,$8,$fcc0      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf      $gp,$8,$fcc7      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf      $gp,$8,$fcc7      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.d    $f6,$f10,$fcc0    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.d    $f6,$f10,$fcc5    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.d    $f6,$f10,$fcc5    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.s    $f23,$f5,$fcc0    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.s    $f23,$f5,$fcc6    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.s    $f23,$f5,$fcc6    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn      $v1,$s1,$s0       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.d    $f26,$f20,$k0     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.s    $f12,$f0,$s7      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt      $zero,$s4,$fcc0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt      $zero,$s4,$fcc5   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt      $zero,$s4,$fcc5   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.d    $f0,$f2,$fcc0     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.s    $f30,$f2,$fcc0    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt.s    $f30,$f2,$fcc1    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt.s    $f30,$f2,$fcc1    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz      $a1,$s6,$9        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.d    $f12,$f29,$9      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.s    $f25,$f7,$v1      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>
> Modified: llvm/trunk/test/MC/Mips/mips1/invalid-mips5-wrong-error.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips1/invalid-mips5-wrong-error.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips1/invalid-mips5-wrong-error.s (original)
> +++ llvm/trunk/test/MC/Mips/mips1/invalid-mips5-wrong-error.s Mon Jan 16 07:55:58 2017
> @@ -44,3 +44,35 @@
>          pul.ps    $f9,$f30,$f26       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction
>          puu.ps    $f24,$f9,$f2        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction
>          sub.ps    $f5,$f14,$f26       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction
> +        c.eq.s    $fcc1, $f2, $f8     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.f.s     $fcc4, $f2, $f7     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.le.s    $fcc6, $f2, $f4     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.lt.s    $fcc2, $f2, $f6     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.nge.s   $fcc3, $f2, $f8     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngl.s   $fcc2, $f2, $f6     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngle.s  $fcc2, $f2, $f6     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngt.s   $fcc5, $f8, $f2     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ole.s   $fcc3, $f7, $f2     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.olt.s   $fcc6, $f2, $f7     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.seq.s   $fcc7, $f1, $f2     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.sf.s    $fcc4, $f2, $f6     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ueq.s   $fcc6, $f3, $f2     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ule.s   $fcc7, $f2, $f6     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ult.s   $fcc7, $f2, $f6     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.un.s    $fcc1, $f2, $f4     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.eq.d    $fcc1, $f2, $f8     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.f.d     $fcc4, $f2, $f8     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.le.d    $fcc6, $f2, $f4     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.lt.d    $fcc2, $f2, $f6     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.nge.d   $fcc3, $f2, $f8     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngl.d   $fcc2, $f2, $f6     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngle.d  $fcc2, $f2, $f6     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngt.d   $fcc5, $f8, $f2     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ole.d   $fcc3, $f8, $f2     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.olt.d   $fcc6, $f2, $f8     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.seq.d   $fcc7, $f1, $f2     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.sf.d    $fcc4, $f2, $f6     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ueq.d   $fcc6, $f3, $f2     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ule.d   $fcc7, $f2, $f6     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ult.d   $fcc7, $f2, $f6     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.un.d    $fcc1, $f2, $f4     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>
> Modified: llvm/trunk/test/MC/Mips/mips1/invalid-mips5.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips1/invalid-mips5.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips1/invalid-mips5.s (original)
> +++ llvm/trunk/test/MC/Mips/mips1/invalid-mips5.s Mon Jan 16 07:55:58 2017
> @@ -5,8 +5,8 @@
>  # RUN: FileCheck %s < %t1
>
>          .set noat
> -        bc1f      $fcc1, 4          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> -        bc1t      $fcc1, 4          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        bc1f      $fcc1, 4          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        bc1t      $fcc1, 4          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>          ceil.l.d  $f1,$f3           # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          ceil.l.s  $f18,$f13         # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          ceil.w.d  $f11,$f25         # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> @@ -52,19 +52,19 @@
>          luxc1     $f19,$s6($s5)     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          lwxc1     $f12,$s1($s8)     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf      $gp,$8,$fcc0      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf      $gp,$8,$fcc7      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf      $gp,$8,$fcc7      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.d    $f6,$f10,$fcc0    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.d    $f6,$f10,$fcc5    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.d    $f6,$f10,$fcc5    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.s    $f23,$f5,$fcc0    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.s    $f23,$f5,$fcc6    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.s    $f23,$f5,$fcc6    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn      $v1,$s1,$s0       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.d    $f27,$f21,$k0     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.s    $f12,$f0,$s7      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt      $zero,$s4,$fcc0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt      $zero,$s4,$fcc5   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt      $zero,$s4,$fcc5   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.d    $f0,$f2,$fcc0     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.s    $f30,$f2,$fcc0    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt.s    $f30,$f2,$fcc1    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt.s    $f30,$f2,$fcc1    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz      $a1,$s6,$a3       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.d    $f12,$f29,$a3     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.s    $f25,$f7,$v1      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>
> Modified: llvm/trunk/test/MC/Mips/mips2/invalid-mips32.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips2/invalid-mips32.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips2/invalid-mips32.s (original)
> +++ llvm/trunk/test/MC/Mips/mips2/invalid-mips32.s Mon Jan 16 07:55:58 2017
> @@ -5,8 +5,8 @@
>  # RUN: FileCheck %s < %t1
>
>          .set noat
> -        bc1f      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> -        bc1t      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        bc1f      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        bc1t      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>          clo       $11,$a1         # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          clz       $sp,$gp         # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          deret                     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> @@ -20,19 +20,19 @@
>          maddu     $24,$s2         # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          mfc0      $a2,$14,1       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf      $gp,$8,$fcc0    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf      $gp,$8,$fcc7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf      $gp,$8,$fcc7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.d    $f6,$f11,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.d    $f6,$f11,$fcc5  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.d    $f6,$f11,$fcc5  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.s    $f23,$f5,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.s    $f23,$f5,$fcc6  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.s    $f23,$f5,$fcc6  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn      $v1,$s1,$s0     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.d    $f27,$f21,$k0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.s    $f12,$f0,$s7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt      $zero,$s4,$fcc0 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt      $zero,$s4,$fcc5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt      $zero,$s4,$fcc5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.d    $f0,$f2,$fcc0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.s    $f30,$f2,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt.s    $f30,$f2,$fcc1  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt.s    $f30,$f2,$fcc1  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz      $a1,$s6,$9      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.d    $f12,$f29,$9    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.s    $f25,$f7,$v1    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> @@ -41,3 +41,35 @@
>          mtc0      $9,$29,3        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          mul       $s0,$s4,$at     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          sync      1               # CHECK: :[[@LINE]]:{{[0-9]+}}: error: s-type must be zero or unspecified for pre-MIPS32 ISAs
> +        c.eq.s    $fcc1, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.f.s     $fcc4, $f2, $f7 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.le.s    $fcc6, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.lt.s    $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.nge.s   $fcc3, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngl.s   $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngle.s  $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngt.s   $fcc5, $f8, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ole.s   $fcc3, $f7, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.olt.s   $fcc6, $f2, $f7 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.seq.s   $fcc7, $f1, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.sf.s    $fcc4, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ueq.s   $fcc6, $f3, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ule.s   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ult.s   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.un.s    $fcc1, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.eq.d    $fcc1, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.f.d     $fcc4, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.le.d    $fcc6, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.lt.d    $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.nge.d   $fcc3, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngl.d   $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngle.d  $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngt.d   $fcc5, $f8, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ole.d   $fcc3, $f8, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.olt.d   $fcc6, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.seq.d   $fcc7, $f1, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.sf.d    $fcc4, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ueq.d   $fcc6, $f3, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ule.d   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ult.d   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.un.d    $fcc1, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>
> Modified: llvm/trunk/test/MC/Mips/mips2/invalid-mips32r2.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips2/invalid-mips32r2.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips2/invalid-mips32r2.s (original)
> +++ llvm/trunk/test/MC/Mips/mips2/invalid-mips32r2.s Mon Jan 16 07:55:58 2017
> @@ -5,12 +5,44 @@
>  # RUN: FileCheck %s < %t1
>
>          .set noat
> -        bc1f      $fcc1, 4          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> -        bc1t      $fcc1, 4          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        bc1f      $fcc1, 4          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        bc1t      $fcc1, 4          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>          clo     $t3,$a1             # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          clz     $sp,$gp             # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          cvt.l.d $f24,$f15           # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          cvt.l.s $f11,$f29           # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> +        c.eq.s    $fcc1, $f2, $f8   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.f.s     $fcc4, $f2, $f7   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.le.s    $fcc6, $f2, $f4   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.lt.s    $fcc2, $f2, $f6   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.nge.s   $fcc3, $f2, $f8   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngl.s   $fcc2, $f2, $f6   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngle.s  $fcc2, $f2, $f6   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngt.s   $fcc5, $f8, $f2   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ole.s   $fcc3, $f7, $f2   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.olt.s   $fcc6, $f2, $f7   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.seq.s   $fcc7, $f1, $f2   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.sf.s    $fcc4, $f2, $f6   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ueq.s   $fcc6, $f3, $f2   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ule.s   $fcc7, $f2, $f6   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ult.s   $fcc7, $f2, $f6   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.un.s    $fcc1, $f2, $f4   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.eq.d    $fcc1, $f2, $f8   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.f.d     $fcc4, $f2, $f8   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.le.d    $fcc6, $f2, $f4   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.lt.d    $fcc2, $f2, $f6   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.nge.d   $fcc3, $f2, $f8   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngl.d   $fcc2, $f2, $f6   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngle.d  $fcc2, $f2, $f6   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngt.d   $fcc5, $f8, $f2   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ole.d   $fcc3, $f8, $f2   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.olt.d   $fcc6, $f2, $f8   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.seq.d   $fcc7, $f1, $f2   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.sf.d    $fcc4, $f2, $f6   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ueq.d   $fcc6, $f3, $f2   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ule.d   $fcc7, $f2, $f6   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ult.d   $fcc7, $f2, $f6   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.un.d    $fcc1, $f2, $f4   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>          deret                       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          di      $s8                 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          di                          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> @@ -29,19 +61,19 @@
>          mfc0    $a2,$14,1           # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          mfhc1   $s8,$f24            # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf    $gp,$8,$fcc0        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf    $gp,$8,$fcc7        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf    $gp,$8,$fcc7        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.d  $f6,$f11,$fcc0      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.d  $f6,$f11,$fcc5      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.d  $f6,$f11,$fcc5      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.s  $f23,$f5,$fcc0      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.s  $f23,$f5,$fcc6      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.s  $f23,$f5,$fcc6      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn    $v1,$s1,$s0         # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.d  $f27,$f21,$k0       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.s  $f12,$f0,$s7        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt    $zero,$s4,$fcc0     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt    $zero,$s4,$fcc5     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt    $zero,$s4,$fcc5     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.d  $f0,$f2,$fcc0       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.s  $f30,$f2,$fcc0      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt.s  $f30,$f2,$fcc1      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt.s  $f30,$f2,$fcc1      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz    $a1,$s6,$t1         # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.d  $f12,$f29,$t1       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.s  $f25,$f7,$v1        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>
> Modified: llvm/trunk/test/MC/Mips/mips2/invalid-mips4-wrong-error.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips2/invalid-mips4-wrong-error.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips2/invalid-mips4-wrong-error.s (original)
> +++ llvm/trunk/test/MC/Mips/mips2/invalid-mips4-wrong-error.s Mon Jan 16 07:55:58 2017
> @@ -6,8 +6,8 @@
>  # RUN: FileCheck %s < %t1
>
>         .set noat
> -        bc1fl     $fcc7,27        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> -        bc1tl     $fcc7,27        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        bc1fl     $fcc7,27        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        bc1tl     $fcc7,27        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>          scd       $15,-8243($sp)  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset
>          sdl       $a3,-20961($s8) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
>          sdr       $11,-20423($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
>
> Modified: llvm/trunk/test/MC/Mips/mips2/invalid-mips4.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips2/invalid-mips4.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips2/invalid-mips4.s (original)
> +++ llvm/trunk/test/MC/Mips/mips2/invalid-mips4.s Mon Jan 16 07:55:58 2017
> @@ -5,8 +5,8 @@
>  # RUN: FileCheck %s < %t1
>
>          .set noat
> -        bc1f      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> -        bc1t      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        bc1f      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        bc1t      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>          ceil.l.d  $f1,$f3         # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          ceil.l.s  $f18,$f13       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          cvt.d.l   $f4,$f16        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> @@ -50,19 +50,19 @@
>          lwxc1     $f12,$s1($s8)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          lwu       $s3,-24086($v1) # CHECK: :[[@LINE]]:23: error: expected memory with 12-bit signed offset
>          movf      $gp,$8,$fcc0    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf      $gp,$8,$fcc7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf      $gp,$8,$fcc7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.d    $f6,$f11,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.d    $f6,$f11,$fcc5  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.d    $f6,$f11,$fcc5  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.s    $f23,$f5,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.s    $f23,$f5,$fcc6  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.s    $f23,$f5,$fcc6  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn      $v1,$s1,$s0     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.d    $f27,$f21,$k0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.s    $f12,$f0,$s7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt      $zero,$s4,$fcc0 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt      $zero,$s4,$fcc5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt      $zero,$s4,$fcc5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.d    $f0,$f2,$fcc0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.s    $f30,$f2,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt.s    $f30,$f2,$fcc1  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt.s    $f30,$f2,$fcc1  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz      $a1,$s6,$9      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.d    $f12,$f29,$9    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.s    $f25,$f7,$v1    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>
> Modified: llvm/trunk/test/MC/Mips/mips2/invalid-mips5.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips2/invalid-mips5.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips2/invalid-mips5.s (original)
> +++ llvm/trunk/test/MC/Mips/mips2/invalid-mips5.s Mon Jan 16 07:55:58 2017
> @@ -5,8 +5,8 @@
>  # RUN: FileCheck %s < %t1
>
>          .set noat
> -        bc1f      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> -        bc1t      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        bc1f      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        bc1t      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>          ceil.l.d  $f1,$f3         # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          ceil.l.s  $f18,$f13       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          cvt.d.l   $f4,$f16        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> @@ -48,19 +48,19 @@
>          luxc1     $f19,$s6($s5)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          lwxc1     $f12,$s1($s8)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf      $gp,$a0,$fcc0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf      $gp,$a0,$fcc7   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf      $gp,$a0,$fcc7   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.d    $f6,$f11,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.d    $f6,$f11,$fcc5  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.d    $f6,$f11,$fcc5  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.s    $f23,$f5,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.s    $f23,$f5,$fcc6  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.s    $f23,$f5,$fcc6  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn      $v1,$s1,$s0     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.d    $f27,$f21,$k0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.s    $f12,$f0,$s7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt      $zero,$s4,$fcc0 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt      $zero,$s4,$fcc5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt      $zero,$s4,$fcc5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.d    $f0,$f2,$fcc0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.s    $f30,$f2,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt.s    $f30,$f2,$fcc1  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt.s    $f30,$f2,$fcc1  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz      $a1,$s6,$a1     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.d    $f12,$f29,$a1   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.s    $f25,$f7,$v1    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> @@ -71,3 +71,36 @@
>          sdxc1     $f11,$a2($t2)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          suxc1     $f12,$k1($t1)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          swxc1     $f19,$t0($k0)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> +        c.eq.s    $fcc1, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.f.s     $fcc4, $f2, $f7 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.le.s    $fcc6, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.lt.s    $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.nge.s   $fcc3, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngl.s   $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngle.s  $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngt.s   $fcc5, $f8, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ole.s   $fcc3, $f7, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.olt.s   $fcc6, $f2, $f7 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.seq.s   $fcc7, $f1, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.sf.s    $fcc4, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ueq.s   $fcc6, $f3, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ule.s   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ult.s   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.un.s    $fcc1, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.eq.d    $fcc1, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.f.d     $fcc4, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.le.d    $fcc6, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.lt.d    $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.nge.d   $fcc3, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngl.d   $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngle.d  $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngt.d   $fcc5, $f8, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ole.d   $fcc3, $f8, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.olt.d   $fcc6, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.seq.d   $fcc7, $f1, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.sf.d    $fcc4, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ueq.d   $fcc6, $f3, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ule.d   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ult.d   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.un.d    $fcc1, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +
>
> Removed: llvm/trunk/test/MC/Mips/mips3/invalid-mips4-wrong-error.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips3/invalid-mips4-wrong-error.s?rev=292116&view=auto
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips3/invalid-mips4-wrong-error.s (original)
> +++ llvm/trunk/test/MC/Mips/mips3/invalid-mips4-wrong-error.s (removed)
> @@ -1,10 +0,0 @@
> -# Instructions that are invalid and are correctly rejected but use the wrong
> -# error message at the moment.
> -#
> -# RUN: not llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips3 \
> -# RUN:     2>%t1
> -# RUN: FileCheck %s < %t1
> -
> -       .set noat
> -        bc1fl     $fcc7,27          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> -        bc1tl     $fcc7,27          # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
>
> Modified: llvm/trunk/test/MC/Mips/mips3/invalid-mips4.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips3/invalid-mips4.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips3/invalid-mips4.s (original)
> +++ llvm/trunk/test/MC/Mips/mips3/invalid-mips4.s Mon Jan 16 07:55:58 2017
> @@ -5,26 +5,58 @@
>  # RUN: FileCheck %s < %t1
>
>          .set noat
> -        bc1f      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> -        bc1t      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        bc1f      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        bc1t      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>          ldxc1     $f8,$s7($15)    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          lwxc1     $f12,$s1($s8)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf      $gp,$8,$fcc0    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf      $gp,$8,$fcc7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf      $gp,$8,$fcc7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.d    $f6,$f11,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.d    $f6,$f11,$fcc5  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.d    $f6,$f11,$fcc5  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.s    $f23,$f5,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.s    $f23,$f5,$fcc6  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.s    $f23,$f5,$fcc6  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn      $v1,$s1,$s0     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.d    $f27,$f21,$k0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.s    $f12,$f0,$s7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt      $zero,$s4,$fcc0 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt      $zero,$s4,$fcc5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt      $zero,$s4,$fcc5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.d    $f0,$f2,$fcc0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.s    $f30,$f2,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt.s    $f30,$f2,$fcc1  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt.s    $f30,$f2,$fcc1  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz      $a1,$s6,$9      # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.d    $f12,$f29,$9    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.s    $f25,$f7,$v1    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          sdxc1     $f11,$10($14)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          swxc1     $f19,$12($k0)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> +        c.eq.s    $fcc1, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.f.s     $fcc4, $f2, $f7 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.le.s    $fcc6, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.lt.s    $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.nge.s   $fcc3, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngl.s   $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngle.s  $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngt.s   $fcc5, $f8, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ole.s   $fcc3, $f7, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.olt.s   $fcc6, $f2, $f7 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.seq.s   $fcc7, $f1, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.sf.s    $fcc4, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ueq.s   $fcc6, $f3, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ule.s   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ult.s   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.un.s    $fcc1, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.eq.d    $fcc1, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.f.d     $fcc4, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.le.d    $fcc6, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.lt.d    $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.nge.d   $fcc3, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngl.d   $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngle.d  $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngt.d   $fcc5, $f8, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ole.d   $fcc3, $f8, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.olt.d   $fcc6, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.seq.d   $fcc7, $f1, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.sf.d    $fcc4, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ueq.d   $fcc6, $f3, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ule.d   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ult.d   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.un.d    $fcc1, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>
> Modified: llvm/trunk/test/MC/Mips/mips3/invalid-mips5-wrong-error.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips3/invalid-mips5-wrong-error.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips3/invalid-mips5-wrong-error.s (original)
> +++ llvm/trunk/test/MC/Mips/mips3/invalid-mips5-wrong-error.s Mon Jan 16 07:55:58 2017
> @@ -44,3 +44,4 @@
>          pul.ps    $f9,$f30,$f26       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction
>          puu.ps    $f24,$f9,$f2        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction
>          sub.ps    $f5,$f14,$f26       # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction
> +
>
> Modified: llvm/trunk/test/MC/Mips/mips3/invalid-mips5.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips3/invalid-mips5.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips3/invalid-mips5.s (original)
> +++ llvm/trunk/test/MC/Mips/mips3/invalid-mips5.s Mon Jan 16 07:55:58 2017
> @@ -5,28 +5,61 @@
>  # RUN: FileCheck %s < %t1
>
>          .set noat
> -        bc1f      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> -        bc1t      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        bc1f      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        bc1t      $fcc1, 4        # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
>          ldxc1     $f8,$s7($t3)    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          luxc1     $f19,$s6($s5)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          lwxc1     $f12,$s1($s8)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf      $gp,$8,$fcc0    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf      $gp,$8,$fcc7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf      $gp,$8,$fcc7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.d    $f6,$f11,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.d    $f6,$f11,$fcc5  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.d    $f6,$f11,$fcc5  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movf.s    $f23,$f5,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movf.s    $f23,$f5,$fcc6  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movf.s    $f23,$f5,$fcc6  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn      $v1,$s1,$s0     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.d    $f27,$f21,$k0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movn.s    $f12,$f0,$s7    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt      $zero,$s4,$fcc0 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt      $zero,$s4,$fcc5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt      $zero,$s4,$fcc5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.d    $f0,$f2,$fcc0   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movt.s    $f30,$f2,$fcc0  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> -        movt.s    $f30,$f2,$fcc1  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction
> +        movt.s    $f30,$f2,$fcc1  # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz      $a1,$s6,$a5     # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.d    $f12,$f29,$a5   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          movz.s    $f25,$f7,$v1    # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          sdxc1     $f11,$a6($t2)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          suxc1     $f12,$k1($t1)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
>          swxc1     $f19,$t0($k0)   # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled
> +        c.eq.s    $fcc1, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.f.s     $fcc4, $f2, $f7 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.le.s    $fcc6, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.lt.s    $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.nge.s   $fcc3, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngl.s   $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngle.s  $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngt.s   $fcc5, $f8, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ole.s   $fcc3, $f7, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.olt.s   $fcc6, $f2, $f7 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.seq.s   $fcc7, $f1, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.sf.s    $fcc4, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ueq.s   $fcc6, $f3, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ule.s   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ult.s   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.un.s    $fcc1, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.eq.d    $fcc1, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.f.d     $fcc4, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.le.d    $fcc6, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.lt.d    $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.nge.d   $fcc3, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngl.d   $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngle.d  $fcc2, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ngt.d   $fcc5, $f8, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ole.d   $fcc3, $f8, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.olt.d   $fcc6, $f2, $f8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.seq.d   $fcc7, $f1, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.sf.d    $fcc4, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ueq.d   $fcc6, $f3, $f2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ule.d   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.ult.d   $fcc7, $f2, $f6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +        c.un.d    $fcc1, $f2, $f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: non-zero fcc register doesn't exist in current ISA level
> +
>
> Modified: llvm/trunk/test/MC/Mips/mips32/valid-xfail.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips32/valid-xfail.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips32/valid-xfail.s (original)
> +++ llvm/trunk/test/MC/Mips/mips32/valid-xfail.s Mon Jan 16 07:55:58 2017
> @@ -7,32 +7,20 @@
>  # XFAIL: *
>
>          .set noat
> -        c.eq.d          $fcc1,$f15,$f15
> -        c.eq.s          $fcc5,$f24,$f17
> -        c.f.d           $fcc4,$f11,$f21
> -        c.f.s           $fcc4,$f30,$f7
> -        c.le.d          $fcc4,$f18,$f1
> -        c.le.s          $fcc6,$f24,$f4
> -        c.lt.d          $fcc3,$f9,$f3
> -        c.lt.s          $fcc2,$f17,$f14
> -        c.nge.d         $fcc5,$f21,$f16
> -        c.nge.s         $fcc3,$f11,$f8
> -        c.ngl.s         $fcc2,$f31,$f23
> -        c.ngle.s        $fcc2,$f18,$f23
> -        c.ngt.d         $fcc4,$f24,$f7
> -        c.ngt.s         $fcc5,$f8,$f13
> -        c.ole.d         $fcc2,$f16,$f31
> -        c.ole.s         $fcc3,$f7,$f20
> -        c.olt.d         $fcc4,$f19,$f28
> -        c.olt.s         $fcc6,$f20,$f7
> -        c.seq.d         $fcc4,$f31,$f7
> -        c.seq.s         $fcc7,$f1,$f25
> -        c.ueq.d         $fcc4,$f13,$f25
> -        c.ueq.s         $fcc6,$f3,$f30
> -        c.ule.d         $fcc7,$f25,$f18
> -        c.ule.s         $fcc7,$f21,$f30
> -        c.ult.d         $fcc6,$f6,$f17
> -        c.ult.s         $fcc7,$f24,$f10
> -        c.un.d          $fcc6,$f23,$f24
> -        c.un.s          $fcc1,$f30,$f4
> +        c.eq.ps         $fcc5,$f0,$f9
> +        c.f.ps          $fcc6,$f11,$f11
> +        c.le.ps         $fcc1,$f7,$f20
> +        c.lt.ps         $f19,$f5
> +        c.nge.ps        $f1,$f26
> +        c.ngl.ps        $f21,$f30
> +        c.ngle.ps       $fcc7,$f12,$f20
> +        c.ngt.ps        $fcc5,$f30,$f6
> +        c.ole.ps        $fcc7,$f21,$f8
> +        c.olt.ps        $fcc3,$f7,$f16
> +        c.seq.ps        $fcc6,$f31,$f14
> +        c.sf.ps         $fcc6,$f4,$f6
> +        c.ueq.ps        $fcc1,$f5,$f29
> +        c.ule.ps        $fcc6,$f17,$f3
> +        c.ult.ps        $fcc7,$f14,$f0
> +        c.un.ps         $fcc4,$f2,$f26
>          rorv            $13,$a3,$s5
>
> 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=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips32/valid.s (original)
> +++ llvm/trunk/test/MC/Mips/mips32/valid.s Mon Jan 16 07:55:58 2017
> @@ -41,10 +41,38 @@ a:
>          bltzl     $s1,-9964            # CHECK: bltzl $17, -9964     # encoding: [0x06,0x22,0xf6,0x45]
>          bnel      $gp,$s4,5107         # CHECK: bnel $gp, $20, 5107  # encoding: [0x57,0x94,0x04,0xfc]
>          cache     1, 8($5)             # CHECK: cache 1, 8($5)       # encoding: [0xbc,0xa1,0x00,0x08]
> -        c.ngl.d   $f29,$f29
> -        c.ngle.d  $f0,$f16
> -        c.sf.d    $f30,$f0
> -        c.sf.s    $f14,$f22
> +        c.eq.d    $fcc1, $f14, $f14    # CHECK: c.eq.d    $fcc1, $f14, $f14       # encoding: [0x46,0x2e,0x71,0x32]
> +        c.eq.s    $fcc5, $f24, $f17    # CHECK: c.eq.s    $fcc5, $f24, $f17       # encoding: [0x46,0x11,0xc5,0x32]
> +        c.f.d     $fcc4, $f10, $f20    # CHECK: c.f.d     $fcc4, $f10, $f20       # encoding: [0x46,0x34,0x54,0x30]
> +        c.f.s     $fcc4, $f30, $f7     # CHECK: c.f.s     $fcc4, $f30, $f7        # encoding: [0x46,0x07,0xf4,0x30]
> +        c.le.d    $fcc4, $f18, $f0     # CHECK: c.le.d    $fcc4, $f18, $f0        # encoding: [0x46,0x20,0x94,0x3e]
> +        c.le.s    $fcc6, $f24, $f4     # CHECK: c.le.s    $fcc6, $f24, $f4        # encoding: [0x46,0x04,0xc6,0x3e]
> +        c.lt.d    $fcc3, $f8, $f2      # CHECK: c.lt.d    $fcc3, $f8, $f2         # encoding: [0x46,0x22,0x43,0x3c]
> +        c.lt.s    $fcc2, $f17, $f14    # CHECK: c.lt.s    $fcc2, $f17, $f14       # encoding: [0x46,0x0e,0x8a,0x3c]
> +        c.nge.d   $fcc5, $f20, $f16    # CHECK: c.nge.d   $fcc5, $f20, $f16       # encoding: [0x46,0x30,0xa5,0x3d]
> +        c.nge.s   $fcc3, $f11, $f8     # CHECK: c.nge.s   $fcc3, $f11, $f8        # encoding: [0x46,0x08,0x5b,0x3d]
> +        c.ngl.s   $fcc2, $f31, $f23    # CHECK: c.ngl.s   $fcc2, $f31, $f23       # encoding: [0x46,0x17,0xfa,0x3b]
> +        c.ngle.s  $fcc2, $f18, $f23    # CHECK: c.ngle.s  $fcc2, $f18, $f23       # encoding: [0x46,0x17,0x92,0x39]
> +        c.ngl.d   $f28, $f28           # CHECK: c.ngl.d   $f28, $f28              # encoding: [0x46,0x3c,0xe0,0x3b]
> +        c.ngle.d  $f0, $f16            # CHECK: c.ngle.d  $f0, $f16               # encoding: [0x46,0x30,0x00,0x39]
> +        c.ngt.d   $fcc4, $f24, $f6     # CHECK: c.ngt.d   $fcc4, $f24, $f6        # encoding: [0x46,0x26,0xc4,0x3f]
> +        c.ngt.s   $fcc5, $f8, $f13     # CHECK: c.ngt.s   $fcc5, $f8, $f13        # encoding: [0x46,0x0d,0x45,0x3f]
> +        c.ole.d   $fcc2, $f16, $f30    # CHECK: c.ole.d   $fcc2, $f16, $f30       # encoding: [0x46,0x3e,0x82,0x36]
> +        c.ole.s   $fcc3, $f7, $f20     # CHECK: c.ole.s   $fcc3, $f7, $f20        # encoding: [0x46,0x14,0x3b,0x36]
> +        c.olt.d   $fcc4, $f18, $f28    # CHECK: c.olt.d   $fcc4, $f18, $f28       # encoding: [0x46,0x3c,0x94,0x34]
> +        c.olt.s   $fcc6, $f20, $f7     # CHECK: c.olt.s   $fcc6, $f20, $f7        # encoding: [0x46,0x07,0xa6,0x34]
> +        c.seq.d   $fcc4, $f30, $f6     # CHECK: c.seq.d   $fcc4, $f30, $f6        # encoding: [0x46,0x26,0xf4,0x3a]
> +        c.seq.s   $fcc7, $f1, $f25     # CHECK: c.seq.s   $fcc7, $f1, $f25        # encoding: [0x46,0x19,0x0f,0x3a]
> +        c.sf.d    $f30, $f0            # CHECK: c.sf.d    $f30, $f0               # encoding: [0x46,0x20,0xf0,0x38]
> +        c.sf.s    $f14, $f22           # CHECK: c.sf.s    $f14, $f22              # encoding: [0x46,0x16,0x70,0x38]
> +        c.ueq.d   $fcc4, $f12, $f24    # CHECK: c.ueq.d   $fcc4, $f12, $f24       # encoding: [0x46,0x38,0x64,0x33]
> +        c.ueq.s   $fcc6, $f3, $f30     # CHECK: c.ueq.s   $fcc6, $f3, $f30        # encoding: [0x46,0x1e,0x1e,0x33]
> +        c.ule.d   $fcc7, $f24, $f18    # CHECK: c.ule.d   $fcc7, $f24, $f18       # encoding: [0x46,0x32,0xc7,0x37]
> +        c.ule.s   $fcc7, $f21, $f30    # CHECK: c.ule.s   $fcc7, $f21, $f30       # encoding: [0x46,0x1e,0xaf,0x37]
> +        c.ult.d   $fcc6, $f6, $f16     # CHECK: c.ult.d   $fcc6, $f6, $f16        # encoding: [0x46,0x30,0x36,0x35]
> +        c.ult.s   $fcc7, $f24, $f10    # CHECK: c.ult.s   $fcc7, $f24, $f10       # encoding: [0x46,0x0a,0xc7,0x35]
> +        c.un.d    $fcc6, $f22, $f24    # CHECK: c.un.d    $fcc6, $f22, $f24       # encoding: [0x46,0x38,0xb6,0x31]
> +        c.un.s    $fcc1, $f30, $f4     # CHECK: c.un.s    $fcc1, $f30, $f4        # encoding: [0x46,0x04,0xf1,0x31]
>          ceil.w.d  $f11,$f25
>          ceil.w.s  $f6,$f20
>          cfc1      $s1,$21
>
> Modified: llvm/trunk/test/MC/Mips/mips32r2/valid-xfail.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips32r2/valid-xfail.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips32r2/valid-xfail.s (original)
> +++ llvm/trunk/test/MC/Mips/mips32r2/valid-xfail.s Mon Jan 16 07:55:58 2017
> @@ -12,50 +12,22 @@
>          addqh.w         $s7,$s7,$k1
>          addqh_r.w       $8,$v1,$zero
>          alnv.ps         $f12,$f18,$f30,$12
> -        c.eq.d          $fcc1,$f15,$f15
>          c.eq.ps         $fcc5,$f0,$f9
> -        c.eq.s          $fcc5,$f24,$f17
> -        c.f.d           $fcc4,$f11,$f21
>          c.f.ps          $fcc6,$f11,$f11
> -        c.f.s           $fcc4,$f30,$f7
> -        c.le.d          $fcc4,$f18,$f1
>          c.le.ps         $fcc1,$f7,$f20
> -        c.le.s          $fcc6,$f24,$f4
> -        c.lt.d          $fcc3,$f9,$f3
>          c.lt.ps         $f19,$f5
> -        c.lt.s          $fcc2,$f17,$f14
> -        c.nge.d         $fcc5,$f21,$f16
>          c.nge.ps        $f1,$f26
> -        c.nge.s         $fcc3,$f11,$f8
>          c.ngl.ps        $f21,$f30
> -        c.ngl.s         $fcc2,$f31,$f23
>          c.ngle.ps       $fcc7,$f12,$f20
> -        c.ngle.s        $fcc2,$f18,$f23
> -        c.ngt.d         $fcc4,$f24,$f7
>          c.ngt.ps        $fcc5,$f30,$f6
> -        c.ngt.s         $fcc5,$f8,$f13
> -        c.ole.d         $fcc2,$f16,$f31
>          c.ole.ps        $fcc7,$f21,$f8
> -        c.ole.s         $fcc3,$f7,$f20
> -        c.olt.d         $fcc4,$f19,$f28
>          c.olt.ps        $fcc3,$f7,$f16
> -        c.olt.s         $fcc6,$f20,$f7
> -        c.seq.d         $fcc4,$f31,$f7
>          c.seq.ps        $fcc6,$f31,$f14
> -        c.seq.s         $fcc7,$f1,$f25
>          c.sf.ps         $fcc6,$f4,$f6
> -        c.ueq.d         $fcc4,$f13,$f25
>          c.ueq.ps        $fcc1,$f5,$f29
> -        c.ueq.s         $fcc6,$f3,$f30
> -        c.ule.d         $fcc7,$f25,$f18
>          c.ule.ps        $fcc6,$f17,$f3
> -        c.ule.s         $fcc7,$f21,$f30
> -        c.ult.d         $fcc6,$f6,$f17
>          c.ult.ps        $fcc7,$f14,$f0
> -        c.ult.s         $fcc7,$f24,$f10
> -        c.un.d          $fcc6,$f23,$f24
>          c.un.ps         $fcc4,$f2,$f26
> -        c.un.s          $fcc1,$f30,$f4
>          ceil.l.d        $f1,$f3
>          ceil.l.s        $f18,$f13
>          cfcmsa          $s6,$19
>
> 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=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips32r2/valid.s (original)
> +++ llvm/trunk/test/MC/Mips/mips32r2/valid.s Mon Jan 16 07:55:58 2017
> @@ -41,10 +41,38 @@ a:
>          bltzl     $s1,-9964            # CHECK: bltzl $17, -9964     # encoding: [0x06,0x22,0xf6,0x45]
>          bnel      $gp,$s4,5107         # CHECK: bnel $gp, $20, 5107  # encoding: [0x57,0x94,0x04,0xfc]
>          cache     1, 8($5)             # CHECK: cache 1, 8($5)       # encoding: [0xbc,0xa1,0x00,0x08]
> -        c.ngl.d   $f29,$f29
> -        c.ngle.d  $f0,$f16
> -        c.sf.d    $f30,$f0
> -        c.sf.s    $f14,$f22
> +        c.eq.d    $fcc1, $f14, $f14    # CHECK: c.eq.d    $fcc1, $f14, $f14       # encoding: [0x46,0x2e,0x71,0x32]
> +        c.eq.s    $fcc5, $f24, $f17    # CHECK: c.eq.s    $fcc5, $f24, $f17       # encoding: [0x46,0x11,0xc5,0x32]
> +        c.f.d     $fcc4, $f10, $f20    # CHECK: c.f.d     $fcc4, $f10, $f20       # encoding: [0x46,0x34,0x54,0x30]
> +        c.f.s     $fcc4, $f30, $f7     # CHECK: c.f.s     $fcc4, $f30, $f7        # encoding: [0x46,0x07,0xf4,0x30]
> +        c.le.d    $fcc4, $f18, $f0     # CHECK: c.le.d    $fcc4, $f18, $f0        # encoding: [0x46,0x20,0x94,0x3e]
> +        c.le.s    $fcc6, $f24, $f4     # CHECK: c.le.s    $fcc6, $f24, $f4        # encoding: [0x46,0x04,0xc6,0x3e]
> +        c.lt.d    $fcc3, $f8, $f2      # CHECK: c.lt.d    $fcc3, $f8, $f2         # encoding: [0x46,0x22,0x43,0x3c]
> +        c.lt.s    $fcc2, $f17, $f14    # CHECK: c.lt.s    $fcc2, $f17, $f14       # encoding: [0x46,0x0e,0x8a,0x3c]
> +        c.nge.d   $fcc5, $f20, $f16    # CHECK: c.nge.d   $fcc5, $f20, $f16       # encoding: [0x46,0x30,0xa5,0x3d]
> +        c.nge.s   $fcc3, $f11, $f8     # CHECK: c.nge.s   $fcc3, $f11, $f8        # encoding: [0x46,0x08,0x5b,0x3d]
> +        c.ngl.s   $fcc2, $f31, $f23    # CHECK: c.ngl.s   $fcc2, $f31, $f23       # encoding: [0x46,0x17,0xfa,0x3b]
> +        c.ngle.s  $fcc2, $f18, $f23    # CHECK: c.ngle.s  $fcc2, $f18, $f23       # encoding: [0x46,0x17,0x92,0x39]
> +        c.ngl.d   $f28, $f28           # CHECK: c.ngl.d   $f28, $f28              # encoding: [0x46,0x3c,0xe0,0x3b]
> +        c.ngle.d  $f0, $f16            # CHECK: c.ngle.d  $f0, $f16               # encoding: [0x46,0x30,0x00,0x39]
> +        c.ngt.d   $fcc4, $f24, $f6     # CHECK: c.ngt.d   $fcc4, $f24, $f6        # encoding: [0x46,0x26,0xc4,0x3f]
> +        c.ngt.s   $fcc5, $f8, $f13     # CHECK: c.ngt.s   $fcc5, $f8, $f13        # encoding: [0x46,0x0d,0x45,0x3f]
> +        c.ole.d   $fcc2, $f16, $f30    # CHECK: c.ole.d   $fcc2, $f16, $f30       # encoding: [0x46,0x3e,0x82,0x36]
> +        c.ole.s   $fcc3, $f7, $f20     # CHECK: c.ole.s   $fcc3, $f7, $f20        # encoding: [0x46,0x14,0x3b,0x36]
> +        c.olt.d   $fcc4, $f18, $f28    # CHECK: c.olt.d   $fcc4, $f18, $f28       # encoding: [0x46,0x3c,0x94,0x34]
> +        c.olt.s   $fcc6, $f20, $f7     # CHECK: c.olt.s   $fcc6, $f20, $f7        # encoding: [0x46,0x07,0xa6,0x34]
> +        c.seq.d   $fcc4, $f30, $f6     # CHECK: c.seq.d   $fcc4, $f30, $f6        # encoding: [0x46,0x26,0xf4,0x3a]
> +        c.seq.s   $fcc7, $f1, $f25     # CHECK: c.seq.s   $fcc7, $f1, $f25        # encoding: [0x46,0x19,0x0f,0x3a]
> +        c.sf.d    $f30, $f0            # CHECK: c.sf.d    $f30, $f0               # encoding: [0x46,0x20,0xf0,0x38]
> +        c.sf.s    $f14, $f22           # CHECK: c.sf.s    $f14, $f22              # encoding: [0x46,0x16,0x70,0x38]
> +        c.ueq.d   $fcc4, $f12, $f24    # CHECK: c.ueq.d   $fcc4, $f12, $f24       # encoding: [0x46,0x38,0x64,0x33]
> +        c.ueq.s   $fcc6, $f3, $f30     # CHECK: c.ueq.s   $fcc6, $f3, $f30        # encoding: [0x46,0x1e,0x1e,0x33]
> +        c.ule.d   $fcc7, $f24, $f18    # CHECK: c.ule.d   $fcc7, $f24, $f18       # encoding: [0x46,0x32,0xc7,0x37]
> +        c.ule.s   $fcc7, $f21, $f30    # CHECK: c.ule.s   $fcc7, $f21, $f30       # encoding: [0x46,0x1e,0xaf,0x37]
> +        c.ult.d   $fcc6, $f6, $f16     # CHECK: c.ult.d   $fcc6, $f6, $f16        # encoding: [0x46,0x30,0x36,0x35]
> +        c.ult.s   $fcc7, $f24, $f10    # CHECK: c.ult.s   $fcc7, $f24, $f10       # encoding: [0x46,0x0a,0xc7,0x35]
> +        c.un.d    $fcc6, $f22, $f24    # CHECK: c.un.d    $fcc6, $f22, $f24       # encoding: [0x46,0x38,0xb6,0x31]
> +        c.un.s    $fcc1, $f30, $f4     # CHECK: c.un.s    $fcc1, $f30, $f4        # encoding: [0x46,0x04,0xf1,0x31]
>          ceil.w.d  $f11,$f25
>          ceil.w.s  $f6,$f20
>          cfc1      $s1,$21
>
> Modified: llvm/trunk/test/MC/Mips/mips32r3/valid-xfail.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips32r3/valid-xfail.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips32r3/valid-xfail.s (original)
> +++ llvm/trunk/test/MC/Mips/mips32r3/valid-xfail.s Mon Jan 16 07:55:58 2017
> @@ -12,50 +12,22 @@
>          addqh.w         $s7,$s7,$k1
>          addqh_r.w       $8,$v1,$zero
>          alnv.ps         $f12,$f18,$f30,$12
> -        c.eq.d          $fcc1,$f15,$f15
>          c.eq.ps         $fcc5,$f0,$f9
> -        c.eq.s          $fcc5,$f24,$f17
> -        c.f.d           $fcc4,$f11,$f21
>          c.f.ps          $fcc6,$f11,$f11
> -        c.f.s           $fcc4,$f30,$f7
> -        c.le.d          $fcc4,$f18,$f1
>          c.le.ps         $fcc1,$f7,$f20
> -        c.le.s          $fcc6,$f24,$f4
> -        c.lt.d          $fcc3,$f9,$f3
>          c.lt.ps         $f19,$f5
> -        c.lt.s          $fcc2,$f17,$f14
> -        c.nge.d         $fcc5,$f21,$f16
>          c.nge.ps        $f1,$f26
> -        c.nge.s         $fcc3,$f11,$f8
>          c.ngl.ps        $f21,$f30
> -        c.ngl.s         $fcc2,$f31,$f23
>          c.ngle.ps       $fcc7,$f12,$f20
> -        c.ngle.s        $fcc2,$f18,$f23
> -        c.ngt.d         $fcc4,$f24,$f7
>          c.ngt.ps        $fcc5,$f30,$f6
> -        c.ngt.s         $fcc5,$f8,$f13
> -        c.ole.d         $fcc2,$f16,$f31
>          c.ole.ps        $fcc7,$f21,$f8
> -        c.ole.s         $fcc3,$f7,$f20
> -        c.olt.d         $fcc4,$f19,$f28
>          c.olt.ps        $fcc3,$f7,$f16
> -        c.olt.s         $fcc6,$f20,$f7
> -        c.seq.d         $fcc4,$f31,$f7
>          c.seq.ps        $fcc6,$f31,$f14
> -        c.seq.s         $fcc7,$f1,$f25
>          c.sf.ps         $fcc6,$f4,$f6
> -        c.ueq.d         $fcc4,$f13,$f25
>          c.ueq.ps        $fcc1,$f5,$f29
> -        c.ueq.s         $fcc6,$f3,$f30
> -        c.ule.d         $fcc7,$f25,$f18
>          c.ule.ps        $fcc6,$f17,$f3
> -        c.ule.s         $fcc7,$f21,$f30
> -        c.ult.d         $fcc6,$f6,$f17
>          c.ult.ps        $fcc7,$f14,$f0
> -        c.ult.s         $fcc7,$f24,$f10
> -        c.un.d          $fcc6,$f23,$f24
>          c.un.ps         $fcc4,$f2,$f26
> -        c.un.s          $fcc1,$f30,$f4
>          ceil.l.d        $f1,$f3
>          ceil.l.s        $f18,$f13
>          cfcmsa          $s6,$19
>
> 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=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips32r3/valid.s (original)
> +++ llvm/trunk/test/MC/Mips/mips32r3/valid.s Mon Jan 16 07:55:58 2017
> @@ -41,10 +41,38 @@ a:
>          bltzl     $s1,-9964            # CHECK: bltzl $17, -9964     # encoding: [0x06,0x22,0xf6,0x45]
>          bnel      $gp,$s4,5107         # CHECK: bnel $gp, $20, 5107  # encoding: [0x57,0x94,0x04,0xfc]
>          cache     1, 8($5)             # CHECK: cache 1, 8($5)       # encoding: [0xbc,0xa1,0x00,0x08]
> -        c.ngl.d   $f29,$f29
> -        c.ngle.d  $f0,$f16
> -        c.sf.d    $f30,$f0
> -        c.sf.s    $f14,$f22
> +        c.eq.d    $fcc1, $f14, $f14    # CHECK: c.eq.d    $fcc1, $f14, $f14       # encoding: [0x46,0x2e,0x71,0x32]
> +        c.eq.s    $fcc5, $f24, $f17    # CHECK: c.eq.s    $fcc5, $f24, $f17       # encoding: [0x46,0x11,0xc5,0x32]
> +        c.f.d     $fcc4, $f10, $f20    # CHECK: c.f.d     $fcc4, $f10, $f20       # encoding: [0x46,0x34,0x54,0x30]
> +        c.f.s     $fcc4, $f30, $f7     # CHECK: c.f.s     $fcc4, $f30, $f7        # encoding: [0x46,0x07,0xf4,0x30]
> +        c.le.d    $fcc4, $f18, $f0     # CHECK: c.le.d    $fcc4, $f18, $f0        # encoding: [0x46,0x20,0x94,0x3e]
> +        c.le.s    $fcc6, $f24, $f4     # CHECK: c.le.s    $fcc6, $f24, $f4        # encoding: [0x46,0x04,0xc6,0x3e]
> +        c.lt.d    $fcc3, $f8, $f2      # CHECK: c.lt.d    $fcc3, $f8, $f2         # encoding: [0x46,0x22,0x43,0x3c]
> +        c.lt.s    $fcc2, $f17, $f14    # CHECK: c.lt.s    $fcc2, $f17, $f14       # encoding: [0x46,0x0e,0x8a,0x3c]
> +        c.nge.d   $fcc5, $f20, $f16    # CHECK: c.nge.d   $fcc5, $f20, $f16       # encoding: [0x46,0x30,0xa5,0x3d]
> +        c.nge.s   $fcc3, $f11, $f8     # CHECK: c.nge.s   $fcc3, $f11, $f8        # encoding: [0x46,0x08,0x5b,0x3d]
> +        c.ngl.s   $fcc2, $f31, $f23    # CHECK: c.ngl.s   $fcc2, $f31, $f23       # encoding: [0x46,0x17,0xfa,0x3b]
> +        c.ngle.s  $fcc2, $f18, $f23    # CHECK: c.ngle.s  $fcc2, $f18, $f23       # encoding: [0x46,0x17,0x92,0x39]
> +        c.ngl.d   $f28, $f28           # CHECK: c.ngl.d   $f28, $f28              # encoding: [0x46,0x3c,0xe0,0x3b]
> +        c.ngle.d  $f0, $f16            # CHECK: c.ngle.d  $f0, $f16               # encoding: [0x46,0x30,0x00,0x39]
> +        c.ngt.d   $fcc4, $f24, $f6     # CHECK: c.ngt.d   $fcc4, $f24, $f6        # encoding: [0x46,0x26,0xc4,0x3f]
> +        c.ngt.s   $fcc5, $f8, $f13     # CHECK: c.ngt.s   $fcc5, $f8, $f13        # encoding: [0x46,0x0d,0x45,0x3f]
> +        c.ole.d   $fcc2, $f16, $f30    # CHECK: c.ole.d   $fcc2, $f16, $f30       # encoding: [0x46,0x3e,0x82,0x36]
> +        c.ole.s   $fcc3, $f7, $f20     # CHECK: c.ole.s   $fcc3, $f7, $f20        # encoding: [0x46,0x14,0x3b,0x36]
> +        c.olt.d   $fcc4, $f18, $f28    # CHECK: c.olt.d   $fcc4, $f18, $f28       # encoding: [0x46,0x3c,0x94,0x34]
> +        c.olt.s   $fcc6, $f20, $f7     # CHECK: c.olt.s   $fcc6, $f20, $f7        # encoding: [0x46,0x07,0xa6,0x34]
> +        c.seq.d   $fcc4, $f30, $f6     # CHECK: c.seq.d   $fcc4, $f30, $f6        # encoding: [0x46,0x26,0xf4,0x3a]
> +        c.seq.s   $fcc7, $f1, $f25     # CHECK: c.seq.s   $fcc7, $f1, $f25        # encoding: [0x46,0x19,0x0f,0x3a]
> +        c.sf.d    $f30, $f0            # CHECK: c.sf.d    $f30, $f0               # encoding: [0x46,0x20,0xf0,0x38]
> +        c.sf.s    $f14, $f22           # CHECK: c.sf.s    $f14, $f22              # encoding: [0x46,0x16,0x70,0x38]
> +        c.ueq.d   $fcc4, $f12, $f24    # CHECK: c.ueq.d   $fcc4, $f12, $f24       # encoding: [0x46,0x38,0x64,0x33]
> +        c.ueq.s   $fcc6, $f3, $f30     # CHECK: c.ueq.s   $fcc6, $f3, $f30        # encoding: [0x46,0x1e,0x1e,0x33]
> +        c.ule.d   $fcc7, $f24, $f18    # CHECK: c.ule.d   $fcc7, $f24, $f18       # encoding: [0x46,0x32,0xc7,0x37]
> +        c.ule.s   $fcc7, $f21, $f30    # CHECK: c.ule.s   $fcc7, $f21, $f30       # encoding: [0x46,0x1e,0xaf,0x37]
> +        c.ult.d   $fcc6, $f6, $f16     # CHECK: c.ult.d   $fcc6, $f6, $f16        # encoding: [0x46,0x30,0x36,0x35]
> +        c.ult.s   $fcc7, $f24, $f10    # CHECK: c.ult.s   $fcc7, $f24, $f10       # encoding: [0x46,0x0a,0xc7,0x35]
> +        c.un.d    $fcc6, $f22, $f24    # CHECK: c.un.d    $fcc6, $f22, $f24       # encoding: [0x46,0x38,0xb6,0x31]
> +        c.un.s    $fcc1, $f30, $f4     # CHECK: c.un.s    $fcc1, $f30, $f4        # encoding: [0x46,0x04,0xf1,0x31]
>          ceil.w.d  $f11,$f25
>          ceil.w.s  $f6,$f20
>          cfc1      $s1,$21
>
> Modified: llvm/trunk/test/MC/Mips/mips32r5/valid-xfail.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips32r5/valid-xfail.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips32r5/valid-xfail.s (original)
> +++ llvm/trunk/test/MC/Mips/mips32r5/valid-xfail.s Mon Jan 16 07:55:58 2017
> @@ -12,50 +12,22 @@
>          addqh.w         $s7,$s7,$k1
>          addqh_r.w       $8,$v1,$zero
>          alnv.ps         $f12,$f18,$f30,$12
> -        c.eq.d          $fcc1,$f15,$f15
>          c.eq.ps         $fcc5,$f0,$f9
> -        c.eq.s          $fcc5,$f24,$f17
> -        c.f.d           $fcc4,$f11,$f21
>          c.f.ps          $fcc6,$f11,$f11
> -        c.f.s           $fcc4,$f30,$f7
> -        c.le.d          $fcc4,$f18,$f1
>          c.le.ps         $fcc1,$f7,$f20
> -        c.le.s          $fcc6,$f24,$f4
> -        c.lt.d          $fcc3,$f9,$f3
>          c.lt.ps         $f19,$f5
> -        c.lt.s          $fcc2,$f17,$f14
> -        c.nge.d         $fcc5,$f21,$f16
>          c.nge.ps        $f1,$f26
> -        c.nge.s         $fcc3,$f11,$f8
>          c.ngl.ps        $f21,$f30
> -        c.ngl.s         $fcc2,$f31,$f23
>          c.ngle.ps       $fcc7,$f12,$f20
> -        c.ngle.s        $fcc2,$f18,$f23
> -        c.ngt.d         $fcc4,$f24,$f7
>          c.ngt.ps        $fcc5,$f30,$f6
> -        c.ngt.s         $fcc5,$f8,$f13
> -        c.ole.d         $fcc2,$f16,$f31
>          c.ole.ps        $fcc7,$f21,$f8
> -        c.ole.s         $fcc3,$f7,$f20
> -        c.olt.d         $fcc4,$f19,$f28
>          c.olt.ps        $fcc3,$f7,$f16
> -        c.olt.s         $fcc6,$f20,$f7
> -        c.seq.d         $fcc4,$f31,$f7
>          c.seq.ps        $fcc6,$f31,$f14
> -        c.seq.s         $fcc7,$f1,$f25
>          c.sf.ps         $fcc6,$f4,$f6
> -        c.ueq.d         $fcc4,$f13,$f25
>          c.ueq.ps        $fcc1,$f5,$f29
> -        c.ueq.s         $fcc6,$f3,$f30
> -        c.ule.d         $fcc7,$f25,$f18
>          c.ule.ps        $fcc6,$f17,$f3
> -        c.ule.s         $fcc7,$f21,$f30
> -        c.ult.d         $fcc6,$f6,$f17
>          c.ult.ps        $fcc7,$f14,$f0
> -        c.ult.s         $fcc7,$f24,$f10
> -        c.un.d          $fcc6,$f23,$f24
>          c.un.ps         $fcc4,$f2,$f26
> -        c.un.s          $fcc1,$f30,$f4
>          ceil.l.d        $f1,$f3
>          ceil.l.s        $f18,$f13
>          cfcmsa          $s6,$19
>
> 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=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips32r5/valid.s (original)
> +++ llvm/trunk/test/MC/Mips/mips32r5/valid.s Mon Jan 16 07:55:58 2017
> @@ -41,10 +41,38 @@ a:
>          bltzl     $s1,-9964            # CHECK: bltzl $17, -9964     # encoding: [0x06,0x22,0xf6,0x45]
>          bnel      $gp,$s4,5107         # CHECK: bnel $gp, $20, 5107  # encoding: [0x57,0x94,0x04,0xfc]
>          cache     1, 8($5)             # CHECK: cache 1, 8($5)       # encoding: [0xbc,0xa1,0x00,0x08]
> -        c.ngl.d   $f29,$f29
> -        c.ngle.d  $f0,$f16
> -        c.sf.d    $f30,$f0
> -        c.sf.s    $f14,$f22
> +        c.eq.d    $fcc1, $f14, $f14    # CHECK: c.eq.d    $fcc1, $f14, $f14       # encoding: [0x46,0x2e,0x71,0x32]
> +        c.eq.s    $fcc5, $f24, $f17    # CHECK: c.eq.s    $fcc5, $f24, $f17       # encoding: [0x46,0x11,0xc5,0x32]
> +        c.f.d     $fcc4, $f10, $f20    # CHECK: c.f.d     $fcc4, $f10, $f20       # encoding: [0x46,0x34,0x54,0x30]
> +        c.f.s     $fcc4, $f30, $f7     # CHECK: c.f.s     $fcc4, $f30, $f7        # encoding: [0x46,0x07,0xf4,0x30]
> +        c.le.d    $fcc4, $f18, $f0     # CHECK: c.le.d    $fcc4, $f18, $f0        # encoding: [0x46,0x20,0x94,0x3e]
> +        c.le.s    $fcc6, $f24, $f4     # CHECK: c.le.s    $fcc6, $f24, $f4        # encoding: [0x46,0x04,0xc6,0x3e]
> +        c.lt.d    $fcc3, $f8, $f2      # CHECK: c.lt.d    $fcc3, $f8, $f2         # encoding: [0x46,0x22,0x43,0x3c]
> +        c.lt.s    $fcc2, $f17, $f14    # CHECK: c.lt.s    $fcc2, $f17, $f14       # encoding: [0x46,0x0e,0x8a,0x3c]
> +        c.nge.d   $fcc5, $f20, $f16    # CHECK: c.nge.d   $fcc5, $f20, $f16       # encoding: [0x46,0x30,0xa5,0x3d]
> +        c.nge.s   $fcc3, $f11, $f8     # CHECK: c.nge.s   $fcc3, $f11, $f8        # encoding: [0x46,0x08,0x5b,0x3d]
> +        c.ngl.s   $fcc2, $f31, $f23    # CHECK: c.ngl.s   $fcc2, $f31, $f23       # encoding: [0x46,0x17,0xfa,0x3b]
> +        c.ngle.s  $fcc2, $f18, $f23    # CHECK: c.ngle.s  $fcc2, $f18, $f23       # encoding: [0x46,0x17,0x92,0x39]
> +        c.ngl.d   $f28, $f28           # CHECK: c.ngl.d   $f28, $f28              # encoding: [0x46,0x3c,0xe0,0x3b]
> +        c.ngle.d  $f0, $f16            # CHECK: c.ngle.d  $f0, $f16               # encoding: [0x46,0x30,0x00,0x39]
> +        c.ngt.d   $fcc4, $f24, $f6     # CHECK: c.ngt.d   $fcc4, $f24, $f6        # encoding: [0x46,0x26,0xc4,0x3f]
> +        c.ngt.s   $fcc5, $f8, $f13     # CHECK: c.ngt.s   $fcc5, $f8, $f13        # encoding: [0x46,0x0d,0x45,0x3f]
> +        c.ole.d   $fcc2, $f16, $f30    # CHECK: c.ole.d   $fcc2, $f16, $f30       # encoding: [0x46,0x3e,0x82,0x36]
> +        c.ole.s   $fcc3, $f7, $f20     # CHECK: c.ole.s   $fcc3, $f7, $f20        # encoding: [0x46,0x14,0x3b,0x36]
> +        c.olt.d   $fcc4, $f18, $f28    # CHECK: c.olt.d   $fcc4, $f18, $f28       # encoding: [0x46,0x3c,0x94,0x34]
> +        c.olt.s   $fcc6, $f20, $f7     # CHECK: c.olt.s   $fcc6, $f20, $f7        # encoding: [0x46,0x07,0xa6,0x34]
> +        c.seq.d   $fcc4, $f30, $f6     # CHECK: c.seq.d   $fcc4, $f30, $f6        # encoding: [0x46,0x26,0xf4,0x3a]
> +        c.seq.s   $fcc7, $f1, $f25     # CHECK: c.seq.s   $fcc7, $f1, $f25        # encoding: [0x46,0x19,0x0f,0x3a]
> +        c.sf.d    $f30, $f0            # CHECK: c.sf.d    $f30, $f0               # encoding: [0x46,0x20,0xf0,0x38]
> +        c.sf.s    $f14, $f22           # CHECK: c.sf.s    $f14, $f22              # encoding: [0x46,0x16,0x70,0x38]
> +        c.ueq.d   $fcc4, $f12, $f24    # CHECK: c.ueq.d   $fcc4, $f12, $f24       # encoding: [0x46,0x38,0x64,0x33]
> +        c.ueq.s   $fcc6, $f3, $f30     # CHECK: c.ueq.s   $fcc6, $f3, $f30        # encoding: [0x46,0x1e,0x1e,0x33]
> +        c.ule.d   $fcc7, $f24, $f18    # CHECK: c.ule.d   $fcc7, $f24, $f18       # encoding: [0x46,0x32,0xc7,0x37]
> +        c.ule.s   $fcc7, $f21, $f30    # CHECK: c.ule.s   $fcc7, $f21, $f30       # encoding: [0x46,0x1e,0xaf,0x37]
> +        c.ult.d   $fcc6, $f6, $f16     # CHECK: c.ult.d   $fcc6, $f6, $f16        # encoding: [0x46,0x30,0x36,0x35]
> +        c.ult.s   $fcc7, $f24, $f10    # CHECK: c.ult.s   $fcc7, $f24, $f10       # encoding: [0x46,0x0a,0xc7,0x35]
> +        c.un.d    $fcc6, $f22, $f24    # CHECK: c.un.d    $fcc6, $f22, $f24       # encoding: [0x46,0x38,0xb6,0x31]
> +        c.un.s    $fcc1, $f30, $f4     # CHECK: c.un.s    $fcc1, $f30, $f4        # encoding: [0x46,0x04,0xf1,0x31]
>          ceil.w.d  $f11,$f25
>          ceil.w.s  $f6,$f20
>          cfc1      $s1,$21
>
> Modified: llvm/trunk/test/MC/Mips/mips4/valid-xfail.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips4/valid-xfail.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips4/valid-xfail.s (original)
> +++ llvm/trunk/test/MC/Mips/mips4/valid-xfail.s Mon Jan 16 07:55:58 2017
> @@ -7,31 +7,19 @@
>  # XFAIL: *
>
>          .set noat
> -        c.eq.d          $fcc1,$f15,$f15
> -        c.eq.s          $fcc5,$f24,$f17
> -        c.f.d           $fcc4,$f11,$f21
> -        c.f.s           $fcc4,$f30,$f7
> -        c.le.d          $fcc4,$f18,$f1
> -        c.le.s          $fcc6,$f24,$f4
> -        c.lt.d          $fcc3,$f9,$f3
> -        c.lt.s          $fcc2,$f17,$f14
> -        c.nge.d         $fcc5,$f21,$f16
> -        c.nge.s         $fcc3,$f11,$f8
> -        c.ngl.s         $fcc2,$f31,$f23
> -        c.ngle.s        $fcc2,$f18,$f23
> -        c.ngt.d         $fcc4,$f24,$f7
> -        c.ngt.s         $fcc5,$f8,$f13
> -        c.ole.d         $fcc2,$f16,$f31
> -        c.ole.s         $fcc3,$f7,$f20
> -        c.olt.d         $fcc4,$f19,$f28
> -        c.olt.s         $fcc6,$f20,$f7
> -        c.seq.d         $fcc4,$f31,$f7
> -        c.seq.s         $fcc7,$f1,$f25
> -        c.ueq.d         $fcc4,$f13,$f25
> -        c.ueq.s         $fcc6,$f3,$f30
> -        c.ule.d         $fcc7,$f25,$f18
> -        c.ule.s         $fcc7,$f21,$f30
> -        c.ult.d         $fcc6,$f6,$f17
> -        c.ult.s         $fcc7,$f24,$f10
> -        c.un.d          $fcc6,$f23,$f24
> -        c.un.s          $fcc1,$f30,$f4
> +        c.eq.ps         $fcc5,$f0,$f9
> +        c.f.ps          $fcc6,$f11,$f11
> +        c.le.ps         $fcc1,$f7,$f20
> +        c.lt.ps         $f19,$f5
> +        c.nge.ps        $f1,$f26
> +        c.ngl.ps        $f21,$f30
> +        c.ngle.ps       $fcc7,$f12,$f20
> +        c.ngt.ps        $fcc5,$f30,$f6
> +        c.ole.ps        $fcc7,$f21,$f8
> +        c.olt.ps        $fcc3,$f7,$f16
> +        c.seq.ps        $fcc6,$f31,$f14
> +        c.sf.ps         $fcc6,$f4,$f6
> +        c.ueq.ps        $fcc1,$f5,$f29
> +        c.ule.ps        $fcc6,$f17,$f3
> +        c.ult.ps        $fcc7,$f14,$f0
> +        c.un.ps         $fcc4,$f2,$f26
>
> Modified: llvm/trunk/test/MC/Mips/mips4/valid.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips4/valid.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips4/valid.s (original)
> +++ llvm/trunk/test/MC/Mips/mips4/valid.s Mon Jan 16 07:55:58 2017
> @@ -41,10 +41,38 @@ a:
>          bltzl     $s1,-9964            # CHECK: bltzl $17, -9964     # encoding: [0x06,0x22,0xf6,0x45]
>          bnel      $gp,$s4,5107         # CHECK: bnel $gp, $20, 5107  # encoding: [0x57,0x94,0x04,0xfc]
>          cache     1, 8($5)             # CHECK: cache 1, 8($5)   # encoding: [0xbc,0xa1,0x00,0x08]
> -        c.ngl.d   $f29,$f29
> -        c.ngle.d  $f0,$f16
> -        c.sf.d    $f30,$f0
> -        c.sf.s    $f14,$f22
> +        c.eq.d    $fcc1, $f14, $f14    # CHECK: c.eq.d    $fcc1, $f14, $f14       # encoding: [0x46,0x2e,0x71,0x32]
> +        c.eq.s    $fcc5, $f24, $f17    # CHECK: c.eq.s    $fcc5, $f24, $f17       # encoding: [0x46,0x11,0xc5,0x32]
> +        c.f.d     $fcc4, $f10, $f20    # CHECK: c.f.d     $fcc4, $f10, $f20       # encoding: [0x46,0x34,0x54,0x30]
> +        c.f.s     $fcc4, $f30, $f7     # CHECK: c.f.s     $fcc4, $f30, $f7        # encoding: [0x46,0x07,0xf4,0x30]
> +        c.le.d    $fcc4, $f18, $f0     # CHECK: c.le.d    $fcc4, $f18, $f0        # encoding: [0x46,0x20,0x94,0x3e]
> +        c.le.s    $fcc6, $f24, $f4     # CHECK: c.le.s    $fcc6, $f24, $f4        # encoding: [0x46,0x04,0xc6,0x3e]
> +        c.lt.d    $fcc3, $f8, $f2      # CHECK: c.lt.d    $fcc3, $f8, $f2         # encoding: [0x46,0x22,0x43,0x3c]
> +        c.lt.s    $fcc2, $f17, $f14    # CHECK: c.lt.s    $fcc2, $f17, $f14       # encoding: [0x46,0x0e,0x8a,0x3c]
> +        c.nge.d   $fcc5, $f20, $f16    # CHECK: c.nge.d   $fcc5, $f20, $f16       # encoding: [0x46,0x30,0xa5,0x3d]
> +        c.nge.s   $fcc3, $f11, $f8     # CHECK: c.nge.s   $fcc3, $f11, $f8        # encoding: [0x46,0x08,0x5b,0x3d]
> +        c.ngl.s   $fcc2, $f31, $f23    # CHECK: c.ngl.s   $fcc2, $f31, $f23       # encoding: [0x46,0x17,0xfa,0x3b]
> +        c.ngle.s  $fcc2, $f18, $f23    # CHECK: c.ngle.s  $fcc2, $f18, $f23       # encoding: [0x46,0x17,0x92,0x39]
> +        c.ngl.d   $f28, $f28           # CHECK: c.ngl.d   $f28, $f28              # encoding: [0x46,0x3c,0xe0,0x3b]
> +        c.ngle.d  $f0, $f16            # CHECK: c.ngle.d  $f0, $f16               # encoding: [0x46,0x30,0x00,0x39]
> +        c.ngt.d   $fcc4, $f24, $f6     # CHECK: c.ngt.d   $fcc4, $f24, $f6        # encoding: [0x46,0x26,0xc4,0x3f]
> +        c.ngt.s   $fcc5, $f8, $f13     # CHECK: c.ngt.s   $fcc5, $f8, $f13        # encoding: [0x46,0x0d,0x45,0x3f]
> +        c.ole.d   $fcc2, $f16, $f30    # CHECK: c.ole.d   $fcc2, $f16, $f30       # encoding: [0x46,0x3e,0x82,0x36]
> +        c.ole.s   $fcc3, $f7, $f20     # CHECK: c.ole.s   $fcc3, $f7, $f20        # encoding: [0x46,0x14,0x3b,0x36]
> +        c.olt.d   $fcc4, $f18, $f28    # CHECK: c.olt.d   $fcc4, $f18, $f28       # encoding: [0x46,0x3c,0x94,0x34]
> +        c.olt.s   $fcc6, $f20, $f7     # CHECK: c.olt.s   $fcc6, $f20, $f7        # encoding: [0x46,0x07,0xa6,0x34]
> +        c.seq.d   $fcc4, $f30, $f6     # CHECK: c.seq.d   $fcc4, $f30, $f6        # encoding: [0x46,0x26,0xf4,0x3a]
> +        c.seq.s   $fcc7, $f1, $f25     # CHECK: c.seq.s   $fcc7, $f1, $f25        # encoding: [0x46,0x19,0x0f,0x3a]
> +        c.sf.d    $f30, $f0            # CHECK: c.sf.d    $f30, $f0               # encoding: [0x46,0x20,0xf0,0x38]
> +        c.sf.s    $f14, $f22           # CHECK: c.sf.s    $f14, $f22              # encoding: [0x46,0x16,0x70,0x38]
> +        c.ueq.d   $fcc4, $f12, $f24    # CHECK: c.ueq.d   $fcc4, $f12, $f24       # encoding: [0x46,0x38,0x64,0x33]
> +        c.ueq.s   $fcc6, $f3, $f30     # CHECK: c.ueq.s   $fcc6, $f3, $f30        # encoding: [0x46,0x1e,0x1e,0x33]
> +        c.ule.d   $fcc7, $f24, $f18    # CHECK: c.ule.d   $fcc7, $f24, $f18       # encoding: [0x46,0x32,0xc7,0x37]
> +        c.ule.s   $fcc7, $f21, $f30    # CHECK: c.ule.s   $fcc7, $f21, $f30       # encoding: [0x46,0x1e,0xaf,0x37]
> +        c.ult.d   $fcc6, $f6, $f16     # CHECK: c.ult.d   $fcc6, $f6, $f16        # encoding: [0x46,0x30,0x36,0x35]
> +        c.ult.s   $fcc7, $f24, $f10    # CHECK: c.ult.s   $fcc7, $f24, $f10       # encoding: [0x46,0x0a,0xc7,0x35]
> +        c.un.d    $fcc6, $f22, $f24    # CHECK: c.un.d    $fcc6, $f22, $f24       # encoding: [0x46,0x38,0xb6,0x31]
> +        c.un.s    $fcc1, $f30, $f4     # CHECK: c.un.s    $fcc1, $f30, $f4        # encoding: [0x46,0x04,0xf1,0x31]
>          ceil.l.d  $f1,$f3
>          ceil.l.s  $f18,$f13
>          ceil.w.d  $f11,$f25
>
> Modified: llvm/trunk/test/MC/Mips/mips5/valid-xfail.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips5/valid-xfail.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips5/valid-xfail.s (original)
> +++ llvm/trunk/test/MC/Mips/mips5/valid-xfail.s Mon Jan 16 07:55:58 2017
> @@ -10,50 +10,22 @@
>          abs.ps          $f22,$f8
>          add.ps          $f25,$f27,$f13
>          alnv.ps         $f12,$f18,$f30,$12
> -        c.eq.d          $fcc1,$f15,$f15
>          c.eq.ps         $fcc5,$f0,$f9
> -        c.eq.s          $fcc5,$f24,$f17
> -        c.f.d           $fcc4,$f11,$f21
>          c.f.ps          $fcc6,$f11,$f11
> -        c.f.s           $fcc4,$f30,$f7
> -        c.le.d          $fcc4,$f18,$f1
>          c.le.ps         $fcc1,$f7,$f20
> -        c.le.s          $fcc6,$f24,$f4
> -        c.lt.d          $fcc3,$f9,$f3
>          c.lt.ps         $f19,$f5
> -        c.lt.s          $fcc2,$f17,$f14
> -        c.nge.d         $fcc5,$f21,$f16
>          c.nge.ps        $f1,$f26
> -        c.nge.s         $fcc3,$f11,$f8
>          c.ngl.ps        $f21,$f30
> -        c.ngl.s         $fcc2,$f31,$f23
>          c.ngle.ps       $fcc7,$f12,$f20
> -        c.ngle.s        $fcc2,$f18,$f23
> -        c.ngt.d         $fcc4,$f24,$f7
>          c.ngt.ps        $fcc5,$f30,$f6
> -        c.ngt.s         $fcc5,$f8,$f13
> -        c.ole.d         $fcc2,$f16,$f31
>          c.ole.ps        $fcc7,$f21,$f8
> -        c.ole.s         $fcc3,$f7,$f20
> -        c.olt.d         $fcc4,$f19,$f28
>          c.olt.ps        $fcc3,$f7,$f16
> -        c.olt.s         $fcc6,$f20,$f7
> -        c.seq.d         $fcc4,$f31,$f7
>          c.seq.ps        $fcc6,$f31,$f14
> -        c.seq.s         $fcc7,$f1,$f25
>          c.sf.ps         $fcc6,$f4,$f6
> -        c.ueq.d         $fcc4,$f13,$f25
>          c.ueq.ps        $fcc1,$f5,$f29
> -        c.ueq.s         $fcc6,$f3,$f30
> -        c.ule.d         $fcc7,$f25,$f18
>          c.ule.ps        $fcc6,$f17,$f3
> -        c.ule.s         $fcc7,$f21,$f30
> -        c.ult.d         $fcc6,$f6,$f17
>          c.ult.ps        $fcc7,$f14,$f0
> -        c.ult.s         $fcc7,$f24,$f10
> -        c.un.d          $fcc6,$f23,$f24
>          c.un.ps         $fcc4,$f2,$f26
> -        c.un.s          $fcc1,$f30,$f4
>          cvt.ps.s        $f3,$f18,$f19
>          cvt.s.pl        $f30,$f1
>          cvt.s.pu        $f14,$f25
>
> Modified: llvm/trunk/test/MC/Mips/mips5/valid.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips5/valid.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips5/valid.s (original)
> +++ llvm/trunk/test/MC/Mips/mips5/valid.s Mon Jan 16 07:55:58 2017
> @@ -41,10 +41,38 @@ a:
>          bltzl     $s1,-9964            # CHECK: bltzl $17, -9964     # encoding: [0x06,0x22,0xf6,0x45]
>          bnel      $gp,$s4,5107         # CHECK: bnel $gp, $20, 5107  # encoding: [0x57,0x94,0x04,0xfc]
>          cache     1, 8($5)             # CHECK: cache 1, 8($5)   # encoding: [0xbc,0xa1,0x00,0x08]
> -        c.ngl.d   $f29,$f29
> -        c.ngle.d  $f0,$f16
> -        c.sf.d    $f30,$f0
> -        c.sf.s    $f14,$f22
> +        c.eq.d    $fcc1, $f14, $f14    # CHECK: c.eq.d    $fcc1, $f14, $f14       # encoding: [0x46,0x2e,0x71,0x32]
> +        c.eq.s    $fcc5, $f24, $f17    # CHECK: c.eq.s    $fcc5, $f24, $f17       # encoding: [0x46,0x11,0xc5,0x32]
> +        c.f.d     $fcc4, $f10, $f20    # CHECK: c.f.d     $fcc4, $f10, $f20       # encoding: [0x46,0x34,0x54,0x30]
> +        c.f.s     $fcc4, $f30, $f7     # CHECK: c.f.s     $fcc4, $f30, $f7        # encoding: [0x46,0x07,0xf4,0x30]
> +        c.le.d    $fcc4, $f18, $f0     # CHECK: c.le.d    $fcc4, $f18, $f0        # encoding: [0x46,0x20,0x94,0x3e]
> +        c.le.s    $fcc6, $f24, $f4     # CHECK: c.le.s    $fcc6, $f24, $f4        # encoding: [0x46,0x04,0xc6,0x3e]
> +        c.lt.d    $fcc3, $f8, $f2      # CHECK: c.lt.d    $fcc3, $f8, $f2         # encoding: [0x46,0x22,0x43,0x3c]
> +        c.lt.s    $fcc2, $f17, $f14    # CHECK: c.lt.s    $fcc2, $f17, $f14       # encoding: [0x46,0x0e,0x8a,0x3c]
> +        c.nge.d   $fcc5, $f20, $f16    # CHECK: c.nge.d   $fcc5, $f20, $f16       # encoding: [0x46,0x30,0xa5,0x3d]
> +        c.nge.s   $fcc3, $f11, $f8     # CHECK: c.nge.s   $fcc3, $f11, $f8        # encoding: [0x46,0x08,0x5b,0x3d]
> +        c.ngl.s   $fcc2, $f31, $f23    # CHECK: c.ngl.s   $fcc2, $f31, $f23       # encoding: [0x46,0x17,0xfa,0x3b]
> +        c.ngle.s  $fcc2, $f18, $f23    # CHECK: c.ngle.s  $fcc2, $f18, $f23       # encoding: [0x46,0x17,0x92,0x39]
> +        c.ngl.d   $f28, $f28           # CHECK: c.ngl.d   $f28, $f28              # encoding: [0x46,0x3c,0xe0,0x3b]
> +        c.ngle.d  $f0, $f16            # CHECK: c.ngle.d  $f0, $f16               # encoding: [0x46,0x30,0x00,0x39]
> +        c.ngt.d   $fcc4, $f24, $f6     # CHECK: c.ngt.d   $fcc4, $f24, $f6        # encoding: [0x46,0x26,0xc4,0x3f]
> +        c.ngt.s   $fcc5, $f8, $f13     # CHECK: c.ngt.s   $fcc5, $f8, $f13        # encoding: [0x46,0x0d,0x45,0x3f]
> +        c.ole.d   $fcc2, $f16, $f30    # CHECK: c.ole.d   $fcc2, $f16, $f30       # encoding: [0x46,0x3e,0x82,0x36]
> +        c.ole.s   $fcc3, $f7, $f20     # CHECK: c.ole.s   $fcc3, $f7, $f20        # encoding: [0x46,0x14,0x3b,0x36]
> +        c.olt.d   $fcc4, $f18, $f28    # CHECK: c.olt.d   $fcc4, $f18, $f28       # encoding: [0x46,0x3c,0x94,0x34]
> +        c.olt.s   $fcc6, $f20, $f7     # CHECK: c.olt.s   $fcc6, $f20, $f7        # encoding: [0x46,0x07,0xa6,0x34]
> +        c.seq.d   $fcc4, $f30, $f6     # CHECK: c.seq.d   $fcc4, $f30, $f6        # encoding: [0x46,0x26,0xf4,0x3a]
> +        c.seq.s   $fcc7, $f1, $f25     # CHECK: c.seq.s   $fcc7, $f1, $f25        # encoding: [0x46,0x19,0x0f,0x3a]
> +        c.sf.d    $f30, $f0            # CHECK: c.sf.d    $f30, $f0               # encoding: [0x46,0x20,0xf0,0x38]
> +        c.sf.s    $f14, $f22           # CHECK: c.sf.s    $f14, $f22              # encoding: [0x46,0x16,0x70,0x38]
> +        c.ueq.d   $fcc4, $f12, $f24    # CHECK: c.ueq.d   $fcc4, $f12, $f24       # encoding: [0x46,0x38,0x64,0x33]
> +        c.ueq.s   $fcc6, $f3, $f30     # CHECK: c.ueq.s   $fcc6, $f3, $f30        # encoding: [0x46,0x1e,0x1e,0x33]
> +        c.ule.d   $fcc7, $f24, $f18    # CHECK: c.ule.d   $fcc7, $f24, $f18       # encoding: [0x46,0x32,0xc7,0x37]
> +        c.ule.s   $fcc7, $f21, $f30    # CHECK: c.ule.s   $fcc7, $f21, $f30       # encoding: [0x46,0x1e,0xaf,0x37]
> +        c.ult.d   $fcc6, $f6, $f16     # CHECK: c.ult.d   $fcc6, $f6, $f16        # encoding: [0x46,0x30,0x36,0x35]
> +        c.ult.s   $fcc7, $f24, $f10    # CHECK: c.ult.s   $fcc7, $f24, $f10       # encoding: [0x46,0x0a,0xc7,0x35]
> +        c.un.d    $fcc6, $f22, $f24    # CHECK: c.un.d    $fcc6, $f22, $f24       # encoding: [0x46,0x38,0xb6,0x31]
> +        c.un.s    $fcc1, $f30, $f4     # CHECK: c.un.s    $fcc1, $f30, $f4        # encoding: [0x46,0x04,0xf1,0x31]
>          ceil.l.d  $f1,$f3
>          ceil.l.s  $f18,$f13
>          ceil.w.d  $f11,$f25
>
> Modified: llvm/trunk/test/MC/Mips/mips64/valid-xfail.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips64/valid-xfail.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips64/valid-xfail.s (original)
> +++ llvm/trunk/test/MC/Mips/mips64/valid-xfail.s Mon Jan 16 07:55:58 2017
> @@ -13,50 +13,22 @@
>          alnv.ob         $v31,$v23,$v30,$at
>          alnv.ob         $v8,$v17,$v30,$a1
>          alnv.ps         $f12,$f18,$f30,$12
> -        c.eq.d          $fcc1,$f15,$f15
>          c.eq.ps         $fcc5,$f0,$f9
> -        c.eq.s          $fcc5,$f24,$f17
> -        c.f.d           $fcc4,$f11,$f21
>          c.f.ps          $fcc6,$f11,$f11
> -        c.f.s           $fcc4,$f30,$f7
> -        c.le.d          $fcc4,$f18,$f1
>          c.le.ps         $fcc1,$f7,$f20
> -        c.le.s          $fcc6,$f24,$f4
> -        c.lt.d          $fcc3,$f9,$f3
>          c.lt.ps         $f19,$f5
> -        c.lt.s          $fcc2,$f17,$f14
> -        c.nge.d         $fcc5,$f21,$f16
>          c.nge.ps        $f1,$f26
> -        c.nge.s         $fcc3,$f11,$f8
>          c.ngl.ps        $f21,$f30
> -        c.ngl.s         $fcc2,$f31,$f23
>          c.ngle.ps       $fcc7,$f12,$f20
> -        c.ngle.s        $fcc2,$f18,$f23
> -        c.ngt.d         $fcc4,$f24,$f7
>          c.ngt.ps        $fcc5,$f30,$f6
> -        c.ngt.s         $fcc5,$f8,$f13
> -        c.ole.d         $fcc2,$f16,$f31
>          c.ole.ps        $fcc7,$f21,$f8
> -        c.ole.s         $fcc3,$f7,$f20
> -        c.olt.d         $fcc4,$f19,$f28
>          c.olt.ps        $fcc3,$f7,$f16
> -        c.olt.s         $fcc6,$f20,$f7
> -        c.seq.d         $fcc4,$f31,$f7
>          c.seq.ps        $fcc6,$f31,$f14
> -        c.seq.s         $fcc7,$f1,$f25
>          c.sf.ps         $fcc6,$f4,$f6
> -        c.ueq.d         $fcc4,$f13,$f25
>          c.ueq.ps        $fcc1,$f5,$f29
> -        c.ueq.s         $fcc6,$f3,$f30
> -        c.ule.d         $fcc7,$f25,$f18
>          c.ule.ps        $fcc6,$f17,$f3
> -        c.ule.s         $fcc7,$f21,$f30
> -        c.ult.d         $fcc6,$f6,$f17
>          c.ult.ps        $fcc7,$f14,$f0
> -        c.ult.s         $fcc7,$f24,$f10
> -        c.un.d          $fcc6,$f23,$f24
>          c.un.ps         $fcc4,$f2,$f26
> -        c.un.s          $fcc1,$f30,$f4
>          cvt.ps.s        $f3,$f18,$f19
>          cvt.s.pl        $f30,$f1
>          cvt.s.pu        $f14,$f25
>
> Modified: llvm/trunk/test/MC/Mips/mips64/valid.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips64/valid.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips64/valid.s (original)
> +++ llvm/trunk/test/MC/Mips/mips64/valid.s Mon Jan 16 07:55:58 2017
> @@ -41,10 +41,38 @@ a:
>          bltzl     $s1,-9964            # CHECK: bltzl $17, -9964     # encoding: [0x06,0x22,0xf6,0x45]
>          bnel      $gp,$s4,5107         # CHECK: bnel $gp, $20, 5107  # encoding: [0x57,0x94,0x04,0xfc]
>          cache     1, 8($5)             # CHECK: cache 1, 8($5)       # encoding: [0xbc,0xa1,0x00,0x08]
> -        c.ngl.d   $f29,$f29
> -        c.ngle.d  $f0,$f16
> -        c.sf.d    $f30,$f0
> -        c.sf.s    $f14,$f22
> +        c.eq.d    $fcc1, $f14, $f14    # CHECK: c.eq.d    $fcc1, $f14, $f14       # encoding: [0x46,0x2e,0x71,0x32]
> +        c.eq.s    $fcc5, $f24, $f17    # CHECK: c.eq.s    $fcc5, $f24, $f17       # encoding: [0x46,0x11,0xc5,0x32]
> +        c.f.d     $fcc4, $f10, $f20    # CHECK: c.f.d     $fcc4, $f10, $f20       # encoding: [0x46,0x34,0x54,0x30]
> +        c.f.s     $fcc4, $f30, $f7     # CHECK: c.f.s     $fcc4, $f30, $f7        # encoding: [0x46,0x07,0xf4,0x30]
> +        c.le.d    $fcc4, $f18, $f0     # CHECK: c.le.d    $fcc4, $f18, $f0        # encoding: [0x46,0x20,0x94,0x3e]
> +        c.le.s    $fcc6, $f24, $f4     # CHECK: c.le.s    $fcc6, $f24, $f4        # encoding: [0x46,0x04,0xc6,0x3e]
> +        c.lt.d    $fcc3, $f8, $f2      # CHECK: c.lt.d    $fcc3, $f8, $f2         # encoding: [0x46,0x22,0x43,0x3c]
> +        c.lt.s    $fcc2, $f17, $f14    # CHECK: c.lt.s    $fcc2, $f17, $f14       # encoding: [0x46,0x0e,0x8a,0x3c]
> +        c.nge.d   $fcc5, $f20, $f16    # CHECK: c.nge.d   $fcc5, $f20, $f16       # encoding: [0x46,0x30,0xa5,0x3d]
> +        c.nge.s   $fcc3, $f11, $f8     # CHECK: c.nge.s   $fcc3, $f11, $f8        # encoding: [0x46,0x08,0x5b,0x3d]
> +        c.ngl.s   $fcc2, $f31, $f23    # CHECK: c.ngl.s   $fcc2, $f31, $f23       # encoding: [0x46,0x17,0xfa,0x3b]
> +        c.ngle.s  $fcc2, $f18, $f23    # CHECK: c.ngle.s  $fcc2, $f18, $f23       # encoding: [0x46,0x17,0x92,0x39]
> +        c.ngl.d   $f28, $f28           # CHECK: c.ngl.d   $f28, $f28              # encoding: [0x46,0x3c,0xe0,0x3b]
> +        c.ngle.d  $f0, $f16            # CHECK: c.ngle.d  $f0, $f16               # encoding: [0x46,0x30,0x00,0x39]
> +        c.ngt.d   $fcc4, $f24, $f6     # CHECK: c.ngt.d   $fcc4, $f24, $f6        # encoding: [0x46,0x26,0xc4,0x3f]
> +        c.ngt.s   $fcc5, $f8, $f13     # CHECK: c.ngt.s   $fcc5, $f8, $f13        # encoding: [0x46,0x0d,0x45,0x3f]
> +        c.ole.d   $fcc2, $f16, $f30    # CHECK: c.ole.d   $fcc2, $f16, $f30       # encoding: [0x46,0x3e,0x82,0x36]
> +        c.ole.s   $fcc3, $f7, $f20     # CHECK: c.ole.s   $fcc3, $f7, $f20        # encoding: [0x46,0x14,0x3b,0x36]
> +        c.olt.d   $fcc4, $f18, $f28    # CHECK: c.olt.d   $fcc4, $f18, $f28       # encoding: [0x46,0x3c,0x94,0x34]
> +        c.olt.s   $fcc6, $f20, $f7     # CHECK: c.olt.s   $fcc6, $f20, $f7        # encoding: [0x46,0x07,0xa6,0x34]
> +        c.seq.d   $fcc4, $f30, $f6     # CHECK: c.seq.d   $fcc4, $f30, $f6        # encoding: [0x46,0x26,0xf4,0x3a]
> +        c.seq.s   $fcc7, $f1, $f25     # CHECK: c.seq.s   $fcc7, $f1, $f25        # encoding: [0x46,0x19,0x0f,0x3a]
> +        c.sf.d    $f30, $f0            # CHECK: c.sf.d    $f30, $f0               # encoding: [0x46,0x20,0xf0,0x38]
> +        c.sf.s    $f14, $f22           # CHECK: c.sf.s    $f14, $f22              # encoding: [0x46,0x16,0x70,0x38]
> +        c.ueq.d   $fcc4, $f12, $f24    # CHECK: c.ueq.d   $fcc4, $f12, $f24       # encoding: [0x46,0x38,0x64,0x33]
> +        c.ueq.s   $fcc6, $f3, $f30     # CHECK: c.ueq.s   $fcc6, $f3, $f30        # encoding: [0x46,0x1e,0x1e,0x33]
> +        c.ule.d   $fcc7, $f24, $f18    # CHECK: c.ule.d   $fcc7, $f24, $f18       # encoding: [0x46,0x32,0xc7,0x37]
> +        c.ule.s   $fcc7, $f21, $f30    # CHECK: c.ule.s   $fcc7, $f21, $f30       # encoding: [0x46,0x1e,0xaf,0x37]
> +        c.ult.d   $fcc6, $f6, $f16     # CHECK: c.ult.d   $fcc6, $f6, $f16        # encoding: [0x46,0x30,0x36,0x35]
> +        c.ult.s   $fcc7, $f24, $f10    # CHECK: c.ult.s   $fcc7, $f24, $f10       # encoding: [0x46,0x0a,0xc7,0x35]
> +        c.un.d    $fcc6, $f22, $f24    # CHECK: c.un.d    $fcc6, $f22, $f24       # encoding: [0x46,0x38,0xb6,0x31]
> +        c.un.s    $fcc1, $f30, $f4     # CHECK: c.un.s    $fcc1, $f30, $f4        # encoding: [0x46,0x04,0xf1,0x31]
>          ceil.l.d  $f1,$f3
>          ceil.l.s  $f18,$f13
>          ceil.w.d  $f11,$f25
>
> Modified: llvm/trunk/test/MC/Mips/mips64r2/valid-xfail.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips64r2/valid-xfail.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips64r2/valid-xfail.s (original)
> +++ llvm/trunk/test/MC/Mips/mips64r2/valid-xfail.s Mon Jan 16 07:55:58 2017
> @@ -12,50 +12,22 @@
>          addqh.w         $s7,$s7,$k1
>          addqh_r.w       $8,$v1,$zero
>          alnv.ps         $f12,$f18,$f30,$12
> -        c.eq.d          $fcc1,$f15,$f15
>          c.eq.ps         $fcc5,$f0,$f9
> -        c.eq.s          $fcc5,$f24,$f17
> -        c.f.d           $fcc4,$f11,$f21
>          c.f.ps          $fcc6,$f11,$f11
> -        c.f.s           $fcc4,$f30,$f7
> -        c.le.d          $fcc4,$f18,$f1
>          c.le.ps         $fcc1,$f7,$f20
> -        c.le.s          $fcc6,$f24,$f4
> -        c.lt.d          $fcc3,$f9,$f3
>          c.lt.ps         $f19,$f5
> -        c.lt.s          $fcc2,$f17,$f14
> -        c.nge.d         $fcc5,$f21,$f16
>          c.nge.ps        $f1,$f26
> -        c.nge.s         $fcc3,$f11,$f8
>          c.ngl.ps        $f21,$f30
> -        c.ngl.s         $fcc2,$f31,$f23
>          c.ngle.ps       $fcc7,$f12,$f20
> -        c.ngle.s        $fcc2,$f18,$f23
> -        c.ngt.d         $fcc4,$f24,$f7
>          c.ngt.ps        $fcc5,$f30,$f6
> -        c.ngt.s         $fcc5,$f8,$f13
> -        c.ole.d         $fcc2,$f16,$f31
>          c.ole.ps        $fcc7,$f21,$f8
> -        c.ole.s         $fcc3,$f7,$f20
> -        c.olt.d         $fcc4,$f19,$f28
>          c.olt.ps        $fcc3,$f7,$f16
> -        c.olt.s         $fcc6,$f20,$f7
> -        c.seq.d         $fcc4,$f31,$f7
>          c.seq.ps        $fcc6,$f31,$f14
> -        c.seq.s         $fcc7,$f1,$f25
>          c.sf.ps         $fcc6,$f4,$f6
> -        c.ueq.d         $fcc4,$f13,$f25
>          c.ueq.ps        $fcc1,$f5,$f29
> -        c.ueq.s         $fcc6,$f3,$f30
> -        c.ule.d         $fcc7,$f25,$f18
>          c.ule.ps        $fcc6,$f17,$f3
> -        c.ule.s         $fcc7,$f21,$f30
> -        c.ult.d         $fcc6,$f6,$f17
>          c.ult.ps        $fcc7,$f14,$f0
> -        c.ult.s         $fcc7,$f24,$f10
> -        c.un.d          $fcc6,$f23,$f24
>          c.un.ps         $fcc4,$f2,$f26
> -        c.un.s          $fcc1,$f30,$f4
>          cvt.ps.s        $f3,$f18,$f19
>          cvt.s.pl        $f30,$f1
>          cvt.s.pu        $f14,$f25
>
> Modified: llvm/trunk/test/MC/Mips/mips64r2/valid.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips64r2/valid.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips64r2/valid.s (original)
> +++ llvm/trunk/test/MC/Mips/mips64r2/valid.s Mon Jan 16 07:55:58 2017
> @@ -41,10 +41,38 @@ a:
>          bltzl     $s1,-9964            # CHECK: bltzl $17, -9964     # encoding: [0x06,0x22,0xf6,0x45]
>          bnel      $gp,$s4,5107         # CHECK: bnel $gp, $20, 5107  # encoding: [0x57,0x94,0x04,0xfc]
>          cache     1, 8($5)             # CHECK: cache 1, 8($5)       # encoding: [0xbc,0xa1,0x00,0x08]
> -        c.ngl.d   $f29,$f29
> -        c.ngle.d  $f0,$f16
> -        c.sf.d    $f30,$f0
> -        c.sf.s    $f14,$f22
> +        c.eq.d    $fcc1, $f14, $f14    # CHECK: c.eq.d    $fcc1, $f14, $f14       # encoding: [0x46,0x2e,0x71,0x32]
> +        c.eq.s    $fcc5, $f24, $f17    # CHECK: c.eq.s    $fcc5, $f24, $f17       # encoding: [0x46,0x11,0xc5,0x32]
> +        c.f.d     $fcc4, $f10, $f20    # CHECK: c.f.d     $fcc4, $f10, $f20       # encoding: [0x46,0x34,0x54,0x30]
> +        c.f.s     $fcc4, $f30, $f7     # CHECK: c.f.s     $fcc4, $f30, $f7        # encoding: [0x46,0x07,0xf4,0x30]
> +        c.le.d    $fcc4, $f18, $f0     # CHECK: c.le.d    $fcc4, $f18, $f0        # encoding: [0x46,0x20,0x94,0x3e]
> +        c.le.s    $fcc6, $f24, $f4     # CHECK: c.le.s    $fcc6, $f24, $f4        # encoding: [0x46,0x04,0xc6,0x3e]
> +        c.lt.d    $fcc3, $f8, $f2      # CHECK: c.lt.d    $fcc3, $f8, $f2         # encoding: [0x46,0x22,0x43,0x3c]
> +        c.lt.s    $fcc2, $f17, $f14    # CHECK: c.lt.s    $fcc2, $f17, $f14       # encoding: [0x46,0x0e,0x8a,0x3c]
> +        c.nge.d   $fcc5, $f20, $f16    # CHECK: c.nge.d   $fcc5, $f20, $f16       # encoding: [0x46,0x30,0xa5,0x3d]
> +        c.nge.s   $fcc3, $f11, $f8     # CHECK: c.nge.s   $fcc3, $f11, $f8        # encoding: [0x46,0x08,0x5b,0x3d]
> +        c.ngl.s   $fcc2, $f31, $f23    # CHECK: c.ngl.s   $fcc2, $f31, $f23       # encoding: [0x46,0x17,0xfa,0x3b]
> +        c.ngle.s  $fcc2, $f18, $f23    # CHECK: c.ngle.s  $fcc2, $f18, $f23       # encoding: [0x46,0x17,0x92,0x39]
> +        c.ngl.d   $f28, $f28           # CHECK: c.ngl.d   $f28, $f28              # encoding: [0x46,0x3c,0xe0,0x3b]
> +        c.ngle.d  $f0, $f16            # CHECK: c.ngle.d  $f0, $f16               # encoding: [0x46,0x30,0x00,0x39]
> +        c.ngt.d   $fcc4, $f24, $f6     # CHECK: c.ngt.d   $fcc4, $f24, $f6        # encoding: [0x46,0x26,0xc4,0x3f]
> +        c.ngt.s   $fcc5, $f8, $f13     # CHECK: c.ngt.s   $fcc5, $f8, $f13        # encoding: [0x46,0x0d,0x45,0x3f]
> +        c.ole.d   $fcc2, $f16, $f30    # CHECK: c.ole.d   $fcc2, $f16, $f30       # encoding: [0x46,0x3e,0x82,0x36]
> +        c.ole.s   $fcc3, $f7, $f20     # CHECK: c.ole.s   $fcc3, $f7, $f20        # encoding: [0x46,0x14,0x3b,0x36]
> +        c.olt.d   $fcc4, $f18, $f28    # CHECK: c.olt.d   $fcc4, $f18, $f28       # encoding: [0x46,0x3c,0x94,0x34]
> +        c.olt.s   $fcc6, $f20, $f7     # CHECK: c.olt.s   $fcc6, $f20, $f7        # encoding: [0x46,0x07,0xa6,0x34]
> +        c.seq.d   $fcc4, $f30, $f6     # CHECK: c.seq.d   $fcc4, $f30, $f6        # encoding: [0x46,0x26,0xf4,0x3a]
> +        c.seq.s   $fcc7, $f1, $f25     # CHECK: c.seq.s   $fcc7, $f1, $f25        # encoding: [0x46,0x19,0x0f,0x3a]
> +        c.sf.d    $f30, $f0            # CHECK: c.sf.d    $f30, $f0               # encoding: [0x46,0x20,0xf0,0x38]
> +        c.sf.s    $f14, $f22           # CHECK: c.sf.s    $f14, $f22              # encoding: [0x46,0x16,0x70,0x38]
> +        c.ueq.d   $fcc4, $f12, $f24    # CHECK: c.ueq.d   $fcc4, $f12, $f24       # encoding: [0x46,0x38,0x64,0x33]
> +        c.ueq.s   $fcc6, $f3, $f30     # CHECK: c.ueq.s   $fcc6, $f3, $f30        # encoding: [0x46,0x1e,0x1e,0x33]
> +        c.ule.d   $fcc7, $f24, $f18    # CHECK: c.ule.d   $fcc7, $f24, $f18       # encoding: [0x46,0x32,0xc7,0x37]
> +        c.ule.s   $fcc7, $f21, $f30    # CHECK: c.ule.s   $fcc7, $f21, $f30       # encoding: [0x46,0x1e,0xaf,0x37]
> +        c.ult.d   $fcc6, $f6, $f16     # CHECK: c.ult.d   $fcc6, $f6, $f16        # encoding: [0x46,0x30,0x36,0x35]
> +        c.ult.s   $fcc7, $f24, $f10    # CHECK: c.ult.s   $fcc7, $f24, $f10       # encoding: [0x46,0x0a,0xc7,0x35]
> +        c.un.d    $fcc6, $f22, $f24    # CHECK: c.un.d    $fcc6, $f22, $f24       # encoding: [0x46,0x38,0xb6,0x31]
> +        c.un.s    $fcc1, $f30, $f4     # CHECK: c.un.s    $fcc1, $f30, $f4        # encoding: [0x46,0x04,0xf1,0x31]
>          ceil.l.d  $f1,$f3
>          ceil.l.s  $f18,$f13
>          ceil.w.d  $f11,$f25
>
> Modified: llvm/trunk/test/MC/Mips/mips64r3/valid-xfail.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips64r3/valid-xfail.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips64r3/valid-xfail.s (original)
> +++ llvm/trunk/test/MC/Mips/mips64r3/valid-xfail.s Mon Jan 16 07:55:58 2017
> @@ -15,50 +15,22 @@
>          alnv.ob         $v31,$v23,$v30,$at
>          alnv.ob         $v8,$v17,$v30,$a1
>          alnv.ps         $f12,$f18,$f30,$12
> -        c.eq.d          $fcc1,$f15,$f15
>          c.eq.ps         $fcc5,$f0,$f9
> -        c.eq.s          $fcc5,$f24,$f17
> -        c.f.d           $fcc4,$f11,$f21
>          c.f.ps          $fcc6,$f11,$f11
> -        c.f.s           $fcc4,$f30,$f7
> -        c.le.d          $fcc4,$f18,$f1
>          c.le.ps         $fcc1,$f7,$f20
> -        c.le.s          $fcc6,$f24,$f4
> -        c.lt.d          $fcc3,$f9,$f3
>          c.lt.ps         $f19,$f5
> -        c.lt.s          $fcc2,$f17,$f14
> -        c.nge.d         $fcc5,$f21,$f16
>          c.nge.ps        $f1,$f26
> -        c.nge.s         $fcc3,$f11,$f8
>          c.ngl.ps        $f21,$f30
> -        c.ngl.s         $fcc2,$f31,$f23
>          c.ngle.ps       $fcc7,$f12,$f20
> -        c.ngle.s        $fcc2,$f18,$f23
> -        c.ngt.d         $fcc4,$f24,$f7
>          c.ngt.ps        $fcc5,$f30,$f6
> -        c.ngt.s         $fcc5,$f8,$f13
> -        c.ole.d         $fcc2,$f16,$f31
>          c.ole.ps        $fcc7,$f21,$f8
> -        c.ole.s         $fcc3,$f7,$f20
> -        c.olt.d         $fcc4,$f19,$f28
>          c.olt.ps        $fcc3,$f7,$f16
> -        c.olt.s         $fcc6,$f20,$f7
> -        c.seq.d         $fcc4,$f31,$f7
>          c.seq.ps        $fcc6,$f31,$f14
> -        c.seq.s         $fcc7,$f1,$f25
>          c.sf.ps         $fcc6,$f4,$f6
> -        c.ueq.d         $fcc4,$f13,$f25
>          c.ueq.ps        $fcc1,$f5,$f29
> -        c.ueq.s         $fcc6,$f3,$f30
> -        c.ule.d         $fcc7,$f25,$f18
>          c.ule.ps        $fcc6,$f17,$f3
> -        c.ule.s         $fcc7,$f21,$f30
> -        c.ult.d         $fcc6,$f6,$f17
>          c.ult.ps        $fcc7,$f14,$f0
> -        c.ult.s         $fcc7,$f24,$f10
> -        c.un.d          $fcc6,$f23,$f24
>          c.un.ps         $fcc4,$f2,$f26
> -        c.un.s          $fcc1,$f30,$f4
>          cvt.ps.s        $f3,$f18,$f19
>          cvt.s.pl        $f30,$f1
>          cvt.s.pu        $f14,$f25
>
> Modified: llvm/trunk/test/MC/Mips/mips64r3/valid.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips64r3/valid.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips64r3/valid.s (original)
> +++ llvm/trunk/test/MC/Mips/mips64r3/valid.s Mon Jan 16 07:55:58 2017
> @@ -41,10 +41,38 @@ a:
>          bltzl     $s1,-9964            # CHECK: bltzl $17, -9964     # encoding: [0x06,0x22,0xf6,0x45]
>          bnel      $gp,$s4,5107         # CHECK: bnel $gp, $20, 5107  # encoding: [0x57,0x94,0x04,0xfc]
>          cache     1, 8($5)             # CHECK: cache 1, 8($5)       # encoding: [0xbc,0xa1,0x00,0x08]
> -        c.ngl.d   $f29,$f29
> -        c.ngle.d  $f0,$f16
> -        c.sf.d    $f30,$f0
> -        c.sf.s    $f14,$f22
> +        c.eq.d    $fcc1, $f14, $f14    # CHECK: c.eq.d    $fcc1, $f14, $f14       # encoding: [0x46,0x2e,0x71,0x32]
> +        c.eq.s    $fcc5, $f24, $f17    # CHECK: c.eq.s    $fcc5, $f24, $f17       # encoding: [0x46,0x11,0xc5,0x32]
> +        c.f.d     $fcc4, $f10, $f20    # CHECK: c.f.d     $fcc4, $f10, $f20       # encoding: [0x46,0x34,0x54,0x30]
> +        c.f.s     $fcc4, $f30, $f7     # CHECK: c.f.s     $fcc4, $f30, $f7        # encoding: [0x46,0x07,0xf4,0x30]
> +        c.le.d    $fcc4, $f18, $f0     # CHECK: c.le.d    $fcc4, $f18, $f0        # encoding: [0x46,0x20,0x94,0x3e]
> +        c.le.s    $fcc6, $f24, $f4     # CHECK: c.le.s    $fcc6, $f24, $f4        # encoding: [0x46,0x04,0xc6,0x3e]
> +        c.lt.d    $fcc3, $f8, $f2      # CHECK: c.lt.d    $fcc3, $f8, $f2         # encoding: [0x46,0x22,0x43,0x3c]
> +        c.lt.s    $fcc2, $f17, $f14    # CHECK: c.lt.s    $fcc2, $f17, $f14       # encoding: [0x46,0x0e,0x8a,0x3c]
> +        c.nge.d   $fcc5, $f20, $f16    # CHECK: c.nge.d   $fcc5, $f20, $f16       # encoding: [0x46,0x30,0xa5,0x3d]
> +        c.nge.s   $fcc3, $f11, $f8     # CHECK: c.nge.s   $fcc3, $f11, $f8        # encoding: [0x46,0x08,0x5b,0x3d]
> +        c.ngl.s   $fcc2, $f31, $f23    # CHECK: c.ngl.s   $fcc2, $f31, $f23       # encoding: [0x46,0x17,0xfa,0x3b]
> +        c.ngle.s  $fcc2, $f18, $f23    # CHECK: c.ngle.s  $fcc2, $f18, $f23       # encoding: [0x46,0x17,0x92,0x39]
> +        c.ngl.d   $f28, $f28           # CHECK: c.ngl.d   $f28, $f28              # encoding: [0x46,0x3c,0xe0,0x3b]
> +        c.ngle.d  $f0, $f16            # CHECK: c.ngle.d  $f0, $f16               # encoding: [0x46,0x30,0x00,0x39]
> +        c.ngt.d   $fcc4, $f24, $f6     # CHECK: c.ngt.d   $fcc4, $f24, $f6        # encoding: [0x46,0x26,0xc4,0x3f]
> +        c.ngt.s   $fcc5, $f8, $f13     # CHECK: c.ngt.s   $fcc5, $f8, $f13        # encoding: [0x46,0x0d,0x45,0x3f]
> +        c.ole.d   $fcc2, $f16, $f30    # CHECK: c.ole.d   $fcc2, $f16, $f30       # encoding: [0x46,0x3e,0x82,0x36]
> +        c.ole.s   $fcc3, $f7, $f20     # CHECK: c.ole.s   $fcc3, $f7, $f20        # encoding: [0x46,0x14,0x3b,0x36]
> +        c.olt.d   $fcc4, $f18, $f28    # CHECK: c.olt.d   $fcc4, $f18, $f28       # encoding: [0x46,0x3c,0x94,0x34]
> +        c.olt.s   $fcc6, $f20, $f7     # CHECK: c.olt.s   $fcc6, $f20, $f7        # encoding: [0x46,0x07,0xa6,0x34]
> +        c.seq.d   $fcc4, $f30, $f6     # CHECK: c.seq.d   $fcc4, $f30, $f6        # encoding: [0x46,0x26,0xf4,0x3a]
> +        c.seq.s   $fcc7, $f1, $f25     # CHECK: c.seq.s   $fcc7, $f1, $f25        # encoding: [0x46,0x19,0x0f,0x3a]
> +        c.sf.d    $f30, $f0            # CHECK: c.sf.d    $f30, $f0               # encoding: [0x46,0x20,0xf0,0x38]
> +        c.sf.s    $f14, $f22           # CHECK: c.sf.s    $f14, $f22              # encoding: [0x46,0x16,0x70,0x38]
> +        c.ueq.d   $fcc4, $f12, $f24    # CHECK: c.ueq.d   $fcc4, $f12, $f24       # encoding: [0x46,0x38,0x64,0x33]
> +        c.ueq.s   $fcc6, $f3, $f30     # CHECK: c.ueq.s   $fcc6, $f3, $f30        # encoding: [0x46,0x1e,0x1e,0x33]
> +        c.ule.d   $fcc7, $f24, $f18    # CHECK: c.ule.d   $fcc7, $f24, $f18       # encoding: [0x46,0x32,0xc7,0x37]
> +        c.ule.s   $fcc7, $f21, $f30    # CHECK: c.ule.s   $fcc7, $f21, $f30       # encoding: [0x46,0x1e,0xaf,0x37]
> +        c.ult.d   $fcc6, $f6, $f16     # CHECK: c.ult.d   $fcc6, $f6, $f16        # encoding: [0x46,0x30,0x36,0x35]
> +        c.ult.s   $fcc7, $f24, $f10    # CHECK: c.ult.s   $fcc7, $f24, $f10       # encoding: [0x46,0x0a,0xc7,0x35]
> +        c.un.d    $fcc6, $f22, $f24    # CHECK: c.un.d    $fcc6, $f22, $f24       # encoding: [0x46,0x38,0xb6,0x31]
> +        c.un.s    $fcc1, $f30, $f4     # CHECK: c.un.s    $fcc1, $f30, $f4        # encoding: [0x46,0x04,0xf1,0x31]
>          ceil.l.d  $f1,$f3
>          ceil.l.s  $f18,$f13
>          ceil.w.d  $f11,$f25
>
> Modified: llvm/trunk/test/MC/Mips/mips64r5/valid-xfail.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips64r5/valid-xfail.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips64r5/valid-xfail.s (original)
> +++ llvm/trunk/test/MC/Mips/mips64r5/valid-xfail.s Mon Jan 16 07:55:58 2017
> @@ -15,50 +15,22 @@
>          alnv.ob         $v31,$v23,$v30,$at
>          alnv.ob         $v8,$v17,$v30,$a1
>          alnv.ps         $f12,$f18,$f30,$12
> -        c.eq.d          $fcc1,$f15,$f15
>          c.eq.ps         $fcc5,$f0,$f9
> -        c.eq.s          $fcc5,$f24,$f17
> -        c.f.d           $fcc4,$f11,$f21
>          c.f.ps          $fcc6,$f11,$f11
> -        c.f.s           $fcc4,$f30,$f7
> -        c.le.d          $fcc4,$f18,$f1
>          c.le.ps         $fcc1,$f7,$f20
> -        c.le.s          $fcc6,$f24,$f4
> -        c.lt.d          $fcc3,$f9,$f3
>          c.lt.ps         $f19,$f5
> -        c.lt.s          $fcc2,$f17,$f14
> -        c.nge.d         $fcc5,$f21,$f16
>          c.nge.ps        $f1,$f26
> -        c.nge.s         $fcc3,$f11,$f8
>          c.ngl.ps        $f21,$f30
> -        c.ngl.s         $fcc2,$f31,$f23
>          c.ngle.ps       $fcc7,$f12,$f20
> -        c.ngle.s        $fcc2,$f18,$f23
> -        c.ngt.d         $fcc4,$f24,$f7
>          c.ngt.ps        $fcc5,$f30,$f6
> -        c.ngt.s         $fcc5,$f8,$f13
> -        c.ole.d         $fcc2,$f16,$f31
>          c.ole.ps        $fcc7,$f21,$f8
> -        c.ole.s         $fcc3,$f7,$f20
> -        c.olt.d         $fcc4,$f19,$f28
>          c.olt.ps        $fcc3,$f7,$f16
> -        c.olt.s         $fcc6,$f20,$f7
> -        c.seq.d         $fcc4,$f31,$f7
>          c.seq.ps        $fcc6,$f31,$f14
> -        c.seq.s         $fcc7,$f1,$f25
>          c.sf.ps         $fcc6,$f4,$f6
> -        c.ueq.d         $fcc4,$f13,$f25
>          c.ueq.ps        $fcc1,$f5,$f29
> -        c.ueq.s         $fcc6,$f3,$f30
> -        c.ule.d         $fcc7,$f25,$f18
>          c.ule.ps        $fcc6,$f17,$f3
> -        c.ule.s         $fcc7,$f21,$f30
> -        c.ult.d         $fcc6,$f6,$f17
>          c.ult.ps        $fcc7,$f14,$f0
> -        c.ult.s         $fcc7,$f24,$f10
> -        c.un.d          $fcc6,$f23,$f24
>          c.un.ps         $fcc4,$f2,$f26
> -        c.un.s          $fcc1,$f30,$f4
>          cvt.ps.s        $f3,$f18,$f19
>          cvt.s.pl        $f30,$f1
>          cvt.s.pu        $f14,$f25
>
> Modified: llvm/trunk/test/MC/Mips/mips64r5/valid.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips64r5/valid.s?rev=292117&r1=292116&r2=292117&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Mips/mips64r5/valid.s (original)
> +++ llvm/trunk/test/MC/Mips/mips64r5/valid.s Mon Jan 16 07:55:58 2017
> @@ -41,10 +41,38 @@ a:
>          bltzl     $s1,-9964            # CHECK: bltzl $17, -9964     # encoding: [0x06,0x22,0xf6,0x45]
>          bnel      $gp,$s4,5107         # CHECK: bnel $gp, $20, 5107  # encoding: [0x57,0x94,0x04,0xfc]
>          cache     1, 8($5)             # CHECK: cache 1, 8($5)       # encoding: [0xbc,0xa1,0x00,0x08]
> -        c.ngl.d   $f29,$f29
> -        c.ngle.d  $f0,$f16
> -        c.sf.d    $f30,$f0
> -        c.sf.s    $f14,$f22
> +        c.eq.d    $fcc1, $f14, $f14    # CHECK: c.eq.d    $fcc1, $f14, $f14       # encoding: [0x46,0x2e,0x71,0x32]
> +        c.eq.s    $fcc5, $f24, $f17    # CHECK: c.eq.s    $fcc5, $f24, $f17       # encoding: [0x46,0x11,0xc5,0x32]
> +        c.f.d     $fcc4, $f10, $f20    # CHECK: c.f.d     $fcc4, $f10, $f20       # encoding: [0x46,0x34,0x54,0x30]
> +        c.f.s     $fcc4, $f30, $f7     # CHECK: c.f.s     $fcc4, $f30, $f7        # encoding: [0x46,0x07,0xf4,0x30]
> +        c.le.d    $fcc4, $f18, $f0     # CHECK: c.le.d    $fcc4, $f18, $f0        # encoding: [0x46,0x20,0x94,0x3e]
> +        c.le.s    $fcc6, $f24, $f4     # CHECK: c.le.s    $fcc6, $f24, $f4        # encoding: [0x46,0x04,0xc6,0x3e]
> +        c.lt.d    $fcc3, $f8, $f2      # CHECK: c.lt.d    $fcc3, $f8, $f2         # encoding: [0x46,0x22,0x43,0x3c]
> +        c.lt.s    $fcc2, $f17, $f14    # CHECK: c.lt.s    $fcc2, $f17, $f14       # encoding: [0x46,0x0e,0x8a,0x3c]
> +        c.nge.d   $fcc5, $f20, $f16    # CHECK: c.nge.d   $fcc5, $f20, $f16       # encoding: [0x46,0x30,0xa5,0x3d]
> +        c.nge.s   $fcc3, $f11, $f8     # CHECK: c.nge.s   $fcc3, $f11, $f8        # encoding: [0x46,0x08,0x5b,0x3d]
> +        c.ngl.s   $fcc2, $f31, $f23    # CHECK: c.ngl.s   $fcc2, $f31, $f23       # encoding: [0x46,0x17,0xfa,0x3b]
> +        c.ngle.s  $fcc2, $f18, $f23    # CHECK: c.ngle.s  $fcc2, $f18, $f23       # encoding: [0x46,0x17,0x92,0x39]
> +        c.ngl.d   $f28, $f28           # CHECK: c.ngl.d   $f28, $f28              # encoding: [0x46,0x3c,0xe0,0x3b]
> +        c.ngle.d  $f0, $f16            # CHECK: c.ngle.d  $f0, $f16               # encoding: [0x46,0x30,0x00,0x39]
> +        c.ngt.d   $fcc4, $f24, $f6     # CHECK: c.ngt.d   $fcc4, $f24, $f6        # encoding: [0x46,0x26,0xc4,0x3f]
> +        c.ngt.s   $fcc5, $f8, $f13     # CHECK: c.ngt.s   $fcc5, $f8, $f13        # encoding: [0x46,0x0d,0x45,0x3f]
> +        c.ole.d   $fcc2, $f16, $f30    # CHECK: c.ole.d   $fcc2, $f16, $f30       # encoding: [0x46,0x3e,0x82,0x36]
> +        c.ole.s   $fcc3, $f7, $f20     # CHECK: c.ole.s   $fcc3, $f7, $f20        # encoding: [0x46,0x14,0x3b,0x36]
> +        c.olt.d   $fcc4, $f18, $f28    # CHECK: c.olt.d   $fcc4, $f18, $f28       # encoding: [0x46,0x3c,0x94,0x34]
> +        c.olt.s   $fcc6, $f20, $f7     # CHECK: c.olt.s   $fcc6, $f20, $f7        # encoding: [0x46,0x07,0xa6,0x34]
> +        c.seq.d   $fcc4, $f30, $f6     # CHECK: c.seq.d   $fcc4, $f30, $f6        # encoding: [0x46,0x26,0xf4,0x3a]
> +        c.seq.s   $fcc7, $f1, $f25     # CHECK: c.seq.s   $fcc7, $f1, $f25        # encoding: [0x46,0x19,0x0f,0x3a]
> +        c.sf.d    $f30, $f0            # CHECK: c.sf.d    $f30, $f0               # encoding: [0x46,0x20,0xf0,0x38]
> +        c.sf.s    $f14, $f22           # CHECK: c.sf.s    $f14, $f22              # encoding: [0x46,0x16,0x70,0x38]
> +        c.ueq.d   $fcc4, $f12, $f24    # CHECK: c.ueq.d   $fcc4, $f12, $f24       # encoding: [0x46,0x38,0x64,0x33]
> +        c.ueq.s   $fcc6, $f3, $f30     # CHECK: c.ueq.s   $fcc6, $f3, $f30        # encoding: [0x46,0x1e,0x1e,0x33]
> +        c.ule.d   $fcc7, $f24, $f18    # CHECK: c.ule.d   $fcc7, $f24, $f18       # encoding: [0x46,0x32,0xc7,0x37]
> +        c.ule.s   $fcc7, $f21, $f30    # CHECK: c.ule.s   $fcc7, $f21, $f30       # encoding: [0x46,0x1e,0xaf,0x37]
> +        c.ult.d   $fcc6, $f6, $f16     # CHECK: c.ult.d   $fcc6, $f6, $f16        # encoding: [0x46,0x30,0x36,0x35]
> +        c.ult.s   $fcc7, $f24, $f10    # CHECK: c.ult.s   $fcc7, $f24, $f10       # encoding: [0x46,0x0a,0xc7,0x35]
> +        c.un.d    $fcc6, $f22, $f24    # CHECK: c.un.d    $fcc6, $f22, $f24       # encoding: [0x46,0x38,0xb6,0x31]
> +        c.un.s    $fcc1, $f30, $f4     # CHECK: c.un.s    $fcc1, $f30, $f4        # encoding: [0x46,0x04,0xf1,0x31]
>          ceil.l.d  $f1,$f3
>          ceil.l.s  $f18,$f13
>          ceil.w.d  $f11,$f25
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list