[LLVMdev] [PATCH] x86: disambiguate unqualified btr, bts

Eli Friedman eli.friedman at gmail.com
Wed Jul 10 19:30:48 PDT 2013


On Wed, Jul 10, 2013 at 7:15 PM, Jim Grosbach <grosbach at apple.com> wrote:
>
> On Jul 10, 2013, at 6:54 PM, Stephen Checkoway <s at pahtak.org> wrote:
>
> On Jul 10, 2013, at 17:44, Jim Grosbach <grosbach at apple.com> wrote:
>
> The length specifier is, as I understand it, required when the instruction
> references memory but is optional (and inferred from the registers) for the
> register variants.
>
> The best reference I know of for the AT&T syntax is:
> http://docs.oracle.com/cd/E19253-01/817-5477/817-5477.pdf
>
>
> I'm not sure I'd use the documentation for the Solaris assembler as
> authoritative for AT&T syntax, but page 17 does say that if the suffix is
> omitted it defaults to long.
>
>
> Yeah, me either. That’s part of why I’m asking for references. I’d love to
> know which ones other people use. Good docs for AT&T syntax are annoyingly
> hard to find.
>
> However, that isn't my experience with gas which uses register operands to
> disambiguate, if possible (although I'm on a phone and can't check right
> now).
>
>
> Yep, it’s the memory reference versions which IIUC require a suffix.
>
> I want to make sure we do the right thing here and know why we’re doing it
> rather than just adding some aliases because it matches gas’ behavior.

The reason it's the right thing to do is that the mem/imm forms of
btsw and btsl have exactly the same semantics.

-Eli




More information about the llvm-dev mailing list