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