diff options
| author | Craig Topper <craig.topper@intel.com> | 2019-04-09 07:40:06 +0000 | 
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2019-04-09 07:40:06 +0000 | 
| commit | 2f9c1732b82d3b9197a92dd1ec575b404cea281c (patch) | |
| tree | 93b154fd81e9b26e10192ae7c5c9720b783f77e1 /llvm/lib/Target | |
| parent | 6e9157d5885bfbb93c07e4b0f316229734de0e01 (diff) | |
| download | bcm5719-llvm-2f9c1732b82d3b9197a92dd1ec575b404cea281c.tar.gz bcm5719-llvm-2f9c1732b82d3b9197a92dd1ec575b404cea281c.zip  | |
[X86] Split the VEX_WPrefix in X86Inst tablegen class into 3 separate fields with clear meanings.
llvm-svn: 357970
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrFormats.td | 16 | 
1 files changed, 8 insertions, 8 deletions
diff --git a/llvm/lib/Target/X86/X86InstrFormats.td b/llvm/lib/Target/X86/X86InstrFormats.td index 65125ce5af7..dcb65c29985 100644 --- a/llvm/lib/Target/X86/X86InstrFormats.td +++ b/llvm/lib/Target/X86/X86InstrFormats.td @@ -210,13 +210,10 @@ class TAPS : TA { Prefix OpPrefix = PS; }  class TAPD : TA { Prefix OpPrefix = PD; }  class TAXD : TA { Prefix OpPrefix = XD; }  class VEX    { Encoding OpEnc = EncVEX; } -class VEX_W    { bits<2> VEX_WPrefix = 1; } -class VEX_WIG  { bits<2> VEX_WPrefix = 2; } +class VEX_W    { bit HasVEX_W = 1; } +class VEX_WIG  { bit IgnoresVEX_W = 1; }  // Special version of VEX_W that can be changed to VEX.W==0 for EVEX2VEX. -// FIXME: We should consider adding separate bits for VEX_WIG and the extra -// part of W1X. This would probably simplify the tablegen emitters and -// the TSFlags creation below. -class VEX_W1X  { bits<2> VEX_WPrefix = 3; } +class VEX_W1X  { bit HasVEX_W = 1; bit EVEX_W1_VEX_W0 = 1; }  class VEX_4V : VEX { bit hasVEX_4V = 1; }  class VEX_L  { bit hasVEX_L = 1; }  class VEX_LIG { bit ignoresVEX_L = 1; } @@ -300,7 +297,10 @@ class X86Inst<bits<8> opcod, Format f, ImmType i, dag outs, dag ins,    bit hasREPPrefix = 0;     // Does this inst have a REP prefix?    Encoding OpEnc = EncNormal; // Encoding used by this instruction    bits<2> OpEncBits = OpEnc.Value; -  bits<2> VEX_WPrefix = 0;  // Does this inst set the VEX_W field? +  bit HasVEX_W = 0;         // Does this inst set the VEX_W field? +  bit IgnoresVEX_W = 0;     // Does this inst ignore VEX_W field? +  bit EVEX_W1_VEX_W0 = 0;   // This EVEX inst with VEX.W==1 can become a VEX +                            // instruction with VEX.W == 0.    bit hasVEX_4V = 0;        // Does this inst require the VEX.VVVV field?    bit hasVEX_L = 0;         // Does this inst use large (256-bit) registers?    bit ignoresVEX_L = 0;     // Does this instruction ignore the L-bit @@ -359,7 +359,7 @@ class X86Inst<bits<8> opcod, Format f, ImmType i, dag outs, dag ins,    let TSFlags{29-28} = OpEncBits;    let TSFlags{37-30} = Opcode;    // Currently no need for second bit in TSFlags - W Ignore is equivalent to 0. -  let TSFlags{38}    = VEX_WPrefix{0}; +  let TSFlags{38}    = HasVEX_W;    let TSFlags{39}    = hasVEX_4V;    let TSFlags{40}    = hasVEX_L;    let TSFlags{41}    = hasEVEX_K;  | 

