[LLVMdev] Help!!!!Help!!!! " LLVM ERROR: Cannot select: 0x9fc9680: i32 = fp32_to_fp16 0x9fc0750 [ID=16] " problem!!!!!!!!!!!!!!!!!!

Matt Arsenault Matthew.Arsenault at amd.com
Wed Jul 9 12:41:02 PDT 2014


On 07/09/2014 03:30 PM, yalong at multicorewareinc.com wrote:
>     Thank you Kevin!!!
>     If I use fptrunc and bitcast realise NEON vcvtt ( I can sure, 
> "fptrunc  double %tmp to float" is right, but "fptrunc float %tmp to 
> half" is wrong). My target platform is MIPS.  The command as following:
>
> NEON:
> vcvtt.f16.f32 s2, s0
>
> llvm Code:
>
> %Vt_2 = load float* %VFP_s0, align 4
> %Vt3_1 = fptrunc float %Vt_2 to half
> %Vt4_1 = bitcast half %Vt3_1 to i16
> %Vt2_2 = bitcast float* %VFP_s2 to <2 x i16>*
> %Vrti_1 = load <2 x i16>* %Vt2_2, align 4
> %Vrti_2 = insertelement <2 x i16> %Vrti_1, i16 %Vt4_1, i32 1
> %Vt2_3 = bitcast float* %VFP_s2 to <2 x i16>*
> store <2 x i16> %Vrti_2, <2 x i16>* %Vt2_3, align 4
>
> Error Log:
> LLVM ERROR: Cannot select: 0x9f554b0: ch = store 0x9d0f28c, 0x9f5d900, 
> 0x9f54ba8, 0x9f54b20<ST2[FixedStack0](align=4), trunc to f16> [ID=52]
> 0x9f5d900: f32,ch = load 0x9f5e290, 0x9f5dd40, 
> 0x9f54b20<LD4[%sunkaddr69]> [ORD=1810] [ID=51]
> 0x9f5dd40: i32 = add 0x9f55318, 0x9f5e0f8 [ORD=1808] [ID=31]
> 0x9f55318: i32,ch = CopyFromReg 0x9d0f28c, 0x9f6a3a0 [ORD=1796] [ID=26]
> 0x9f6a3a0: i32 = Register %vreg32 [ORD=1796] [ID=1]
> 0x9f5e0f8: i32 = Constant<64> [ORD=1808] [ID=17]
> 0x9f54b20: i32 = undef [ORD=1797] [ID=6]
> 0x9f54ba8: i32 = FrameIndex<0> [ID=24]
> 0x9f54b20: i32 = undef [ORD=1797] [ID=6]
> In function: testVCVTT32TO16Function
>
>

I think that support for the half type is only implemented for ARM. Last 
I tried to use it, I found that none of it works even on x86, and the 
current handling of the half conversion SDNodes seem to rely on ARM 
specific assumptions
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140709/e205111c/attachment.html>


More information about the llvm-dev mailing list