[llvm-commits] [llvm] r98972 - in /llvm/trunk: lib/Target/X86/X86Instr64bit.td test/MC/AsmParser/X86/x86_64-new-encoder.s

Daniel Dunbar daniel at zuster.org
Fri Mar 19 12:17:56 PDT 2010


On Fri, Mar 19, 2010 at 11:14 AM, Chris Lattner <clattner at apple.com> wrote:
>
> On Mar 19, 2010, at 11:07 AM, Daniel Dunbar wrote:
>
>> Author: ddunbar
>> Date: Fri Mar 19 13:07:48 2010
>> New Revision: 98972
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=98972&view=rev
>> Log:
>> MC/X86: Rename alternate spellings of {ADD64,CMP64} and mark as "code gen only" so they don't get selected by the asm matcher.
>
> maybe these should be marked "disassembler only"?

I think the correct bit would be "non-matchable". My guess is
eventually we get a way to spell that without a custom bit, we are
going to need support for custom tuning the matcher eventually.

 - Daniel

>
> -Chris
>
>>
>> Modified:
>>    llvm/trunk/lib/Target/X86/X86Instr64bit.td
>>    llvm/trunk/test/MC/AsmParser/X86/x86_64-new-encoder.s
>>
>> Modified: llvm/trunk/lib/Target/X86/X86Instr64bit.td
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Instr64bit.td?rev=98972&r1=98971&r2=98972&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86Instr64bit.td (original)
>> +++ llvm/trunk/lib/Target/X86/X86Instr64bit.td Fri Mar 19 13:07:48 2010
>> @@ -511,6 +511,14 @@
>>                     [(set GR64:$dst, (add GR64:$src1, GR64:$src2)),
>>                      (implicit EFLAGS)]>;
>>
>> +// These are alternate spellings for use by the disassembler, we mark them as
>> +// code gen only to ensure they aren't matched by the assembler.
>> +let isCodeGenOnly = 1 in {
>> +  def ADD64rr_alt  : RI<0x03, MRMSrcReg, (outs GR64:$dst),
>> +                       (ins GR64:$src1, GR64:$src2),
>> +                       "add{l}\t{$src2, $dst|$dst, $src2}", []>;
>> +}
>> +
>> // Register-Integer Addition
>> def ADD64ri8  : RIi8<0x83, MRM0r, (outs GR64:$dst),
>>                      (ins GR64:$src1, i64i8imm:$src2),
>> @@ -531,12 +539,6 @@
>>                      [(set GR64:$dst, (add GR64:$src1, (load addr:$src2))),
>>                       (implicit EFLAGS)]>;
>>
>> -// Register-Register Addition - Equivalent to the normal rr form (ADD64rr), but
>> -//   differently encoded.
>> -def ADD64mrmrr  : RI<0x03, MRMSrcReg, (outs GR64:$dst),
>> -                     (ins GR64:$src1, GR64:$src2),
>> -                     "add{l}\t{$src2, $dst|$dst, $src2}", []>;
>> -
>> } // isTwoAddress
>>
>> // Memory-Register Addition
>> @@ -1249,8 +1251,14 @@
>> def CMP64rr : RI<0x39, MRMDestReg, (outs), (ins GR64:$src1, GR64:$src2),
>>                  "cmp{q}\t{$src2, $src1|$src1, $src2}",
>>                  [(set EFLAGS, (X86cmp GR64:$src1, GR64:$src2))]>;
>> -def CMP64mrmrr : RI<0x3B, MRMSrcReg, (outs), (ins GR64:$src1, GR64:$src2),
>> -                    "cmp{q}\t{$src2, $src1|$src1, $src2}", []>;
>> +
>> +// These are alternate spellings for use by the disassembler, we mark them as
>> +// code gen only to ensure they aren't matched by the assembler.
>> +let isCodeGenOnly = 1 in {
>> +  def CMP64mrmrr : RI<0x3B, MRMSrcReg, (outs), (ins GR64:$src1, GR64:$src2),
>> +                      "cmp{q}\t{$src2, $src1|$src1, $src2}", []>;
>> +}
>> +
>> def CMP64mr : RI<0x39, MRMDestMem, (outs), (ins i64mem:$src1, GR64:$src2),
>>                  "cmp{q}\t{$src2, $src1|$src1, $src2}",
>>                  [(set EFLAGS, (X86cmp (loadi64 addr:$src1), GR64:$src2))]>;
>>
>> Modified: llvm/trunk/test/MC/AsmParser/X86/x86_64-new-encoder.s
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/X86/x86_64-new-encoder.s?rev=98972&r1=98971&r2=98972&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/MC/AsmParser/X86/x86_64-new-encoder.s (original)
>> +++ llvm/trunk/test/MC/AsmParser/X86/x86_64-new-encoder.s Fri Mar 19 13:07:48 2010
>> @@ -48,3 +48,7 @@
>> // CHECK: testq       %rax, %rbx
>> // CHECK:  encoding: [0x48,0x85,0xd8]
>> testq %rax, %rbx
>> +
>> +// CHECK: cmpq       %rbx, %r14
>> +// CHECK:   encoding: [0x49,0x39,0xde]
>> +        cmpq %rbx, %r14
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>




More information about the llvm-commits mailing list