[llvm-commits] CVS: llvm/lib/Target/ARM/ARMInstrInfo.cpp ARMInstrInfo.h ARMTargetMachine.cpp ARMTargetMachine.h
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
> 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
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
More information about the llvm-commits