Exapnding add:i32 assertion failure with 2.2

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Exapnding add:i32 assertion failure with 2.2

Sanjiv Gupta
My target supports only 8-bit arithmetic, hence I specified it to exapand ADD for i32 and i16.
 
llc fails at the following place in LegalizeDAG.cpp:
 
assert(MVT::isVector(Node->getValueType(0)) &&
             "Cannot expand this binary operator!");
      // Expand the operation into a bunch of nasty scalar code.
      Result = LegalizeOp(UnrollVectorOp(Op));
 
I don't understand why it is treating i32 and i16 as vector types.
I think it was working fine in llvm2.1
 
Any help is welcome.
 
Thanks,
Sanjiv
 

_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Exapnding add:i32 assertion failure with 2.2

Duncan Sands
> My target supports only 8-bit arithmetic, hence I specified it to exapand
> ADD for i32 and i16.

I don't have any help to offer for your precise problem, but the new
type legalization infrastructure which is being prepared (for 2.3
hopefully) should be much better at handling this kind of thing.

Best wishes,

Duncan.
_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Exapnding add:i32 assertion failure with 2.2

Evan Cheng-2
In reply to this post by Sanjiv Gupta
Do a Node->dump(&DAG). What does Node look like?

If all else fails, do a "make clean; make" just to make sure nothing  
is out of sync.

Evan

On Feb 21, 2008, at 5:29 AM, Sanjiv Gupta wrote:

> My target supports only 8-bit arithmetic, hence I specified it to  
> exapand ADD for i32 and i16.
>
> llc fails at the following place in LegalizeDAG.cpp:
>
> assert(MVT::isVector(Node->getValueType(0)) &&
>              "Cannot expand this binary operator!");
>       // Expand the operation into a bunch of nasty scalar code.
>       Result = LegalizeOp(UnrollVectorOp(Op));
>
> I don't understand why it is treating i32 and i16 as vector types.
> I think it was working fine in llvm2.1
>
> Any help is welcome.
>
> Thanks,
> Sanjiv
>
> _______________________________________________
> LLVM Developers mailing list
> [hidden email]         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev