mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
- Cleanup some whitespaces.
- Convert {0,1} and friends into 0b01, which is identical and more consistent. llvm-svn: 112593
This commit is contained in:
parent
e930c65b2c
commit
0409e77e99
@ -88,21 +88,21 @@ class Xform16Bit { bit canXformTo16Bit = 1; }
|
||||
class AddrMode<bits<4> val> {
|
||||
bits<4> Value = val;
|
||||
}
|
||||
def AddrModeNone : AddrMode<0>;
|
||||
def AddrMode1 : AddrMode<1>;
|
||||
def AddrMode2 : AddrMode<2>;
|
||||
def AddrMode3 : AddrMode<3>;
|
||||
def AddrMode4 : AddrMode<4>;
|
||||
def AddrMode5 : AddrMode<5>;
|
||||
def AddrMode6 : AddrMode<6>;
|
||||
def AddrModeT1_1 : AddrMode<7>;
|
||||
def AddrModeT1_2 : AddrMode<8>;
|
||||
def AddrModeT1_4 : AddrMode<9>;
|
||||
def AddrModeT1_s : AddrMode<10>;
|
||||
def AddrModeT2_i12: AddrMode<11>;
|
||||
def AddrModeT2_i8 : AddrMode<12>;
|
||||
def AddrModeT2_so : AddrMode<13>;
|
||||
def AddrModeT2_pc : AddrMode<14>;
|
||||
def AddrModeNone : AddrMode<0>;
|
||||
def AddrMode1 : AddrMode<1>;
|
||||
def AddrMode2 : AddrMode<2>;
|
||||
def AddrMode3 : AddrMode<3>;
|
||||
def AddrMode4 : AddrMode<4>;
|
||||
def AddrMode5 : AddrMode<5>;
|
||||
def AddrMode6 : AddrMode<6>;
|
||||
def AddrModeT1_1 : AddrMode<7>;
|
||||
def AddrModeT1_2 : AddrMode<8>;
|
||||
def AddrModeT1_4 : AddrMode<9>;
|
||||
def AddrModeT1_s : AddrMode<10>;
|
||||
def AddrModeT2_i12 : AddrMode<11>;
|
||||
def AddrModeT2_i8 : AddrMode<12>;
|
||||
def AddrModeT2_so : AddrMode<13>;
|
||||
def AddrModeT2_pc : AddrMode<14>;
|
||||
def AddrModeT2_i8s4 : AddrMode<15>;
|
||||
|
||||
// Instruction size.
|
||||
@ -247,6 +247,7 @@ class I<dag oops, dag iops, AddrMode am, SizeFlagVal sz,
|
||||
let Pattern = pattern;
|
||||
list<Predicate> Predicates = [IsARM];
|
||||
}
|
||||
|
||||
// A few are not predicable
|
||||
class InoP<dag oops, dag iops, AddrMode am, SizeFlagVal sz,
|
||||
IndexMode im, Format f, InstrItinClass itin,
|
||||
@ -329,16 +330,14 @@ class JTI<dag oops, dag iops, InstrItinClass itin,
|
||||
: XI<oops, iops, AddrModeNone, SizeSpecial, IndexModeNone, BrMiscFrm, itin,
|
||||
asm, "", pattern>;
|
||||
|
||||
|
||||
// Atomic load/store instructions
|
||||
|
||||
class AIldrex<bits<2> opcod, dag oops, dag iops, InstrItinClass itin,
|
||||
string opc, string asm, list<dag> pattern>
|
||||
: I<oops, iops, AddrModeNone, Size4Bytes, IndexModeNone, LdStExFrm, itin,
|
||||
opc, asm, "", pattern> {
|
||||
let Inst{27-23} = 0b00011;
|
||||
let Inst{22-21} = opcod;
|
||||
let Inst{20} = 1;
|
||||
let Inst{20} = 1;
|
||||
let Inst{11-0} = 0b111110011111;
|
||||
}
|
||||
class AIstrex<bits<2> opcod, dag oops, dag iops, InstrItinClass itin,
|
||||
@ -347,7 +346,7 @@ class AIstrex<bits<2> opcod, dag oops, dag iops, InstrItinClass itin,
|
||||
opc, asm, "", pattern> {
|
||||
let Inst{27-23} = 0b00011;
|
||||
let Inst{22-21} = opcod;
|
||||
let Inst{20} = 0;
|
||||
let Inst{20} = 0;
|
||||
let Inst{11-4} = 0b11111001;
|
||||
}
|
||||
|
||||
@ -357,21 +356,21 @@ class AI1<bits<4> opcod, dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
: I<oops, iops, AddrMode1, Size4Bytes, IndexModeNone, f, itin,
|
||||
opc, asm, "", pattern> {
|
||||
let Inst{24-21} = opcod;
|
||||
let Inst{27-26} = {0,0};
|
||||
let Inst{27-26} = 0b00;
|
||||
}
|
||||
class AsI1<bits<4> opcod, dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string opc, string asm, list<dag> pattern>
|
||||
: sI<oops, iops, AddrMode1, Size4Bytes, IndexModeNone, f, itin,
|
||||
opc, asm, "", pattern> {
|
||||
let Inst{24-21} = opcod;
|
||||
let Inst{27-26} = {0,0};
|
||||
let Inst{27-26} = 0b00;
|
||||
}
|
||||
class AXI1<bits<4> opcod, dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string asm, list<dag> pattern>
|
||||
: XI<oops, iops, AddrMode1, Size4Bytes, IndexModeNone, f, itin,
|
||||
asm, "", pattern> {
|
||||
let Inst{24-21} = opcod;
|
||||
let Inst{27-26} = {0,0};
|
||||
let Inst{27-26} = 0b00;
|
||||
}
|
||||
class AI1x2<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string opc, string asm, list<dag> pattern>
|
||||
@ -384,7 +383,7 @@ class AI2<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string opc, string asm, list<dag> pattern>
|
||||
: I<oops, iops, AddrMode2, Size4Bytes, IndexModeNone, f, itin,
|
||||
opc, asm, "", pattern> {
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
|
||||
// loads
|
||||
@ -396,7 +395,7 @@ class AI2ldw<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 0; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
class AXI2ldw<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string asm, list<dag> pattern>
|
||||
@ -406,7 +405,7 @@ class AXI2ldw<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 0; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
class AI2ldb<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string opc, string asm, list<dag> pattern>
|
||||
@ -416,7 +415,7 @@ class AI2ldb<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 1; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
class AXI2ldb<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string asm, list<dag> pattern>
|
||||
@ -426,7 +425,7 @@ class AXI2ldb<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 1; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
|
||||
// stores
|
||||
@ -438,7 +437,7 @@ class AI2stw<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 0; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
class AXI2stw<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string asm, list<dag> pattern>
|
||||
@ -448,7 +447,7 @@ class AXI2stw<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 0; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
class AI2stb<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string opc, string asm, list<dag> pattern>
|
||||
@ -458,7 +457,7 @@ class AI2stb<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 1; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
class AXI2stb<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string asm, list<dag> pattern>
|
||||
@ -468,7 +467,7 @@ class AXI2stb<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 1; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
|
||||
// Pre-indexed loads
|
||||
@ -480,7 +479,7 @@ class AI2ldwpr<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 1; // W bit
|
||||
let Inst{22} = 0; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
class AI2ldbpr<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string opc, string asm, string cstr, list<dag> pattern>
|
||||
@ -490,7 +489,7 @@ class AI2ldbpr<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 1; // W bit
|
||||
let Inst{22} = 1; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
|
||||
// Pre-indexed stores
|
||||
@ -502,7 +501,7 @@ class AI2stwpr<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 1; // W bit
|
||||
let Inst{22} = 0; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
class AI2stbpr<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string opc, string asm, string cstr, list<dag> pattern>
|
||||
@ -512,7 +511,7 @@ class AI2stbpr<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 1; // W bit
|
||||
let Inst{22} = 1; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
|
||||
// Post-indexed loads
|
||||
@ -524,7 +523,7 @@ class AI2ldwpo<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 0; // B bit
|
||||
let Inst{24} = 0; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
class AI2ldbpo<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string opc, string asm, string cstr, list<dag> pattern>
|
||||
@ -534,7 +533,7 @@ class AI2ldbpo<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 1; // B bit
|
||||
let Inst{24} = 0; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
|
||||
// Post-indexed stores
|
||||
@ -546,7 +545,7 @@ class AI2stwpo<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 0; // B bit
|
||||
let Inst{24} = 0; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
class AI2stbpo<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string opc, string asm, string cstr, list<dag> pattern>
|
||||
@ -556,7 +555,7 @@ class AI2stbpo<dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 1; // B bit
|
||||
let Inst{24} = 0; // P bit
|
||||
let Inst{27-26} = {0,1};
|
||||
let Inst{27-26} = 0b01;
|
||||
}
|
||||
|
||||
// addrmode3 instructions
|
||||
@ -984,7 +983,7 @@ class TIx2<bits<5> opcod1, bits<2> opcod2, bit opcod3,
|
||||
Encoding {
|
||||
let Inst{31-27} = opcod1;
|
||||
let Inst{15-14} = opcod2;
|
||||
let Inst{12} = opcod3;
|
||||
let Inst{12} = opcod3;
|
||||
}
|
||||
|
||||
// BR_JT instructions
|
||||
@ -1106,13 +1105,13 @@ class T1Special<bits<4> opcode> : Encoding16 {
|
||||
// A6.2.4 Load/store single data item encoding.
|
||||
class T1LoadStore<bits<4> opA, bits<3> opB> : Encoding16 {
|
||||
let Inst{15-12} = opA;
|
||||
let Inst{11-9} = opB;
|
||||
let Inst{11-9} = opB;
|
||||
}
|
||||
class T1LdSt<bits<3> opB> : T1LoadStore<0b0101, opB>;
|
||||
class T1LdSt<bits<3> opB> : T1LoadStore<0b0101, opB>;
|
||||
class T1LdSt4Imm<bits<3> opB> : T1LoadStore<0b0110, opB>; // Immediate, 4 bytes
|
||||
class T1LdSt1Imm<bits<3> opB> : T1LoadStore<0b0111, opB>; // Immediate, 1 byte
|
||||
class T1LdSt2Imm<bits<3> opB> : T1LoadStore<0b1000, opB>; // Immediate, 2 bytes
|
||||
class T1LdStSP<bits<3> opB> : T1LoadStore<0b1001, opB>; // SP relative
|
||||
class T1LdStSP<bits<3> opB> : T1LoadStore<0b1001, opB>; // SP relative
|
||||
|
||||
// A6.2.5 Miscellaneous 16-bit instructions encoding.
|
||||
class T1Misc<bits<7> opcode> : Encoding16 {
|
||||
@ -1132,9 +1131,10 @@ class Thumb2I<dag oops, dag iops, AddrMode am, SizeFlagVal sz,
|
||||
list<Predicate> Predicates = [IsThumb2];
|
||||
}
|
||||
|
||||
// Same as Thumb2I except it can optionally modify CPSR. Note it's modeled as
|
||||
// an input operand since by default it's a zero register. It will
|
||||
// become an implicit def once it's "flipped".
|
||||
// Same as Thumb2I except it can optionally modify CPSR. Note it's modeled as an
|
||||
// input operand since by default it's a zero register. It will become an
|
||||
// implicit def once it's "flipped".
|
||||
//
|
||||
// FIXME: This uses unified syntax so {s} comes before {p}. We should make it
|
||||
// more consistent.
|
||||
class Thumb2sI<dag oops, dag iops, AddrMode am, SizeFlagVal sz,
|
||||
@ -1192,11 +1192,11 @@ class T2Ii8s4<bit P, bit W, bit load, dag oops, dag iops, InstrItinClass itin,
|
||||
pattern> {
|
||||
let Inst{31-27} = 0b11101;
|
||||
let Inst{26-25} = 0b00;
|
||||
let Inst{24} = P;
|
||||
let Inst{23} = ?; // The U bit.
|
||||
let Inst{22} = 1;
|
||||
let Inst{21} = W;
|
||||
let Inst{20} = load;
|
||||
let Inst{24} = P;
|
||||
let Inst{23} = ?; // The U bit.
|
||||
let Inst{22} = 1;
|
||||
let Inst{21} = W;
|
||||
let Inst{20} = load;
|
||||
}
|
||||
|
||||
class T2sI<dag oops, dag iops, InstrItinClass itin,
|
||||
@ -1232,14 +1232,14 @@ class T2Iidxldst<bit signed, bits<2> opcod, bit load, bit pre,
|
||||
list<Predicate> Predicates = [IsThumb2];
|
||||
let Inst{31-27} = 0b11111;
|
||||
let Inst{26-25} = 0b00;
|
||||
let Inst{24} = signed;
|
||||
let Inst{23} = 0;
|
||||
let Inst{24} = signed;
|
||||
let Inst{23} = 0;
|
||||
let Inst{22-21} = opcod;
|
||||
let Inst{20} = load;
|
||||
let Inst{11} = 1;
|
||||
let Inst{20} = load;
|
||||
let Inst{11} = 1;
|
||||
// (P, W) = (1, 1) Pre-indexed or (0, 1) Post-indexed
|
||||
let Inst{10} = pre; // The P bit.
|
||||
let Inst{8} = 1; // The W bit.
|
||||
let Inst{10} = pre; // The P bit.
|
||||
let Inst{8} = 1; // The W bit.
|
||||
}
|
||||
|
||||
// Helper class for disassembly only
|
||||
@ -1250,9 +1250,9 @@ class T2I_mac<bit long, bits<3> op22_20, bits<4> op7_4, dag oops, dag iops,
|
||||
: T2I<oops, iops, itin, opc, asm, pattern> {
|
||||
let Inst{31-27} = 0b11111;
|
||||
let Inst{26-24} = 0b011;
|
||||
let Inst{23} = long;
|
||||
let Inst{23} = long;
|
||||
let Inst{22-20} = op22_20;
|
||||
let Inst{7-4} = op7_4;
|
||||
let Inst{7-4} = op7_4;
|
||||
}
|
||||
|
||||
// Tv5Pat - Same as Pat<>, but requires V5T Thumb mode.
|
||||
@ -1374,8 +1374,8 @@ class ADbI<bits<5> opcod1, bits<2> opcod2, bit op6, bit op4, dag oops,
|
||||
let Inst{27-23} = opcod1;
|
||||
let Inst{21-20} = opcod2;
|
||||
let Inst{11-8} = 0b1011;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
}
|
||||
|
||||
// Double precision, binary, VML[AS] (for additional predicate)
|
||||
@ -1386,12 +1386,11 @@ class ADbI_vmlX<bits<5> opcod1, bits<2> opcod2, bit op6, bit op4, dag oops,
|
||||
let Inst{27-23} = opcod1;
|
||||
let Inst{21-20} = opcod2;
|
||||
let Inst{11-8} = 0b1011;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
list<Predicate> Predicates = [HasVFP2, UseVMLx];
|
||||
}
|
||||
|
||||
|
||||
// Single precision, unary
|
||||
class ASuI<bits<5> opcod1, bits<2> opcod2, bits<4> opcod3, bits<2> opcod4,
|
||||
bit opcod5, dag oops, dag iops, InstrItinClass itin, string opc,
|
||||
@ -1422,8 +1421,8 @@ class ASbI<bits<5> opcod1, bits<2> opcod2, bit op6, bit op4, dag oops, dag iops,
|
||||
let Inst{27-23} = opcod1;
|
||||
let Inst{21-20} = opcod2;
|
||||
let Inst{11-8} = 0b1010;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
}
|
||||
|
||||
// Single precision binary, if no NEON
|
||||
@ -1528,10 +1527,10 @@ class NLdSt<bit op23, bits<2> op21_20, bits<4> op11_8, bits<4> op7_4,
|
||||
: NeonI<oops, iops, AddrMode6, IndexModeNone, NLdStFrm, itin, opc, dt, asm,
|
||||
cstr, pattern> {
|
||||
let Inst{31-24} = 0b11110100;
|
||||
let Inst{23} = op23;
|
||||
let Inst{23} = op23;
|
||||
let Inst{21-20} = op21_20;
|
||||
let Inst{11-8} = op11_8;
|
||||
let Inst{7-4} = op7_4;
|
||||
let Inst{11-8} = op11_8;
|
||||
let Inst{7-4} = op7_4;
|
||||
}
|
||||
|
||||
class PseudoNLdSt<dag oops, dag iops, InstrItinClass itin, string cstr>
|
||||
@ -1563,13 +1562,13 @@ class N1ModImm<bit op23, bits<3> op21_19, bits<4> op11_8, bit op7, bit op6,
|
||||
string opc, string dt, string asm, string cstr,
|
||||
list<dag> pattern>
|
||||
: NDataI<oops, iops, N1RegModImmFrm, itin, opc, dt, asm, cstr, pattern> {
|
||||
let Inst{23} = op23;
|
||||
let Inst{23} = op23;
|
||||
let Inst{21-19} = op21_19;
|
||||
let Inst{11-8} = op11_8;
|
||||
let Inst{7} = op7;
|
||||
let Inst{6} = op6;
|
||||
let Inst{5} = op5;
|
||||
let Inst{4} = op4;
|
||||
let Inst{11-8} = op11_8;
|
||||
let Inst{7} = op7;
|
||||
let Inst{6} = op6;
|
||||
let Inst{5} = op5;
|
||||
let Inst{4} = op4;
|
||||
}
|
||||
|
||||
// NEON 2 vector register format.
|
||||
@ -1582,9 +1581,9 @@ class N2V<bits<2> op24_23, bits<2> op21_20, bits<2> op19_18, bits<2> op17_16,
|
||||
let Inst{21-20} = op21_20;
|
||||
let Inst{19-18} = op19_18;
|
||||
let Inst{17-16} = op17_16;
|
||||
let Inst{11-7} = op11_7;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
let Inst{11-7} = op11_7;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
}
|
||||
|
||||
// Same as N2V except it doesn't have a datatype suffix.
|
||||
@ -1597,9 +1596,9 @@ class N2VX<bits<2> op24_23, bits<2> op21_20, bits<2> op19_18, bits<2> op17_16,
|
||||
let Inst{21-20} = op21_20;
|
||||
let Inst{19-18} = op19_18;
|
||||
let Inst{17-16} = op17_16;
|
||||
let Inst{11-7} = op11_7;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
let Inst{11-7} = op11_7;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
}
|
||||
|
||||
// NEON 2 vector register with immediate.
|
||||
@ -1607,12 +1606,12 @@ class N2VImm<bit op24, bit op23, bits<4> op11_8, bit op7, bit op6, bit op4,
|
||||
dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string opc, string dt, string asm, string cstr, list<dag> pattern>
|
||||
: NDataI<oops, iops, f, itin, opc, dt, asm, cstr, pattern> {
|
||||
let Inst{24} = op24;
|
||||
let Inst{23} = op23;
|
||||
let Inst{24} = op24;
|
||||
let Inst{23} = op23;
|
||||
let Inst{11-8} = op11_8;
|
||||
let Inst{7} = op7;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
let Inst{7} = op7;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
}
|
||||
|
||||
// NEON 3 vector register format.
|
||||
@ -1620,12 +1619,12 @@ class N3V<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op6, bit op4,
|
||||
dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string opc, string dt, string asm, string cstr, list<dag> pattern>
|
||||
: NDataI<oops, iops, f, itin, opc, dt, asm, cstr, pattern> {
|
||||
let Inst{24} = op24;
|
||||
let Inst{23} = op23;
|
||||
let Inst{24} = op24;
|
||||
let Inst{23} = op23;
|
||||
let Inst{21-20} = op21_20;
|
||||
let Inst{11-8} = op11_8;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
let Inst{11-8} = op11_8;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
}
|
||||
|
||||
// Same as N3V except it doesn't have a data type suffix.
|
||||
@ -1634,12 +1633,12 @@ class N3VX<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op6,
|
||||
dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
string opc, string asm, string cstr, list<dag> pattern>
|
||||
: NDataXI<oops, iops, f, itin, opc, asm, cstr, pattern> {
|
||||
let Inst{24} = op24;
|
||||
let Inst{23} = op23;
|
||||
let Inst{24} = op24;
|
||||
let Inst{23} = op23;
|
||||
let Inst{21-20} = op21_20;
|
||||
let Inst{11-8} = op11_8;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
let Inst{11-8} = op11_8;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
}
|
||||
|
||||
// NEON VMOVs between scalar and core registers.
|
||||
@ -1649,9 +1648,9 @@ class NVLaneOp<bits<8> opcod1, bits<4> opcod2, bits<2> opcod3,
|
||||
: InstARM<AddrModeNone, Size4Bytes, IndexModeNone, f, GenericDomain,
|
||||
"", itin> {
|
||||
let Inst{27-20} = opcod1;
|
||||
let Inst{11-8} = opcod2;
|
||||
let Inst{6-5} = opcod3;
|
||||
let Inst{4} = 1;
|
||||
let Inst{11-8} = opcod2;
|
||||
let Inst{6-5} = opcod3;
|
||||
let Inst{4} = 1;
|
||||
|
||||
let OutOperandList = oops;
|
||||
let InOperandList = !con(iops, (ins pred:$p));
|
||||
@ -1685,9 +1684,9 @@ class NVDupLane<bits<4> op19_16, bit op6, dag oops, dag iops,
|
||||
let Inst{24-23} = 0b11;
|
||||
let Inst{21-20} = 0b11;
|
||||
let Inst{19-16} = op19_16;
|
||||
let Inst{11-7} = 0b11000;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = 0;
|
||||
let Inst{11-7} = 0b11000;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = 0;
|
||||
}
|
||||
|
||||
// NEONFPPat - Same as Pat<>, but requires that the compiler be using NEON
|
||||
|
Loading…
Reference in New Issue
Block a user