[llvm-commits] FW: Vector promotion broken for <2 x [i8|i16]>

Duncan Sands baldrick at free.fr
Mon Oct 22 02:07:11 PDT 2012


Hi Micah,

On 28/07/12 00:57, Villmow, Micah wrote:
> Making sure it goes to commits also.
>
> *From:*llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] *On
> Behalf Of *Villmow, Micah
> *Sent:* Friday, July 27, 2012 3:54 PM
> *To:* Developers Mailing List
> *Subject:* [LLVMdev] Vector promotion broken for <2 x [i8|i16]>
>
> Vector promotion which is new in LLVM 3.1 is broken for sub32 bit types. The
> problem is in the VectorLegalizer::PromoteVectorOp.
>
> The function getTypeToPromoteTo will return a <2 x i32> for a <2 x i8>, <2 x
> i16> or <4 x i8>. The problem is that there are no vectors of size 1 defined for
> i32 or i16. The attached patch fixes these issues.
>
> This can be reproduced by setting in any target:
>
> setOperationAction(ISD::AND, MVT::i8, Promote);
>
> setOperationAction(ISD::AND, MVT::v2i8, Promote);
>
> setOperationAction(ISD::AND, MVT::i16, Promote);
>
> Let me know if this is good,

how about adding a bunch of assertions in getTypeToPromoteTo to catch this kind
of thing.

Ciao, Duncan.



More information about the llvm-commits mailing list