[llvm-commits] CVS: llvm/lib/Target/ARM/ARMInstrInfo.cpp ARMInstrInfo.h ARMTargetMachine.cpp ARMTargetMachine.h

Evan Cheng evan.cheng at apple.com
Wed May 16 01:18:20 PDT 2007

On May 16, 2007, at 1:02 AM, Evan Cheng wrote:

> On May 15, 2007, at 11:50 PM, Chris Lattner wrote:
>> I don't think there is any reason for this to be virtual and target-
>> specific.  In particular, can you please model B/tB the same way PPC
>> handles branches (where an uncond branch is just a conditional branch
>> where the condition is set to 'always')?  That way, you don't need a
>> special case, isPredicatable doesn't need to be virtual, and each
>> target doesn't need to implement PredicateInstruction.
> Hrm? PPC has two separate opcodes for conditional and unconditional
> branches.
> Are you talking about not having separate opcodes representing
> conditional and unconditional branches? I suppose that's ok except
> for some additional complexity added to AnalyzeBranch (and the fact
> it's harder to read the debug output). I'd prefer to keep the two
> separate (but ok with giving ARM::B a ''always' predicate).
> But even then I am not sure if that eliminate the need to have a
> virtual function isPredicatable. Conditional branches probably would
> require special handling. Also, while it isn't possible now, it's
> conceivable some instruction predicate field may not be 'always'
> coming into the if-conversion pass. In that case, it would require a
> target hook to examine the field anyway.

cmov is another class of  M_PREDICATED ops that need to be dealt with  
differently. We'll need a hook to check if something is already  
predicated with non-always predicate.

Come to think of it, perhaps we should not have selects if the target  
uses if-conversion.


> Evan
>> -Chris
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> _______________________________________________
> 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