[llvm-commits] [llvm] r60915 - in /llvm/trunk/lib: CodeGen/SelectionDAG/DAGCombiner.cpp Target/X86/X86ISelLowering.cpp Target/X86/X86ISelLowering.h Target/X86/X86Instr64bit.td Target/X86/X86InstrInfo.td

Evan Cheng evan.cheng at apple.com
Fri Dec 12 09:49:49 PST 2008


On Dec 12, 2008, at 9:14 AM, Bill Wendling wrote:

> On Fri, Dec 12, 2008 at 8:41 AM, Evan Cheng <echeng at apple.com> wrote:
>> That's not what I asked. If you look at X86GenInstrInfo.inc, you will
>> see:
>>
>>  { 41, 3,      1,      0,      "ADD32rr", 0|
>> (1<<TID::ConvertibleTo3Addr)|(1<<TID::Commutable), 0|3|(1<<24), NULL,
>> ImplicitList1, Barriers1, OperandInfo9 },  // Inst #41 = ADD32rr
>>  { 67, 3,      1,      0,      "ADDOvf32rr", 0|
>> (1<<TID::ConvertibleTo3Addr)|(1<<TID::Commutable), 0|3|(1<<24), NULL,
>> ImplicitList1, Barriers1, OperandInfo9 },  // Inst #67 = ADDOvf32rr
>>
>> Apart from opcode number, these two instructions are identical. There
>> is no reason to have a separate ADDOvf32rr instruction. You can have
>> multiple patterns matching the same instruction.
>>
> Okay.

Thanks. Just to clarify, the correct thing to do is to rename  
ADDOvf32rr to ADD32rr and delete the old ADD32rr. That is, we always  
select to an X86::ADD* instruction that produces two values, with the  
second one being EFLAGS. In the *normal* case, the scheduler will see  
EFLAGS is not used and it will mark it dead.

But make sure you try it on a couple of these instructions first  
before you convert everything over. Just in case I am full of it. :-)

Evan

>
>
> -bw
> _______________________________________________
> 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