[llvm-commits] [llvm] r55846 - /llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp

Evan Cheng evan.cheng at apple.com
Mon Sep 8 09:44:32 PDT 2008


Can we and the value with a mask for other kinds of uses?

Evan

On Sep 5, 2008, at 11:44 AM, Dan Gohman wrote:

> Author: djg
> Date: Fri Sep  5 13:44:22 2008
> New Revision: 55846
>
> URL: http://llvm.org/viewvc/llvm-project?rev=55846&view=rev
> Log:
> FastISel support for AND and OR with type i1.
>
> Modified:
>    llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp
>
> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp?rev=55846&r1=55845&r2=55846&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp Fri Sep  5  
> 13:44:22 2008
> @@ -103,12 +103,20 @@
>   if (VT == MVT::Other || !VT.isSimple())
>     // Unhandled type. Halt "fast" selection and bail.
>     return false;
> +
>   // We only handle legal types. For example, on x86-32 the  
> instruction
>   // selector contains all of the 64-bit instructions from x86-64,
>   // under the assumption that i64 won't be used if the target doesn't
>   // support it.
> -  if (!TLI.isTypeLegal(VT))
> -    return false;
> +  if (!TLI.isTypeLegal(VT)) {
> +    // MVT::i1 is special. Allow AND and OR (but not XOR) because  
> they
> +    // don't require additional zeroing, which makes them easy.
> +    if (VT == MVT::i1 &&
> +        (ISDOpcode == ISD::AND || ISDOpcode == ISD::OR))
> +      VT = TLI.getTypeToTransformTo(VT);
> +    else
> +      return false;
> +  }
>
>   unsigned Op0 = getRegForValue(I->getOperand(0));
>   if (Op0 == 0)
>
>
> _______________________________________________
> 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