From 52fb0a59d023d8e779a31c263bc06b4371b30882 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Wed, 19 Feb 2014 07:29:07 +0000 Subject: 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 --- lib/Target/X86/MCTargetDesc/X86BaseInfo.h | 4 +-- lib/Target/X86/X86InstrFormats.td | 52 +++++++++++++++---------------- 2 files changed, 28 insertions(+), 28 deletions(-) (limited to 'lib') 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 val> { - bits<5> Value = val; +class Map val> { + bits<4> Value = val; } def OB : Map<0>; def TB : Map<1>; @@ -285,30 +285,30 @@ class X86Inst 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 pattern> -- cgit v1.2.3