[llvm-commits] [llvm] r47043 - in /llvm/trunk/lib: CodeGen/TargetInstrInfoImpl.cpp Target/PowerPC/PPCInstrInfo.cpp Target/X86/X86InstrInfo.cpp

Evan Cheng evan.cheng at apple.com
Wed Feb 13 01:09:53 PST 2008


On Feb 12, 2008, at 9:59 PM, Chris Lattner wrote:

>
> On Feb 12, 2008, at 6:46 PM, Evan Cheng wrote:
>
>> Author: evancheng
>> Date: Tue Feb 12 20:46:49 2008
>> New Revision: 47043
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=47043&view=rev
>> Log:
>> commuteInstr() can now commute non-ssa machine instrs.
>>
>> Modified:
>>   llvm/trunk/lib/CodeGen/TargetInstrInfoImpl.cpp
>>   llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.cpp
>>   llvm/trunk/lib/Target/X86/X86InstrInfo.cpp
>>
>> Modified: llvm/trunk/lib/CodeGen/TargetInstrInfoImpl.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TargetInstrInfoImpl.cpp?rev=47043&r1=47042&r2=47043&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- llvm/trunk/lib/CodeGen/TargetInstrInfoImpl.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/TargetInstrInfoImpl.cpp Tue Feb 12
>> 20:46:49 2008
>> @@ -23,8 +23,17 @@
>>         "This only knows how to commute register operands so far");
>>  unsigned Reg1 = MI->getOperand(1).getReg();
>>  unsigned Reg2 = MI->getOperand(2).getReg();
>> +  MachineOperand &MO = MI->getOperand(0);
>> +  bool UpdateReg0 = MO.isReg() && MO.getReg() == Reg1;
>>  bool Reg1IsKill = MI->getOperand(1).isKill();
>>  bool Reg2IsKill = MI->getOperand(2).isKill();
>> +  if (UpdateReg0) {
>
> Why not just use:
>
> if (MO.isReg() && MO.getReg() == Reg1)
>
> Further, does it even make sense for instructions to be marked
> commutable if the first operand isn't a register?  Why not just use:
>
> if (MO.getReg() == Reg1)

Ok.

>
>
> Bonus points for making tblgen reject instructions marked commutable
> that don't start with three register operands.

That's too restrictive. It's entirely legal for target instruction  
that don't start with 3 register operands to be commutable. That's why  
we allow target specific code to commute certain instructions.

Evan

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