This is not a new issue. But I am wondering if this may be a compile
time issue if the number of legal FP immediate is sufficiently large?
Should we build a hash table for it instead?
Evan
On Feb 14, 2008, at 12:57 AM, Nate Begeman wrote:
>
> switch (TLI.getOperationAction(ISD::ConstantFP, CFP-
> >getValueType(0))) {
> default: assert(0 && "This action is not supported yet!");
> + case TargetLowering::Legal:
> + break;
> case TargetLowering::Custom:
> Tmp3 = TLI.LowerOperation(Result, DAG);
> if (Tmp3.Val) {
> @@ -1180,9 +1166,22 @@
> break;
> }
> // FALLTHROUGH
> - case TargetLowering::Expand:
> + case TargetLowering::Expand: {
> + // Check to see if this FP immediate is already legal.
> + bool isLegal = false;
> + for (TargetLowering::legal_fpimm_iterator I =
> TLI.legal_fpimm_begin(),
> + E = TLI.legal_fpimm_end(); I != E; ++I) {
> + if (CFP->isExactlyValue(*I)) {
> + isLegal = true;
> + break;
> + }
> + }
> + // If this is a legal constant, turn it into a
> TargetConstantFP node.
> + if (isLegal)
> + break;
> Result = ExpandConstantFP(CFP, true, DAG, TLI);
> }
> + }
> break;
_______________________________________________
llvm-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits