[LLVMdev] "Cannot select" error in 2.9

Nick Lewycky nicholas at mxc.ca
Sat Jul 30 14:35:33 PDT 2011


Gregory Junker wrote:
>>> -----Original Message-----
>>> From: Rotem, Nadav [mailto:nadav.rotem at intel.com]
>>> Sent: Saturday, July 30, 2011 6:51 AM
>>> To: Gregory Junker
>>> Subject: RE: [LLVMdev] "Cannot select" error in 2.9
>>>
>>> Can you reduce the test with bug-point ?  Does it work on ToT ?
>>
>> Hi Nadav
>>
>> I'm not sure what those are -- can you clarify?
>>
>
> OK bugpoint was simple enough to figure out -- it tells me
>
>
> bugpoint: test.ll:2:12: error: invalid operand type for instruction
>
>    %1 = add double %f0, %f1
>
>
> That doesn't make a lot of sense to me -- LLVM can't add doubles?

No, LLVM can't, but it can fadd them. ;) "add" only accepts integers and 
vectors of integers, "fadd" accepts floats and vectors of floats. See 
their entries in the language reference:

   add: http://llvm.org/docs/LangRef.html#i_add
   fadd: http://llvm.org/docs/LangRef.html#i_fadd

The split is intended to let us add additional properties to integer 
adds (like the nuw/nsw bits documented) that don't apply to floats, and 
properties to floats (rounding modes) that don't apply to ints.

Nick

  For
> completeness, the original assembly dump:
>
> define double @0(double %f0, double %f1, double %f2, double %f3, double %f4,
> double %f5, double %f6, double %f7, double %f8, double %f9) {
>    %1 = add double %f0, %f1
>    %2 = add double %1, %f2
>    %3 = add double %2, %f3
>    %4 = add double %3, %f4
>    %5 = add double %4, %f5
>    %6 = add double %5, %f6
>    %7 = add double %6, %f7
>    %8 = add double %7, %f8
>    %9 = add double %8, %f9
>    ret double %9
> }
>
>
> Thanks
> Greg
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>




More information about the llvm-dev mailing list