summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2014-02-19 07:29:07 +0000
committerCraig Topper <craig.topper@gmail.com>2014-02-19 07:29:07 +0000
commit52fb0a59d023d8e779a31c263bc06b4371b30882 (patch)
tree5421e8eebdc50a831684771adc77de81169630b6 /lib
parent75116bc27e9ab0780a4f0579c020247c6c7fe46d (diff)
downloadllvm-52fb0a59d023d8e779a31c263bc06b4371b30882.tar.gz
llvm-52fb0a59d023d8e779a31c263bc06b4371b30882.tar.bz2
llvm-52fb0a59d023d8e779a31c263bc06b4371b30882.tar.xz
Reduce size of map field in X86 TSFlags since it now requires less bits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201646 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/X86/MCTargetDesc/X86BaseInfo.h4
-rw-r--r--lib/Target/X86/X86InstrFormats.td52
2 files changed, 28 insertions, 28 deletions
diff --git a/lib/Target/X86/MCTargetDesc/X86BaseInfo.h b/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
index d50c47d350..9b0fcbcb9c 100644
--- a/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
+++ b/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
@@ -350,7 +350,7 @@ namespace X86II {
// belongs to. i.e. one-byte, two-byte, 0x0f 0x38, 0x0f 0x3a, etc.
//
OpMapShift = OpPrefixShift + 3,
- OpMapMask = 0x1f << OpMapShift,
+ OpMapMask = 0xf << OpMapShift,
// OB - OneByte - Set if this instruction has a one byte opcode.
OB = 0 << OpMapShift,
@@ -384,7 +384,7 @@ namespace X86II {
// etc. We only cares about REX.W and REX.R bits and only the former is
// statically determined.
//
- REXShift = OpMapShift + 5,
+ REXShift = OpMapShift + 4,
REX_W = 1 << REXShift,
//===------------------------------------------------------------------===//
diff --git a/lib/Target/X86/X86InstrFormats.td b/lib/Target/X86/X86InstrFormats.td
index 328083d4ef..bd210040f4 100644
--- a/lib/Target/X86/X86InstrFormats.td
+++ b/lib/Target/X86/X86InstrFormats.td
@@ -126,8 +126,8 @@ def XS : Prefix<3>;
def XD : Prefix<4>;
// Class specifying the opcode map.
-class Map<bits<5> val> {
- bits<5> Value = val;
+class Map<bits<4> val> {
+ bits<4> Value = val;
}
def OB : Map<0>;
def TB : Map<1>;
@@ -285,30 +285,30 @@ class X86Inst<bits<8> opcod, Format f, ImmType i, dag outs, dag ins,
let TSFlags{7-6} = OpSize.Value;
let TSFlags{8} = hasAdSizePrefix;
let TSFlags{11-9} = OpPrefix.Value;
- let TSFlags{16-12} = OpMap.Value;
- let TSFlags{17} = hasREX_WPrefix;
- let TSFlags{21-18} = ImmT.Value;
- let TSFlags{24-22} = FPForm.Value;
- let TSFlags{25} = hasLockPrefix;
- let TSFlags{26} = hasREPPrefix;
- let TSFlags{28-27} = ExeDomain.Value;
- let TSFlags{30-29} = OpEnc.Value;
- let TSFlags{38-31} = Opcode;
- let TSFlags{39} = hasVEX_WPrefix;
- let TSFlags{40} = hasVEX_4V;
- let TSFlags{41} = hasVEX_4VOp3;
- let TSFlags{42} = hasVEX_i8ImmReg;
- let TSFlags{43} = hasVEX_L;
- let TSFlags{44} = ignoresVEX_L;
- let TSFlags{45} = hasEVEX_K;
- let TSFlags{46} = hasEVEX_Z;
- let TSFlags{47} = hasEVEX_L2;
- let TSFlags{48} = hasEVEX_B;
- let TSFlags{50-49} = EVEX_CD8E;
- let TSFlags{53-51} = EVEX_CD8V;
- let TSFlags{54} = has3DNow0F0FOpcode;
- let TSFlags{55} = hasMemOp4Prefix;
- let TSFlags{56} = hasEVEX_RC;
+ let TSFlags{15-12} = OpMap.Value;
+ let TSFlags{16} = hasREX_WPrefix;
+ let TSFlags{20-17} = ImmT.Value;
+ let TSFlags{23-21} = FPForm.Value;
+ let TSFlags{24} = hasLockPrefix;
+ let TSFlags{25} = hasREPPrefix;
+ let TSFlags{27-26} = ExeDomain.Value;
+ let TSFlags{29-28} = OpEnc.Value;
+ let TSFlags{37-30} = Opcode;
+ let TSFlags{38} = hasVEX_WPrefix;
+ let TSFlags{39} = hasVEX_4V;
+ let TSFlags{40} = hasVEX_4VOp3;
+ let TSFlags{41} = hasVEX_i8ImmReg;
+ let TSFlags{42} = hasVEX_L;
+ let TSFlags{43} = ignoresVEX_L;
+ let TSFlags{44} = hasEVEX_K;
+ let TSFlags{45} = hasEVEX_Z;
+ let TSFlags{46} = hasEVEX_L2;
+ let TSFlags{47} = hasEVEX_B;
+ let TSFlags{49-48} = EVEX_CD8E;
+ let TSFlags{52-50} = EVEX_CD8V;
+ let TSFlags{53} = has3DNow0F0FOpcode;
+ let TSFlags{54} = hasMemOp4Prefix;
+ let TSFlags{55} = hasEVEX_RC;
}
class PseudoI<dag oops, dag iops, list<dag> pattern>