Index: lib/Target/Mips/Disassembler/MipsDisassembler.cpp =================================================================== --- lib/Target/Mips/Disassembler/MipsDisassembler.cpp +++ lib/Target/Mips/Disassembler/MipsDisassembler.cpp @@ -241,15 +241,20 @@ uint64_t Address, const void *Decoder); +static DecodeStatus DecodeMemEVA(MCInst &Inst, + unsigned Insn, + uint64_t Address, + const void *Decoder); + static DecodeStatus DecodeCacheOp(MCInst &Inst, unsigned Insn, uint64_t Address, const void *Decoder); -static DecodeStatus DecodeCacheOpR6(MCInst &Inst, - unsigned Insn, - uint64_t Address, - const void *Decoder); +static DecodeStatus DecodeCacheeOp_CacheOpR6(MCInst &Inst, + unsigned Insn, + uint64_t Address, + const void *Decoder); static DecodeStatus DecodeCacheOpMM(MCInst &Inst, unsigned Insn, @@ -1079,10 +1084,30 @@ Reg = getReg(Decoder, Mips::GPR32RegClassID, Reg); Base = getReg(Decoder, Mips::GPR32RegClassID, Base); - if(Inst.getOpcode() == Mips::SC || - Inst.getOpcode() == Mips::SCD){ + if (Inst.getOpcode() == Mips::SC || + Inst.getOpcode() == Mips::SCD) + Inst.addOperand(MCOperand::createReg(Reg)); + + Inst.addOperand(MCOperand::createReg(Reg)); + Inst.addOperand(MCOperand::createReg(Base)); + Inst.addOperand(MCOperand::createImm(Offset)); + + return MCDisassembler::Success; +} + +static DecodeStatus DecodeMemEVA(MCInst &Inst, + unsigned Insn, + uint64_t Address, + const void *Decoder) { + int Offset = SignExtend32<9>(Insn >> 7); + unsigned Reg = fieldFromInstruction(Insn, 16, 5); + unsigned Base = fieldFromInstruction(Insn, 21, 5); + + Reg = getReg(Decoder, Mips::GPR32RegClassID, Reg); + Base = getReg(Decoder, Mips::GPR32RegClassID, Base); + + if (Inst.getOpcode() == Mips::SCE) Inst.addOperand(MCOperand::createReg(Reg)); - } Inst.addOperand(MCOperand::createReg(Reg)); Inst.addOperand(MCOperand::createReg(Base)); @@ -1125,11 +1150,11 @@ return MCDisassembler::Success; } -static DecodeStatus DecodeCacheOpR6(MCInst &Inst, - unsigned Insn, - uint64_t Address, - const void *Decoder) { - int Offset = fieldFromInstruction(Insn, 7, 9); +static DecodeStatus DecodeCacheeOp_CacheOpR6(MCInst &Inst, + unsigned Insn, + uint64_t Address, + const void *Decoder) { + int Offset = SignExtend32<9>(Insn >> 7); unsigned Hint = fieldFromInstruction(Insn, 16, 5); unsigned Base = fieldFromInstruction(Insn, 21, 5); Index: lib/Target/Mips/Mips.td =================================================================== --- lib/Target/Mips/Mips.td +++ lib/Target/Mips/Mips.td @@ -157,6 +157,8 @@ def FeatureMSA : SubtargetFeature<"msa", "HasMSA", "true", "Mips MSA ASE">; +def FeatureEVA : SubtargetFeature<"eva", "HasEVA", "true", "Mips EVA ASE">; + def FeatureMicroMips : SubtargetFeature<"micromips", "InMicroMipsMode", "true", "microMips mode">; Index: lib/Target/Mips/Mips32r6InstrInfo.td =================================================================== --- lib/Target/Mips/Mips32r6InstrInfo.td +++ lib/Target/Mips/Mips32r6InstrInfo.td @@ -557,7 +557,7 @@ dag InOperandList = (ins MemOpnd:$addr, uimm5:$hint); string AsmString = !strconcat(instr_asm, "\t$hint, $addr"); list Pattern = []; - string DecoderMethod = "DecodeCacheOpR6"; + string DecoderMethod = "DecodeCacheeOp_CacheOpR6"; } class CACHE_DESC : CACHE_HINT_DESC<"cache", mem_simm9, GPR32Opnd>; Index: lib/Target/Mips/MipsEVAInstrFormats.td =================================================================== --- /dev/null +++ lib/Target/Mips/MipsEVAInstrFormats.td @@ -0,0 +1,52 @@ +//===- MipsEVAInstrFormats.td - Mips Instruction Formats ---*- tablegen -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +//===----------------------------------------------------------------------===// +// Mips Instruction Predicate Definitions. +//===----------------------------------------------------------------------===// +def HasEVA : Predicate<"Subtarget->hasEVA()">, + AssemblerPredicate<"FeatureEVA,FeatureMips32r2">; + +//===----------------------------------------------------------------------===// +// Mips instruction group membership adjectives. +//===----------------------------------------------------------------------===// +class INSN_EVA { list InsnPredicates = [HasEVA]; } + +//===----------------------------------------------------------------------===// + +class LWE_FM op> : StdArch { + bits<5> rt; + bits<21> addr; + + bits<32> Inst; + + let Inst{31-26} = 0b011111; //SPECIAL3 + let Inst{25-21} = addr{20-16}; + let Inst{20-16} = rt; + let Inst{15-7} = addr{8-0}; + let Inst{6} = 0; + let Inst{5-0} = op; +} + +class CACHEEOP_FM op> : StdArch { + bits<21> addr; + bits<5> hint; + bits<5> base = addr{20-16}; + bits<9> offset = addr{8-0}; + + bits<32> Inst; + + let Inst{31-26} = 0x1F; //SPECIAL3 + let Inst{25-21} = base; + let Inst{20-16} = hint; + let Inst{15-7} = offset; + let Inst{6} = 0; + let Inst{5-0} = op; + +} Index: lib/Target/Mips/MipsEVAInstrInfo.td =================================================================== --- /dev/null +++ lib/Target/Mips/MipsEVAInstrInfo.td @@ -0,0 +1,129 @@ +//===- MipsEVAInstrInfo.td - EVA ASE instructions -*- tablegen ------------*-=// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file describes Mips EVA ASE instructions. +// +//===----------------------------------------------------------------------===// + +//===----------------------------------------------------------------------===// +// Instructions specific format +//===----------------------------------------------------------------------===// + +// Memory Load/Store EVA +class LoadEVA : + InstSE<(outs RO:$rt), (ins mem:$addr), !strconcat(opstr, "\t$rt, $addr"), + [], Itin, FrmI, opstr> { + let DecoderMethod = "DecodeMemEVA"; + let canFoldAsLoad = 1; + let mayLoad = 1; +} + +class StoreEVA : + InstSE<(outs), (ins RO:$rt, mem:$addr), !strconcat(opstr, "\t$rt, $addr"), + [(OpNode RO:$rt, Addr:$addr)], Itin, FrmI, opstr> { + let DecoderMethod = "DecodeMemEVA"; + let mayStore = 1; +} + +// Load/Store Left/Right EVA +let canFoldAsLoad = 1 in +class LoadLeftRightEVA : + InstSE<(outs RO:$rt), (ins mem:$addr, RO:$src), + !strconcat(opstr, "\t$rt, $addr"), + [], Itin, FrmI> { + let DecoderMethod = "DecodeMemEVA"; + string Constraints = "$src = $rt"; +} + +class StoreLeftRightEVA : + InstSE<(outs), (ins RO:$rt, mem:$addr), !strconcat(opstr, "\t$rt, $addr"), + [], Itin, FrmI> { + let DecoderMethod = "DecodeMemEVA"; +} + +class LLEBase : + InstSE<(outs RO:$rt), (ins mem:$addr), !strconcat(opstr, "\t$rt, $addr"), + [], NoItinerary, FrmI> { + let DecoderMethod = "DecodeMemEVA"; + let mayLoad = 1; +} + +class SCEBase : + InstSE<(outs RO:$dst), (ins RO:$rt, mem:$addr), + !strconcat(opstr, "\t$rt, $addr"), [], NoItinerary, FrmI> { + let DecoderMethod = "DecodeMemEVA"; + let mayStore = 1; + let Constraints = "$rt = $dst"; +} + +//===----------------------------------------------------------------------===// +// Instruction definition +//===----------------------------------------------------------------------===// + +/// Load and Store Instructions +/// aligned +def LBE : LoadEVA<"lbe", GPR32Opnd, II_LBE>, MMRel, LWE_FM<0x2c>, + INSN_EVA; +def LBuE : LoadEVA<"lbue", GPR32Opnd, II_LBUE>, MMRel, + LWE_FM<0x28>, INSN_EVA; +def LHE : LoadEVA<"lhe", GPR32Opnd, II_LHE>, MMRel, + LWE_FM<0x2D>, INSN_EVA; +def LHuE : LoadEVA<"lhue", GPR32Opnd, II_LHUE>, MMRel, + LWE_FM<0x29>, INSN_EVA; +let AdditionalPredicates = [NotInMicroMips] in { +def LWE : LoadEVA<"lwe", GPR32Opnd, II_LWE>, MMRel, + LWE_FM<0x2F>, INSN_EVA; +} +def SBE : StoreEVA<"sbe", GPR32Opnd, truncstorei8, II_SBE>, MMRel, LWE_FM<0x1c>, + INSN_EVA; +def SHE : StoreEVA<"she", GPR32Opnd, truncstorei16, II_SHE>, MMRel, LWE_FM<0x1d>, + INSN_EVA; +let AdditionalPredicates = [NotInMicroMips] in { +def SWE : StoreEVA<"swe", GPR32Opnd, store, II_SWE>, MMRel, LWE_FM<0x1f>, + INSN_EVA; +} + +/// load/store left/right +let EncodingPredicates = [], + AdditionalPredicates = [NotInMicroMips, HasEVA] in { +def LWLE : LoadLeftRightEVA<"lwle", GPR32Opnd, II_LWLE>, LWE_FM<0x19>, + ISA_MIPS1_NOT_32R6_64R6; +def LWRE : LoadLeftRightEVA<"lwre", GPR32Opnd, II_LWRE>, LWE_FM<0x1A>, + ISA_MIPS1_NOT_32R6_64R6; +def SWLE : StoreLeftRightEVA<"swle", GPR32Opnd, II_SWLE>, LWE_FM<0x21>, + ISA_MIPS1_NOT_32R6_64R6; +def SWRE : StoreLeftRightEVA<"swre", GPR32Opnd, II_SWRE>, LWE_FM<0x22>, + ISA_MIPS1_NOT_32R6_64R6; +} + +/// Load-linked EVA, Store-conditional EVA +let EncodingPredicates = [], + AdditionalPredicates = [NotInMicroMips] in { +def LLE : LLEBase<"lle", GPR32Opnd>, LWE_FM<0x2E>, INSN_EVA; +def SCE : SCEBase<"sce", GPR32Opnd>, LWE_FM<0x1E>, INSN_EVA; +} + +def TLBINV : TLB<"tlbinv">, COP0_TLB_FM<0x03>, INSN_EVA; +def TLBINVF : TLB<"tlbinvf">, COP0_TLB_FM<0x04>, INSN_EVA; + +class CacheeOp : + InstSE<(outs), (ins MemOpnd:$addr, uimm5:$hint), + !strconcat(instr_asm, "\t$hint, $addr"), [], NoItinerary, FrmOther, + instr_asm> { + let DecoderMethod = "DecodeCacheeOp_CacheOpR6"; +} + +def CACHEE : MMRel, CacheeOp<"cachee", mem>, CACHEEOP_FM<0b011011>, + INSN_EVA; +def PREFE : MMRel, CacheeOp<"prefe", mem>, CACHEEOP_FM<0b100011>, + INSN_EVA; Index: lib/Target/Mips/MipsInstrInfo.td =================================================================== --- lib/Target/Mips/MipsInstrInfo.td +++ lib/Target/Mips/MipsInstrInfo.td @@ -1964,6 +1964,10 @@ include "MipsMSAInstrFormats.td" include "MipsMSAInstrInfo.td" +// EVA +include "MipsEVAInstrFormats.td" +include "MipsEVAInstrInfo.td" + // Micromips include "MicroMipsInstrFormats.td" include "MicroMipsInstrInfo.td" Index: lib/Target/Mips/MipsSchedule.td =================================================================== --- lib/Target/Mips/MipsSchedule.td +++ lib/Target/Mips/MipsSchedule.td @@ -69,20 +69,27 @@ def II_FLOOR : InstrItinClass; def II_INS : InstrItinClass; // Any INS instruction def II_LB : InstrItinClass; +def II_LBE : InstrItinClass; def II_LBU : InstrItinClass; +def II_LBUE : InstrItinClass; def II_LD : InstrItinClass; def II_LDC1 : InstrItinClass; def II_LDL : InstrItinClass; def II_LDR : InstrItinClass; def II_LDXC1 : InstrItinClass; def II_LH : InstrItinClass; +def II_LHE : InstrItinClass; def II_LHU : InstrItinClass; +def II_LHUE : InstrItinClass; def II_LUI : InstrItinClass; def II_LUXC1 : InstrItinClass; def II_LW : InstrItinClass; +def II_LWE : InstrItinClass; def II_LWC1 : InstrItinClass; def II_LWL : InstrItinClass; +def II_LWLE : InstrItinClass; def II_LWR : InstrItinClass; +def II_LWRE : InstrItinClass; def II_LWU : InstrItinClass; def II_LWXC1 : InstrItinClass; def II_MADD : InstrItinClass; @@ -134,6 +141,7 @@ def II_ROUND : InstrItinClass; def II_SAVE : InstrItinClass; def II_SB : InstrItinClass; +def II_SBE : InstrItinClass; def II_SD : InstrItinClass; def II_SDC1 : InstrItinClass; def II_SDL : InstrItinClass; @@ -144,6 +152,7 @@ def II_SEQ_SNE : InstrItinClass; // seq and sne def II_SEQI_SNEI : InstrItinClass; // seqi and snei def II_SH : InstrItinClass; +def II_SHE : InstrItinClass; def II_SLL : InstrItinClass; def II_SLLV : InstrItinClass; def II_SLTI_SLTIU : InstrItinClass; // slti and sltiu @@ -159,9 +168,12 @@ def II_SUB_S : InstrItinClass; def II_SUXC1 : InstrItinClass; def II_SW : InstrItinClass; +def II_SWE : InstrItinClass; def II_SWC1 : InstrItinClass; def II_SWL : InstrItinClass; +def II_SWLE : InstrItinClass; def II_SWR : InstrItinClass; +def II_SWRE : InstrItinClass; def II_SWXC1 : InstrItinClass; def II_TRUNC : InstrItinClass; def II_XOR : InstrItinClass; Index: lib/Target/Mips/MipsSubtarget.h =================================================================== --- lib/Target/Mips/MipsSubtarget.h +++ lib/Target/Mips/MipsSubtarget.h @@ -130,6 +130,9 @@ // HasMSA -- supports MSA ASE. bool HasMSA; + // HasEVA -- supports EVA ASE. + bool HasEVA; + InstrItineraryData InstrItins; // We can override the determination of whether we are in mips16 mode @@ -231,6 +234,7 @@ bool hasDSP() const { return HasDSP; } bool hasDSPR2() const { return HasDSPR2; } bool hasMSA() const { return HasMSA; } + bool hasEVA() const { return HasEVA; } bool useSmallSection() const { return UseSmallSection; } bool hasStandardEncoding() const { return !inMips16Mode(); } Index: lib/Target/Mips/MipsSubtarget.cpp =================================================================== --- lib/Target/Mips/MipsSubtarget.cpp +++ lib/Target/Mips/MipsSubtarget.cpp @@ -70,7 +70,7 @@ HasMips4_32r2(false), HasMips5_32r2(false), InMips16Mode(false), InMips16HardFloat(Mips16HardFloat), InMicroMipsMode(false), HasDSP(false), HasDSPR2(false), AllowMixed16_32(Mixed16_32 | Mips_Os16), Os16(Mips_Os16), - HasMSA(false), TM(TM), TargetTriple(TT), TSInfo(), + HasMSA(false), HasEVA(false), TM(TM), TargetTriple(TT), TSInfo(), InstrInfo( MipsInstrInfo::create(initializeSubtargetDependencies(CPU, FS, TM))), FrameLowering(MipsFrameLowering::create(*this)), Index: test/MC/Disassembler/Mips/eva/valid_R6-eva.txt =================================================================== --- /dev/null +++ test/MC/Disassembler/Mips/eva/valid_R6-eva.txt @@ -0,0 +1,38 @@ +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mcpu=mips32r6 -mattr=eva | FileCheck %s +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mcpu=mips64r6 -mattr=eva | FileCheck %s +# CHECK: .text +0x7c 0xff 0x7f 0x9b # CHECK: cachee 31, 255($7) +0x7c 0x80 0x80 0x1b # CHECK: cachee 0, -256($4) +0x7c 0x85 0xba 0x1b # CHECK: cachee 5, -140($4) +0x7f 0x2a 0x80 0x2c # CHECK: lbe $10, -256($25) +0x7d 0xed 0x7f 0xac # CHECK: lbe $13, 255($15) +0x7d 0xcb 0x49 0x2c # CHECK: lbe $11, 146($14) +0x7c 0x6d 0x80 0x28 # CHECK: lbue $13, -256($3) +0x7c 0x4d 0x7f 0xa8 # CHECK: lbue $13, 255($2) +0x7c 0x6d 0xa1 0x28 # CHECK: lbue $13, -190($3) +0x7e 0xad 0x80 0x2d # CHECK: lhe $13, -256($21) +0x7e 0x0c 0x7f 0xad # CHECK: lhe $12, 255($16) +0x7e 0x0d 0x28 0xad # CHECK: lhe $13, 81($16) +0x7c 0x72 0x80 0x29 # CHECK: lhue $18, -256($3) +0x7c 0x72 0x7f 0xa9 # CHECK: lhue $18, 255($3) +0x7c 0x56 0xac 0x29 # CHECK: lhue $22, -168($2) +0x7e 0xa2 0x80 0x2e # CHECK: lle $2, -256($21) +0x7e 0x63 0x7f 0xae # CHECK: lle $3, 255($19) +0x7e 0xc3 0xdc 0xae # CHECK: lle $3, -71($22) +0x7c 0x4e 0x80 0x23 # CHECK: prefe 14, -256($2) +0x7c 0x6b 0x7f 0xa3 # CHECK: prefe 11, 255($3) +0x7c 0x6e 0xed 0xa3 # CHECK: prefe 14, -37($3) +0x7d 0x71 0x7f 0x9c # CHECK: sbe $17, 255($11) +0x7d 0x51 0x80 0x1c # CHECK: sbe $17, -256($10) +0x7d 0xd3 0x00 0x1c # CHECK: sbe $19, 0($14) +0x7e 0x49 0x7f 0x9e # CHECK: sce $9, 255($18) +0x7e 0xac 0x80 0x1e # CHECK: sce $12, -256($21) +0x7e 0xed 0xf0 0x9e # CHECK: sce $13, -31($23) +0x7d 0xee 0x7f 0x9d # CHECK: she $14, 255($15) +0x7d 0xee 0x80 0x1d # CHECK: she $14, -256($15) +0x7d 0x69 0x75 0x9d # CHECK: she $9, 235($11) +0x7f 0xbf 0x7f 0x9f # CHECK: swe $ra, 255($sp) +0x7f 0xbf 0x80 0x1f # CHECK: swe $ra, -256($sp) +0x7f 0xbf 0xe5 0x9f # CHECK: swe $ra, -53($sp) +0x42 0x00 0x00 0x03 # CHECK: tlbinv +0x42 0x00 0x00 0x04 # CHECK: tlbinvf Index: test/MC/Disassembler/Mips/eva/valid_preR6-eva.txt =================================================================== --- /dev/null +++ test/MC/Disassembler/Mips/eva/valid_preR6-eva.txt @@ -0,0 +1,54 @@ +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mcpu=mips32r2 -mattr=eva | FileCheck %s +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mcpu=mips32r3 -mattr=eva | FileCheck %s +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mcpu=mips32r5 -mattr=eva | FileCheck %s +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mcpu=mips64r2 -mattr=eva | FileCheck %s +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mcpu=mips64r3 -mattr=eva | FileCheck %s +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mcpu=mips64r5 -mattr=eva | FileCheck %s +# CHECK: .text +0x7c 0xff 0x7f 0x9b # CHECK: cachee 31, 255($7) +0x7c 0x80 0x80 0x1b # CHECK: cachee 0, -256($4) +0x7c 0x85 0xba 0x1b # CHECK: cachee 5, -140($4) +0x7f 0x2a 0x80 0x2c # CHECK: lbe $10, -256($25) +0x7d 0xed 0x7f 0xac # CHECK: lbe $13, 255($15) +0x7d 0xcb 0x49 0x2c # CHECK: lbe $11, 146($14) +0x7c 0x6d 0x80 0x28 # CHECK: lbue $13, -256($3) +0x7c 0x4d 0x7f 0xa8 # CHECK: lbue $13, 255($2) +0x7c 0x6d 0xa1 0x28 # CHECK: lbue $13, -190($3) +0x7e 0xad 0x80 0x2d # CHECK: lhe $13, -256($21) +0x7e 0x0c 0x7f 0xad # CHECK: lhe $12, 255($16) +0x7e 0x0d 0x28 0xad # CHECK: lhe $13, 81($16) +0x7c 0x72 0x80 0x29 # CHECK: lhue $18, -256($3) +0x7c 0x72 0x7f 0xa9 # CHECK: lhue $18, 255($3) +0x7c 0x56 0xac 0x29 # CHECK: lhue $22, -168($2) +0x7e 0xa2 0x80 0x2e # CHECK: lle $2, -256($21) +0x7e 0x63 0x7f 0xae # CHECK: lle $3, 255($19) +0x7e 0xc3 0xdc 0xae # CHECK: lle $3, -71($22) +0x7d 0xf6 0x7f 0x99 # CHECK: lwle $22, 255($15) +0x7d 0x57 0x80 0x19 # CHECK: lwle $23, -256($10) +0x7d 0xb7 0xa8 0x19 # CHECK: lwle $23, -176($13) +0x7f 0x80 0x7f 0x9a # CHECK: lwre $zero, 255($gp) +0x7f 0x80 0x80 0x1a # CHECK: lwre $zero, -256($gp) +0x7f 0x80 0xa8 0x1a # CHECK: lwre $zero, -176($gp) +0x7c 0x4e 0x80 0x23 # CHECK: prefe 14, -256($2) +0x7c 0x6b 0x7f 0xa3 # CHECK: prefe 11, 255($3) +0x7c 0x6e 0xed 0xa3 # CHECK: prefe 14, -37($3) +0x7d 0x71 0x7f 0x9c # CHECK: sbe $17, 255($11) +0x7d 0x51 0x80 0x1c # CHECK: sbe $17, -256($10) +0x7d 0xd3 0x00 0x1c # CHECK: sbe $19, 0($14) +0x7e 0x49 0x7f 0x9e # CHECK: sce $9, 255($18) +0x7e 0xac 0x80 0x1e # CHECK: sce $12, -256($21) +0x7e 0xed 0xf0 0x9e # CHECK: sce $13, -31($23) +0x7d 0xee 0x7f 0x9d # CHECK: she $14, 255($15) +0x7d 0xee 0x80 0x1d # CHECK: she $14, -256($15) +0x7d 0x69 0x75 0x9d # CHECK: she $9, 235($11) +0x7f 0xbf 0x7f 0x9f # CHECK: swe $ra, 255($sp) +0x7f 0xbf 0x80 0x1f # CHECK: swe $ra, -256($sp) +0x7f 0xbf 0xe5 0x9f # CHECK: swe $ra, -53($sp) +0x7e 0x29 0x7f 0xa1 # CHECK: swle $9, 255($17) +0x7e 0x6a 0x80 0x21 # CHECK: swle $10, -256($19) +0x7e 0xa8 0x41 0xa1 # CHECK: swle $8, 131($21) +0x7d 0xb4 0x7f 0xa2 # CHECK: swre $20, 255($13) +0x7d 0xb4 0x80 0x22 # CHECK: swre $20, -256($13) +0x7d 0xd2 0x2b 0x22 # CHECK: swre $18, 86($14) +0x42 0x00 0x00 0x03 # CHECK: tlbinv +0x42 0x00 0x00 0x04 # CHECK: tlbinvf Index: test/MC/Mips/eva/valid-xfail.s =================================================================== --- /dev/null +++ test/MC/Mips/eva/valid-xfail.s @@ -0,0 +1,64 @@ +# Instructions that should be valid but currently fail for known reasons (e.g. +# they aren't implemented yet). +# +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r2 -mattr=-eva +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r3 -mattr=-eva +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r5 -mattr=-eva +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r6 -mattr=-eva +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips64r2 -mattr=-eva +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips64r3 -mattr=-eva +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips64r5 -mattr=-eva +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips64r6 -mattr=-eva +# XFAIL: * + + .set noat + cachee 31, 255($7) # CHECK: cachee 31, 255($7) # encoding: [0x7c,0xff,0x7f,0x9b] + cachee 0, -256($4) # CHECK: cachee 0, -256($4) # encoding: [0x7c,0x80,0x80,0x1b] + cachee 5, -140($4) # CHECK: cachee 5, -140($4) # encoding: [0x7c,0x85,0xba,0x1b] + lbe $10,-256($25) # CHECK: lbe $10, -256($25) # encoding: [0x7f,0x2a,0x80,0x2c] + lbe $13,255($15) # CHECK: lbe $13, 255($15) # encoding: [0x7d,0xed,0x7f,0xac] + lbe $11,146($14) # CHECK: lbe $11, 146($14) # encoding: [0x7d,0xcb,0x49,0x2c] + lbue $13,-256($v1) # CHECK: lbue $13, -256($3) # encoding: [0x7c,0x6d,0x80,0x28] + lbue $13,255($v0) # CHECK: lbue $13, 255($2) # encoding: [0x7c,0x4d,0x7f,0xa8] + lbue $13,-190($v1) # CHECK: lbue $13, -190($3) # encoding: [0x7c,0x6d,0xa1,0x28] + lhe $13,-256($s5) # CHECK: lhe $13, -256($21) # encoding: [0x7e,0xad,0x80,0x2d] + lhe $12,255($s0) # CHECK: lhe $12, 255($16) # encoding: [0x7e,0x0c,0x7f,0xad] + lhe $13,81($s0) # CHECK: lhe $13, 81($16) # encoding: [0x7e,0x0d,0x28,0xad] + lhue $s2,-256($v1) # CHECK: lhue $18, -256($3) # encoding: [0x7c,0x72,0x80,0x29] + lhue $s2,255($v1) # CHECK: lhue $18, 255($3) # encoding: [0x7c,0x72,0x7f,0xa9] + lhue $s6,-168($v0) # CHECK: lhue $22, -168($2) # encoding: [0x7c,0x56,0xac,0x29] + lle $v0,-256($s5) # CHECK: lle $2, -256($21) # encoding: [0x7e,0xa2,0x80,0x2e] + lle $v1,255($s3) # CHECK: lle $3, 255($19) # encoding: [0x7e,0x63,0x7f,0xae] + lle $v1,-71($s6) # CHECK: lle $3, -71($22) # encoding: [0x7e,0xc3,0xdc,0xae] + lwe $15,255($a2) # CHECK: lwe $15, 255($6) # encoding: [0x7c,0xcf,0x7f,0xaf] + lwe $13,-256($a2) # CHECK: lwe $13, -256($6) # encoding: [0x7c,0xcd,0x80,0x2f] + lwe $15,-200($a1) # CHECK: lwe $15, -200($5) # encoding: [0x7c,0xaf,0x9c,0x2f] + lwle $s6,255($15) # CHECK: lwle $22, 255($15) # encoding: [0x7d,0xf6,0x7f,0x99] + lwle $s7,-256($10) # CHECK: lwle $23, -256($10) # encoding: [0x7d,0x57,0x80,0x19] + lwle $s7,-176($13) # CHECK: lwle $23, -176($13) # encoding: [0x7d,0xb7,0xa8,0x19] + lwre $zero,255($gp) # CHECK: lwre $zero, 255($gp) # encoding: [0x7f,0x80,0x7f,0x9a] + lwre $zero,-256($gp) # CHECK: lwre $zero, -256($gp) # encoding: [0x7f,0x80,0x80,0x1a] + lwre $zero,-176($gp) # CHECK: lwre $zero, -176($gp) # encoding: [0x7f,0x80,0xa8,0x1a] + prefe 14, -256($2) # CHECK: prefe 14, -256($2) # encoding: [0x7c,0x4e,0x80,0x23] + prefe 11, 255($3) # CHECK: prefe 11, 255($3) # encoding: [0x7c,0x6b,0x7f,0xa3] + prefe 14, -37($3) # CHECK: prefe 14, -37($3) # encoding: [0x7c,0x6e,0xed,0xa3] + sbe $s1,255($11) # CHECK: sbe $17, 255($11) # encoding: [0x7d,0x71,0x7f,0x9c] + sbe $s1,-256($10) # CHECK: sbe $17, -256($10) # encoding: [0x7d,0x51,0x80,0x1c] + sbe $s3,0($14) # CHECK: sbe $19, 0($14) # encoding: [0x7d,0xd3,0x00,0x1c] + sce $9,255($s2) # CHECK: sce $9, 255($18) # encoding: [0x7e,0x49,0x7f,0x9e] + sce $12,-256($s5) # CHECK: sce $12, -256($21) # encoding: [0x7e,0xac,0x80,0x1e] + sce $13,-31($s7) # CHECK: sce $13, -31($23) # encoding: [0x7e,0xed,0xf0,0x9e] + she $14,255($15) # CHECK: she $14, 255($15) # encoding: [0x7d,0xee,0x7f,0x9d] + she $14,-256($15) # CHECK: she $14, -256($15) # encoding: [0x7d,0xee,0x80,0x1d] + she $9,235($11) # CHECK: she $9, 235($11) # encoding: [0x7d,0x69,0x75,0x9d] + swe $ra,255($sp) # CHECK: swe $ra, 255($sp) # encoding: [0x7f,0xbf,0x7f,0x9f] + swe $ra,-256($sp) # CHECK: swe $ra, -256($sp) # encoding: [0x7f,0xbf,0x80,0x1f] + swe $ra,-53($sp) # CHECK: swe $ra, -53($sp) # encoding: [0x7f,0xbf,0xe5,0x9f] + swle $9,255($s1) # CHECK: swle $9, 255($17) # encoding: [0x7e,0x29,0x7f,0xa1] + swle $10,-256($s3) # CHECK: swle $10, -256($19) # encoding: [0x7e,0x6a,0x80,0x21] + swle $8,131($s5) # CHECK: swle $8, 131($21) # encoding: [0x7e,0xa8,0x41,0xa1] + swre $s4,255($13) # CHECK: swre $20, 255($13) # encoding: [0x7d,0xb4,0x7f,0xa2] + swre $s4,-256($13) # CHECK: swre $20, -256($13) # encoding: [0x7d,0xb4,0x80,0x22] + swre $s2,86($14) # CHECK: swre $18, 86($14) # encoding: [0x7d,0xd2,0x2b,0x22] + tlbinv # CHECK: tlbinv # encoding: [0x42,0x00,0x00,0x03] + tlbinvf # CHECK: tlbinvf # encoding: [0x42,0x00,0x00,0x04] Index: test/MC/Mips/eva/valid_R6-xfail.s =================================================================== --- /dev/null +++ test/MC/Mips/eva/valid_R6-xfail.s @@ -0,0 +1,20 @@ +# Instructions that should be valid but currently fail for known reasons (e.g. +# they aren't implemented yet). +# +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r6 -mattr=+eva +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips64r6 -mattr=+eva +# XFAIL: * + + .set noat + lwle $s6,255($15) # CHECK: lwle $22, 255($15) # encoding: [0x7d,0xf6,0x7f,0x99] + lwle $s7,-256($10) # CHECK: lwle $23, -256($10) # encoding: [0x7d,0x57,0x80,0x19] + lwle $s7,-176($13) # CHECK: lwle $23, -176($13) # encoding: [0x7d,0xb7,0xa8,0x19] + lwre $zero,255($gp) # CHECK: lwre $zero, 255($gp) # encoding: [0x7f,0x80,0x7f,0x9a] + lwre $zero,-256($gp) # CHECK: lwre $zero, -256($gp) # encoding: [0x7f,0x80,0x80,0x1a] + lwre $zero,-176($gp) # CHECK: lwre $zero, -176($gp) # encoding: [0x7f,0x80,0xa8,0x1a] + swle $9,255($s1) # CHECK: swle $9, 255($17) # encoding: [0x7e,0x29,0x7f,0xa1] + swle $10,-256($s3) # CHECK: swle $10, -256($19) # encoding: [0x7e,0x6a,0x80,0x21] + swle $8,131($s5) # CHECK: swle $8, 131($21) # encoding: [0x7e,0xa8,0x41,0xa1] + swre $s4,255($13) # CHECK: swre $20, 255($13) # encoding: [0x7d,0xb4,0x7f,0xa2] + swre $s4,-256($13) # CHECK: swre $20, -256($13) # encoding: [0x7d,0xb4,0x80,0x22] + swre $s2,86($14) # CHECK: swre $18, 86($14) # encoding: [0x7d,0xd2,0x2b,0x22] Index: test/MC/Mips/eva/valid_R6.s =================================================================== --- /dev/null +++ test/MC/Mips/eva/valid_R6.s @@ -0,0 +1,47 @@ +# Instructions that are valid +# +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r6 -mattr=+eva | FileCheck %s +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips64r6 -mattr=+eva | FileCheck %s +a: + .set noat + cachee 31, 255($7) # CHECK: cachee 31, 255($7) # encoding: [0x7c,0xff,0x7f,0x9b] + cachee 0, -256($4) # CHECK: cachee 0, -256($4) # encoding: [0x7c,0x80,0x80,0x1b] + cachee 5, -140($4) # CHECK: cachee 5, -140($4) # encoding: [0x7c,0x85,0xba,0x1b] + lbe $10,-256($25) # CHECK: lbe $10, -256($25) # encoding: [0x7f,0x2a,0x80,0x2c] + lbe $13,255($15) # CHECK: lbe $13, 255($15) # encoding: [0x7d,0xed,0x7f,0xac] + lbe $11,146($14) # CHECK: lbe $11, 146($14) # encoding: [0x7d,0xcb,0x49,0x2c] + lbue $13,-256($v1) # CHECK: lbue $13, -256($3) # encoding: [0x7c,0x6d,0x80,0x28] + lbue $13,255($v0) # CHECK: lbue $13, 255($2) # encoding: [0x7c,0x4d,0x7f,0xa8] + lbue $13,-190($v1) # CHECK: lbue $13, -190($3) # encoding: [0x7c,0x6d,0xa1,0x28] + lhe $13,-256($s5) # CHECK: lhe $13, -256($21) # encoding: [0x7e,0xad,0x80,0x2d] + lhe $12,255($s0) # CHECK: lhe $12, 255($16) # encoding: [0x7e,0x0c,0x7f,0xad] + lhe $13,81($s0) # CHECK: lhe $13, 81($16) # encoding: [0x7e,0x0d,0x28,0xad] + lhue $s2,-256($v1) # CHECK: lhue $18, -256($3) # encoding: [0x7c,0x72,0x80,0x29] + lhue $s2,255($v1) # CHECK: lhue $18, 255($3) # encoding: [0x7c,0x72,0x7f,0xa9] + lhue $s6,-168($v0) # CHECK: lhue $22, -168($2) # encoding: [0x7c,0x56,0xac,0x29] + lle $v0,-256($s5) # CHECK: lle $2, -256($21) # encoding: [0x7e,0xa2,0x80,0x2e] + lle $v1,255($s3) # CHECK: lle $3, 255($19) # encoding: [0x7e,0x63,0x7f,0xae] + lle $v1,-71($s6) # CHECK: lle $3, -71($22) # encoding: [0x7e,0xc3,0xdc,0xae] + lwe $15,255($a2) # CHECK: lwe $15, 255($6) # encoding: [0x7c,0xcf,0x7f,0xaf] + lwe $13,-256($a2) # CHECK: lwe $13, -256($6) # encoding: [0x7c,0xcd,0x80,0x2f] + lwe $15,-200($a1) # CHECK: lwe $15, -200($5) # encoding: [0x7c,0xaf,0x9c,0x2f] + prefe 14, -256($2) # CHECK: prefe 14, -256($2) # encoding: [0x7c,0x4e,0x80,0x23] + prefe 11, 255($3) # CHECK: prefe 11, 255($3) # encoding: [0x7c,0x6b,0x7f,0xa3] + prefe 14, -37($3) # CHECK: prefe 14, -37($3) # encoding: [0x7c,0x6e,0xed,0xa3] + sbe $s1,255($11) # CHECK: sbe $17, 255($11) # encoding: [0x7d,0x71,0x7f,0x9c] + sbe $s1,-256($10) # CHECK: sbe $17, -256($10) # encoding: [0x7d,0x51,0x80,0x1c] + sbe $s3,0($14) # CHECK: sbe $19, 0($14) # encoding: [0x7d,0xd3,0x00,0x1c] + sce $9,255($s2) # CHECK: sce $9, 255($18) # encoding: [0x7e,0x49,0x7f,0x9e] + sce $12,-256($s5) # CHECK: sce $12, -256($21) # encoding: [0x7e,0xac,0x80,0x1e] + sce $13,-31($s7) # CHECK: sce $13, -31($23) # encoding: [0x7e,0xed,0xf0,0x9e] + she $14,255($15) # CHECK: she $14, 255($15) # encoding: [0x7d,0xee,0x7f,0x9d] + she $14,-256($15) # CHECK: she $14, -256($15) # encoding: [0x7d,0xee,0x80,0x1d] + she $9,235($11) # CHECK: she $9, 235($11) # encoding: [0x7d,0x69,0x75,0x9d] + swe $ra,255($sp) # CHECK: swe $ra, 255($sp) # encoding: [0x7f,0xbf,0x7f,0x9f] + swe $ra,-256($sp) # CHECK: swe $ra, -256($sp) # encoding: [0x7f,0xbf,0x80,0x1f] + swe $ra,-53($sp) # CHECK: swe $ra, -53($sp) # encoding: [0x7f,0xbf,0xe5,0x9f] + tlbinv # CHECK: tlbinv # encoding: [0x42,0x00,0x00,0x03] + tlbinvf # CHECK: tlbinvf # encoding: [0x42,0x00,0x00,0x04] + + +1: Index: test/MC/Mips/eva/valid_preR6.s =================================================================== --- /dev/null +++ test/MC/Mips/eva/valid_preR6.s @@ -0,0 +1,62 @@ +# Instructions that are valid +# +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r2 -mattr=+eva | FileCheck %s +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r3 -mattr=+eva | FileCheck %s +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r5 -mattr=+eva | FileCheck %s +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips64r2 -mattr=+eva | FileCheck %s +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips64r3 -mattr=+eva | FileCheck %s +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips64r5 -mattr=+eva | FileCheck %s +a: + .set noat + cachee 31, 255($7) # CHECK: cachee 31, 255($7) # encoding: [0x7c,0xff,0x7f,0x9b] + cachee 0, -256($4) # CHECK: cachee 0, -256($4) # encoding: [0x7c,0x80,0x80,0x1b] + cachee 5, -140($4) # CHECK: cachee 5, -140($4) # encoding: [0x7c,0x85,0xba,0x1b] + lbe $10,-256($25) # CHECK: lbe $10, -256($25) # encoding: [0x7f,0x2a,0x80,0x2c] + lbe $13,255($15) # CHECK: lbe $13, 255($15) # encoding: [0x7d,0xed,0x7f,0xac] + lbe $11,146($14) # CHECK: lbe $11, 146($14) # encoding: [0x7d,0xcb,0x49,0x2c] + lbue $13,-256($v1) # CHECK: lbue $13, -256($3) # encoding: [0x7c,0x6d,0x80,0x28] + lbue $13,255($v0) # CHECK: lbue $13, 255($2) # encoding: [0x7c,0x4d,0x7f,0xa8] + lbue $13,-190($v1) # CHECK: lbue $13, -190($3) # encoding: [0x7c,0x6d,0xa1,0x28] + lhe $13,-256($s5) # CHECK: lhe $13, -256($21) # encoding: [0x7e,0xad,0x80,0x2d] + lhe $12,255($s0) # CHECK: lhe $12, 255($16) # encoding: [0x7e,0x0c,0x7f,0xad] + lhe $13,81($s0) # CHECK: lhe $13, 81($16) # encoding: [0x7e,0x0d,0x28,0xad] + lhue $s2,-256($v1) # CHECK: lhue $18, -256($3) # encoding: [0x7c,0x72,0x80,0x29] + lhue $s2,255($v1) # CHECK: lhue $18, 255($3) # encoding: [0x7c,0x72,0x7f,0xa9] + lhue $s6,-168($v0) # CHECK: lhue $22, -168($2) # encoding: [0x7c,0x56,0xac,0x29] + lle $v0,-256($s5) # CHECK: lle $2, -256($21) # encoding: [0x7e,0xa2,0x80,0x2e] + lle $v1,255($s3) # CHECK: lle $3, 255($19) # encoding: [0x7e,0x63,0x7f,0xae] + lle $v1,-71($s6) # CHECK: lle $3, -71($22) # encoding: [0x7e,0xc3,0xdc,0xae] + lwe $15,255($a2) # CHECK: lwe $15, 255($6) # encoding: [0x7c,0xcf,0x7f,0xaf] + lwe $13,-256($a2) # CHECK: lwe $13, -256($6) # encoding: [0x7c,0xcd,0x80,0x2f] + lwe $15,-200($a1) # CHECK: lwe $15, -200($5) # encoding: [0x7c,0xaf,0x9c,0x2f] + lwle $s6,255($15) # CHECK: lwle $22, 255($15) # encoding: [0x7d,0xf6,0x7f,0x99] + lwle $s7,-256($10) # CHECK: lwle $23, -256($10) # encoding: [0x7d,0x57,0x80,0x19] + lwle $s7,-176($13) # CHECK: lwle $23, -176($13) # encoding: [0x7d,0xb7,0xa8,0x19] + lwre $zero,255($gp) # CHECK: lwre $zero, 255($gp) # encoding: [0x7f,0x80,0x7f,0x9a] + lwre $zero,-256($gp) # CHECK: lwre $zero, -256($gp) # encoding: [0x7f,0x80,0x80,0x1a] + lwre $zero,-176($gp) # CHECK: lwre $zero, -176($gp) # encoding: [0x7f,0x80,0xa8,0x1a] + prefe 14, -256($2) # CHECK: prefe 14, -256($2) # encoding: [0x7c,0x4e,0x80,0x23] + prefe 11, 255($3) # CHECK: prefe 11, 255($3) # encoding: [0x7c,0x6b,0x7f,0xa3] + prefe 14, -37($3) # CHECK: prefe 14, -37($3) # encoding: [0x7c,0x6e,0xed,0xa3] + sbe $s1,255($11) # CHECK: sbe $17, 255($11) # encoding: [0x7d,0x71,0x7f,0x9c] + sbe $s1,-256($10) # CHECK: sbe $17, -256($10) # encoding: [0x7d,0x51,0x80,0x1c] + sbe $s3,0($14) # CHECK: sbe $19, 0($14) # encoding: [0x7d,0xd3,0x00,0x1c] + sce $9,255($s2) # CHECK: sce $9, 255($18) # encoding: [0x7e,0x49,0x7f,0x9e] + sce $12,-256($s5) # CHECK: sce $12, -256($21) # encoding: [0x7e,0xac,0x80,0x1e] + sce $13,-31($s7) # CHECK: sce $13, -31($23) # encoding: [0x7e,0xed,0xf0,0x9e] + she $14,255($15) # CHECK: she $14, 255($15) # encoding: [0x7d,0xee,0x7f,0x9d] + she $14,-256($15) # CHECK: she $14, -256($15) # encoding: [0x7d,0xee,0x80,0x1d] + she $9,235($11) # CHECK: she $9, 235($11) # encoding: [0x7d,0x69,0x75,0x9d] + swe $ra,255($sp) # CHECK: swe $ra, 255($sp) # encoding: [0x7f,0xbf,0x7f,0x9f] + swe $ra,-256($sp) # CHECK: swe $ra, -256($sp) # encoding: [0x7f,0xbf,0x80,0x1f] + swe $ra,-53($sp) # CHECK: swe $ra, -53($sp) # encoding: [0x7f,0xbf,0xe5,0x9f] + swle $9,255($s1) # CHECK: swle $9, 255($17) # encoding: [0x7e,0x29,0x7f,0xa1] + swle $10,-256($s3) # CHECK: swle $10, -256($19) # encoding: [0x7e,0x6a,0x80,0x21] + swle $8,131($s5) # CHECK: swle $8, 131($21) # encoding: [0x7e,0xa8,0x41,0xa1] + swre $s4,255($13) # CHECK: swre $20, 255($13) # encoding: [0x7d,0xb4,0x7f,0xa2] + swre $s4,-256($13) # CHECK: swre $20, -256($13) # encoding: [0x7d,0xb4,0x80,0x22] + swre $s2,86($14) # CHECK: swre $18, 86($14) # encoding: [0x7d,0xd2,0x2b,0x22] + tlbinv # CHECK: tlbinv # encoding: [0x42,0x00,0x00,0x03] + tlbinvf # CHECK: tlbinvf # encoding: [0x42,0x00,0x00,0x04] + +1: Index: test/MC/Mips/mips32/valid.s =================================================================== --- test/MC/Mips/mips32/valid.s +++ test/MC/Mips/mips32/valid.s @@ -40,7 +40,7 @@ bltzall $6,488 # CHECK: bltzall $6, 488 # encoding: [0x04,0xd2,0x00,0x7a] 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] + 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 Index: test/MC/Mips/mips32r2/valid.s =================================================================== --- test/MC/Mips/mips32r2/valid.s +++ test/MC/Mips/mips32r2/valid.s @@ -40,7 +40,7 @@ bltzall $6,488 # CHECK: bltzall $6, 488 # encoding: [0x04,0xd2,0x00,0x7a] 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] + 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 Index: test/MC/Mips/mips32r3/valid.s =================================================================== --- test/MC/Mips/mips32r3/valid.s +++ test/MC/Mips/mips32r3/valid.s @@ -40,7 +40,7 @@ bltzall $6,488 # CHECK: bltzall $6, 488 # encoding: [0x04,0xd2,0x00,0x7a] 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] + 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 Index: test/MC/Mips/mips32r5/valid.s =================================================================== --- test/MC/Mips/mips32r5/valid.s +++ test/MC/Mips/mips32r5/valid.s @@ -40,7 +40,7 @@ bltzall $6,488 # CHECK: bltzall $6, 488 # encoding: [0x04,0xd2,0x00,0x7a] 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] + 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 Index: test/MC/Mips/mips32r6/invalid-mips1-wrong-error.s =================================================================== --- test/MC/Mips/mips32r6/invalid-mips1-wrong-error.s +++ test/MC/Mips/mips32r6/invalid-mips1-wrong-error.s @@ -11,7 +11,7 @@ lwr $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swl $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swr $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwle $s4,-4231($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction - lwre $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction - swle $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction - swre $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction + lwle $s4,-4231($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lwre $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + swle $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + swre $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction Index: test/MC/Mips/mips32r6/valid.s =================================================================== --- test/MC/Mips/mips32r6/valid.s +++ test/MC/Mips/mips32r6/valid.s @@ -64,7 +64,7 @@ bovc $0, $0, 4 # CHECK: bovc $zero, $zero, 4 # encoding: [0x20,0x00,0x00,0x01] bovc $2, $0, 4 # CHECK: bovc $2, $zero, 4 # encoding: [0x20,0x40,0x00,0x01] bovc $4, $2, 4 # CHECK: bovc $4, $2, 4 # encoding: [0x20,0x82,0x00,0x01] - cache 1, 8($5) # CHECK: cache 1, 8($5) # encoding: [0x7c,0xa1,0x04,0x25] + cache 1, 8($5) # CHECK: cache 1, 8($5) # encoding: [0x7c,0xa1,0x04,0x25] cmp.af.s $f2,$f3,$f4 # CHECK: cmp.af.s $f2, $f3, $f4 # encoding: [0x46,0x84,0x18,0x80] cmp.af.d $f2,$f3,$f4 # CHECK: cmp.af.d $f2, $f3, $f4 # encoding: [0x46,0xa4,0x18,0x80] cmp.un.s $f2,$f3,$f4 # CHECK: cmp.un.s $f2, $f3, $f4 # encoding: [0x46,0x84,0x18,0x81] Index: test/MC/Mips/mips64/valid.s =================================================================== --- test/MC/Mips/mips64/valid.s +++ test/MC/Mips/mips64/valid.s @@ -40,7 +40,7 @@ bltzall $6,488 # CHECK: bltzall $6, 488 # encoding: [0x04,0xd2,0x00,0x7a] 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] + 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 Index: test/MC/Mips/mips64r2/valid.s =================================================================== --- test/MC/Mips/mips64r2/valid.s +++ test/MC/Mips/mips64r2/valid.s @@ -40,7 +40,7 @@ bltzall $6,488 # CHECK: bltzall $6, 488 # encoding: [0x04,0xd2,0x00,0x7a] 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] + 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 Index: test/MC/Mips/mips64r3/valid.s =================================================================== --- test/MC/Mips/mips64r3/valid.s +++ test/MC/Mips/mips64r3/valid.s @@ -40,7 +40,7 @@ bltzall $6,488 # CHECK: bltzall $6, 488 # encoding: [0x04,0xd2,0x00,0x7a] 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] + 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 Index: test/MC/Mips/mips64r5/valid.s =================================================================== --- test/MC/Mips/mips64r5/valid.s +++ test/MC/Mips/mips64r5/valid.s @@ -40,7 +40,7 @@ bltzall $6,488 # CHECK: bltzall $6, 488 # encoding: [0x04,0xd2,0x00,0x7a] 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] + 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 Index: test/MC/Mips/mips64r6/invalid-mips1-wrong-error.s =================================================================== --- test/MC/Mips/mips64r6/invalid-mips1-wrong-error.s +++ test/MC/Mips/mips64r6/invalid-mips1-wrong-error.s @@ -11,7 +11,7 @@ lwr $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swl $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swr $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwle $s4,-4231($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction - lwre $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction - swle $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction - swre $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction + lwle $s4,-4231($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lwre $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + swle $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + swre $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction Index: test/MC/Mips/mips64r6/invalid-mips3-wrong-error.s =================================================================== --- test/MC/Mips/mips64r6/invalid-mips3-wrong-error.s +++ test/MC/Mips/mips64r6/invalid-mips3-wrong-error.s @@ -17,7 +17,7 @@ lwr $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swl $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swr $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwle $s4,-4231($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction - lwre $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction - swle $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction - swre $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction + lwle $s4,-4231($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lwre $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + swle $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + swre $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction Index: test/MC/Mips/mips64r6/valid.s =================================================================== --- test/MC/Mips/mips64r6/valid.s +++ test/MC/Mips/mips64r6/valid.s @@ -64,7 +64,7 @@ bovc $0, $0, 4 # CHECK: bovc $zero, $zero, 4 # encoding: [0x20,0x00,0x00,0x01] bovc $2, $0, 4 # CHECK: bovc $2, $zero, 4 # encoding: [0x20,0x40,0x00,0x01] bovc $4, $2, 4 # CHECK: bovc $4, $2, 4 # encoding: [0x20,0x82,0x00,0x01] - cache 1, 8($5) # CHECK: cache 1, 8($5) # encoding: [0x7c,0xa1,0x04,0x25] + cache 1, 8($5) # CHECK: cache 1, 8($5) # encoding: [0x7c,0xa1,0x04,0x25] class.d $f2, $f4 # CHECK: class.d $f2, $f4 # encoding: [0x46,0x20,0x20,0x9b] class.s $f2, $f4 # CHECK: class.s $f2, $f4 # encoding: [0x46,0x00,0x20,0x9b] clo $11,$a1 # CHECK: clo $11, $5 # encoding: [0x00,0xa0,0x58,0x51]