aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2010-11-29 22:15:03 +0000
committerBill Wendling <isanbard@gmail.com>2010-11-29 22:15:03 +0000
commita46a493c026cb60eec461f40318ce7ca7574f1b5 (patch)
tree64d926d0abc5cb2d58f787484b8036e42afeb843 /lib
parente9e973018aaf93dbd21b894b404e4b3a50805479 (diff)
downloadexternal_llvm-a46a493c026cb60eec461f40318ce7ca7574f1b5.zip
external_llvm-a46a493c026cb60eec461f40318ce7ca7574f1b5.tar.gz
external_llvm-a46a493c026cb60eec461f40318ce7ca7574f1b5.tar.bz2
Refactor some of the "disassembly-only" instructions into a base class. This
reduces some code duplication. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120326 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/ARM/ARMInstrThumb.td57
1 files changed, 21 insertions, 36 deletions
diff --git a/lib/Target/ARM/ARMInstrThumb.td b/lib/Target/ARM/ARMInstrThumb.td
index 568cbc6..5ac8b98 100644
--- a/lib/Target/ARM/ARMInstrThumb.td
+++ b/lib/Target/ARM/ARMInstrThumb.td
@@ -136,45 +136,41 @@ def tADJCALLSTACKDOWN :
Requires<[IsThumb, IsThumb1Only]>;
}
+class T1Disassembly<bits<2> op1, bits<8> op2>
+ : T1Encoding<0b101111> {
+ let Inst{9-8} = op1;
+ let Inst{7-0} = op2;
+}
+
def tNOP : T1pI<(outs), (ins), NoItinerary, "nop", "",
[/* For disassembly only; pattern left blank */]>,
- T1Encoding<0b101111> {
- // A8.6.110
- let Inst{9-8} = 0b11;
- let Inst{7-0} = 0x00;
-}
+ T1Disassembly<0b11, 0x00>; // A8.6.110
def tYIELD : T1pI<(outs), (ins), NoItinerary, "yield", "",
[/* For disassembly only; pattern left blank */]>,
- T1Encoding<0b101111> {
- // A8.6.410
- let Inst{9-8} = 0b11;
- let Inst{7-0} = 0x10;
-}
+ T1Disassembly<0b11, 0x10>; // A8.6.410
def tWFE : T1pI<(outs), (ins), NoItinerary, "wfe", "",
[/* For disassembly only; pattern left blank */]>,
- T1Encoding<0b101111> {
- // A8.6.408
- let Inst{9-8} = 0b11;
- let Inst{7-0} = 0x20;
-}
+ T1Disassembly<0b11, 0x20>; // A8.6.408
def tWFI : T1pI<(outs), (ins), NoItinerary, "wfi", "",
[/* For disassembly only; pattern left blank */]>,
- T1Encoding<0b101111> {
- // A8.6.409
- let Inst{9-8} = 0b11;
- let Inst{7-0} = 0x30;
-}
+ T1Disassembly<0b11, 0x30>; // A8.6.409
def tSEV : T1pI<(outs), (ins), NoItinerary, "sev", "",
[/* For disassembly only; pattern left blank */]>,
- T1Encoding<0b101111> {
- // A8.6.157
- let Inst{9-8} = 0b11;
- let Inst{7-0} = 0x40;
-}
+ T1Disassembly<0b11, 0x40>; // A8.6.157
+
+// The i32imm operand $val can be used by a debugger to store more information
+// about the breakpoint.
+def tBKPT : T1I<(outs), (ins i32imm:$val), NoItinerary, "bkpt\t$val",
+ [/* For disassembly only; pattern left blank */]>,
+ T1Disassembly<0b10, {?,?,?,?,?,?,?,?}> {
+ // A8.6.22
+ bits<8> val;
+ let Inst{7-0} = val;
+}
def tSETENDBE : T1I<(outs), (ins), NoItinerary, "setend\tbe",
[/* For disassembly only; pattern left blank */]>,
@@ -196,17 +192,6 @@ def tSETENDLE : T1I<(outs), (ins), NoItinerary, "setend\tle",
let Inst{2-0} = 0b000;
}
-// The i32imm operand $val can be used by a debugger to store more information
-// about the breakpoint.
-def tBKPT : T1I<(outs), (ins i32imm:$val), NoItinerary, "bkpt\t$val",
- [/* For disassembly only; pattern left blank */]>,
- T1Encoding<0b101111> {
- // A8.6.22
- bits<8> val;
- let Inst{9-8} = 0b10;
- let Inst{7-0} = val;
-}
-
// Change Processor State is a system instruction -- for disassembly only.
// The singleton $opt operand contains the following information:
// opt{4-0} = mode ==> don't care