[LLVMdev] X86InstrFormats.td Question

David Greene dag at cray.com
Mon Mar 23 16:05:24 PDT 2009


On Monday 23 March 2009 16:38, Nate Begeman wrote:

> > // SSSE3 Instruction Templates:
> > //
> > //   SS38I - SSSE3 instructions with T8 prefix.
> > //   SS3AI - SSSE3 instructions with TA prefix.
> > //
> >
> > Where are these prefix names coming from?  I can't find any mention
> > of them in
> > the Intel literature.
>
> They come from the fact that the SSSE3 instructions begin with 0F 38
> or 0F 3A.

I sort of guessed that, but why "T?"   For (T)hree?

> > Also, there's this curious table:
> >
> > // Prefix byte classes which are used to indicate to the ad-hoc
> > machine code
> > // emitter that various prefix bytes are required.
> > class OpSize { bit hasOpSizePrefix = 1; }
> > class AdSize { bit hasAdSizePrefix = 1; }
> > class REX_W  { bit hasREX_WPrefix = 1; }
> > class LOCK   { bit hasLockPrefix = 1; }
> > class TB     { bits<4> Prefix = 1; }
> > class REP    { bits<4> Prefix = 2; }
> > class D8     { bits<4> Prefix = 3; }
> > class D9     { bits<4> Prefix = 4; }
> > class DA     { bits<4> Prefix = 5; }
> > class DB     { bits<4> Prefix = 6; }
> > class DC     { bits<4> Prefix = 7; }
> > class DD     { bits<4> Prefix = 8; }
> > class DE     { bits<4> Prefix = 9; }
> > class DF     { bits<4> Prefix = 10; }
> > class XD     { bits<4> Prefix = 11; }
> > class XS     { bits<4> Prefix = 12; }
> > class T8     { bits<4> Prefix = 13; }
> > class TA     { bits<4> Prefix = 14; }
> >
> > Are these Prefix values special at all or do they just serve as unique
> > identifiers within LLVM?
>
> They are just unique identifiers in LLVM.

Ok.  X86CodeEmitter has this for XS / XD:

  case X86II::XS:   // F3 0F
  case X86II::XD:   // F2 0F

Why "XS" and "XD?"  (X)MM (S)ingle and (X)MM (D)ouble?

                                             -Dave



More information about the llvm-dev mailing list