mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 04:09:45 +00:00
[mips][mt] Add missing files from last commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307779 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2b4e72ee27
commit
fea3236f0e
50
lib/Target/Mips/MipsMTInstrFormats.td
Normal file
50
lib/Target/Mips/MipsMTInstrFormats.td
Normal file
@ -0,0 +1,50 @@
|
||||
//===-- MipsMTInstrFormats.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.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Describe the MIPS MT instructions format
|
||||
//
|
||||
// opcode - operation code.
|
||||
// rt - destination register
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class MipsMTInst : MipsInst<(outs), (ins), "", [], NoItinerary, FrmOther>,
|
||||
PredicateControl {
|
||||
let DecoderNamespace = "Mips";
|
||||
let EncodingPredicates = [HasStdEnc];
|
||||
}
|
||||
|
||||
class OPCODE1<bits<1> Val> {
|
||||
bits<1> Value = Val;
|
||||
}
|
||||
|
||||
def OPCODE_SC_DMT : OPCODE1<0b0>;
|
||||
def OPCODE_SC_EMT : OPCODE1<0b1>;
|
||||
|
||||
class FIELD5<bits<5> Val> {
|
||||
bits<5> Value = Val;
|
||||
}
|
||||
|
||||
def FIELD5_1_DMT_EMT : FIELD5<0b00001>;
|
||||
def FIELD5_2_DMT_EMT : FIELD5<0b01111>;
|
||||
|
||||
class COP0_MFMC0_MT<FIELD5 Op1, FIELD5 Op2, OPCODE1 sc> : MipsMTInst {
|
||||
bits<32> Inst;
|
||||
|
||||
bits<5> rt;
|
||||
let Inst{31-26} = 0b010000; // COP0
|
||||
let Inst{25-21} = 0b01011; // MFMC0
|
||||
let Inst{20-16} = rt;
|
||||
let Inst{15-11} = Op1.Value;
|
||||
let Inst{10-6} = Op2.Value;
|
||||
let Inst{5} = sc.Value;
|
||||
let Inst{4-3} = 0b00;
|
||||
let Inst{2-0} = 0b001;
|
||||
}
|
54
lib/Target/Mips/MipsMTInstrInfo.td
Normal file
54
lib/Target/Mips/MipsMTInstrInfo.td
Normal file
@ -0,0 +1,54 @@
|
||||
//===-- MipsMTInstrInfo.td - Mips MT Instruction Infos -----*- tablegen -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// MIPS MT Instruction Encodings
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class DMT_ENC : COP0_MFMC0_MT<FIELD5_1_DMT_EMT, FIELD5_2_DMT_EMT,
|
||||
OPCODE_SC_DMT>;
|
||||
|
||||
class EMT_ENC : COP0_MFMC0_MT<FIELD5_1_DMT_EMT, FIELD5_2_DMT_EMT,
|
||||
OPCODE_SC_EMT>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// MIPS MT Instruction Descriptions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class MT_1R_DESC_BASE<string instr_asm, InstrItinClass Itin = NoItinerary> {
|
||||
dag OutOperandList = (outs GPR32Opnd:$rt);
|
||||
dag InOperandList = (ins);
|
||||
string AsmString = !strconcat(instr_asm, "\t$rt");
|
||||
list<dag> Pattern = [];
|
||||
InstrItinClass Itinerary = Itin;
|
||||
}
|
||||
|
||||
class DMT_DESC : MT_1R_DESC_BASE<"dmt", II_DMT>;
|
||||
|
||||
class EMT_DESC : MT_1R_DESC_BASE<"emt", II_EMT>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// MIPS MT Instruction Definitions
|
||||
//===----------------------------------------------------------------------===//
|
||||
let hasSideEffects = 1, isNotDuplicable = 1,
|
||||
AdditionalPredicates = [NotInMicroMips] in {
|
||||
def DMT : DMT_ENC, DMT_DESC, ASE_MT;
|
||||
|
||||
def EMT : EMT_ENC, EMT_DESC, ASE_MT;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// MIPS MT Instruction Definitions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
let AdditionalPredicates = [NotInMicroMips] in {
|
||||
def : MipsInstAlias<"dmt", (DMT ZERO), 1>, ASE_MT;
|
||||
|
||||
def : MipsInstAlias<"emt", (EMT ZERO), 1>, ASE_MT;
|
||||
}
|
6
test/MC/Disassembler/Mips/mt/valid-r2-el.txt
Normal file
6
test/MC/Disassembler/Mips/mt/valid-r2-el.txt
Normal file
@ -0,0 +1,6 @@
|
||||
# RUN: llvm-mc --disassemble %s -triple=mipsel-unknown-linux -mcpu=mips32r2 -mattr=+mt | FileCheck %s
|
||||
0xc1 0x0b 0x60 0x41 # CHECK: dmt
|
||||
0xc1 0x0b 0x65 0x41 # CHECK: dmt $5
|
||||
0xe1 0x0b 0x60 0x41 # CHECK: emt
|
||||
0xe1 0x0b 0x64 0x41 # CHECK: emt $4
|
||||
|
6
test/MC/Disassembler/Mips/mt/valid-r2.txt
Normal file
6
test/MC/Disassembler/Mips/mt/valid-r2.txt
Normal file
@ -0,0 +1,6 @@
|
||||
# RUN: llvm-mc --disassemble %s -triple=mips-unknown-linux -mcpu=mips32r2 -mattr=+mt | FileCheck %s
|
||||
0x41 0x60 0x0b 0xc1 # CHECK: dmt
|
||||
0x41 0x65 0x0b 0xc1 # CHECK: dmt $5
|
||||
0x41 0x60 0x0b 0xe1 # CHECK: emt
|
||||
0x41 0x64 0x0b 0xe1 # CHECK: emt $4
|
||||
|
7
test/MC/Mips/mt/invalid.s
Normal file
7
test/MC/Mips/mt/invalid.s
Normal file
@ -0,0 +1,7 @@
|
||||
# RUN: not llvm-mc -arch=mips -mcpu=mips32 -mattr=+mt < %s 2>&1 | FileCheck %s
|
||||
dmt 4 # CHECK: error: invalid operand for instruction
|
||||
dmt $4, $5 # CHECK: error: invalid operand for instruction
|
||||
dmt $5, 0($4) # CHECK: error: invalid operand for instruction
|
||||
emt 4 # CHECK: error: invalid operand for instruction
|
||||
emt $4, $5 # CHECK: error: invalid operand for instruction
|
||||
emt $5, 0($5) # CHECK: error: invalid operand for instruction
|
6
test/MC/Mips/mt/valid.s
Normal file
6
test/MC/Mips/mt/valid.s
Normal file
@ -0,0 +1,6 @@
|
||||
# RUN: llvm-mc -arch=mips -mcpu=mips32r2 -mattr=+mt -show-encoding < %s \
|
||||
# RUN: | FileCheck %s
|
||||
dmt # CHECK: dmt # encoding: [0x41,0x60,0x0b,0xc1]
|
||||
dmt $5 # CHECK: dmt $5 # encoding: [0x41,0x65,0x0b,0xc1]
|
||||
emt # CHECK: emt # encoding: [0x41,0x60,0x0b,0xe1]
|
||||
emt $4 # CHECK: emt $4 # encoding: [0x41,0x64,0x0b,0xe1]
|
Loading…
Reference in New Issue
Block a user