[LLVMdev] Help!!!!Help!!!! " LLVM ERROR: Cannot select:	0x9fc9680: i32 = fp32_to_fp16 0x9fc0750 [ID=16] "	problem!!!!!!!!!!!!!!!!!!
    yalong at multicorewareinc.com 
    yalong at multicorewareinc.com
       
    Thu Jul 10 09:44:43 PDT 2014
    
    
  
    
  
Hi Matt,    Thank you your replying. I try to use  @llvm.convert.to/from.fp16 intrinsics before, I also meet "LLVM ERROR: Cannot select:   fp32_to_fp16" problem, maybe these functions call fptrunc/fpext. Following is detail log:
LLVM ERROR: Cannot select: 0x9fc9680: i32 = fp32_to_fp16 0x9fc0750 [ID=16] 
0x9fc0750: f32,ch = load 0x3aafd68, 0x9fc2a20, 0x9feaab0<LD4[%sunkaddr85033]> [ORD=125117] [ID=15] 
0x9fc2a20: i32 = add 0x9fed880, 0x9fd9ea0 [ORD=125115] [ID=13] 
0x9fed880: i32,ch = CopyFromReg 0x3aafd68, 0x9fbea90 [ORD=125114] [ID=9] 
0x9fbea90: i32 = Register %vreg13999 [ORD=125114] [ID=1] 
0x9fd9ea0: i32 = Constant<80> [ORD=125115] [ID=2] 
0x9feaab0: i32 = undef [ORD=125117] [ID=4] 
In function: internal_function_69 
Command exited with non-zero status 1
yalong at multicorewareinc.com
 From: Matt ArsenaultDate: 2014-07-09 12:51To: yalong at multicorewareinc.com; Kevin QinCC: llvmdevSubject: Re: [LLVMdev] Help!!!!Help!!!! " LLVM ERROR: Cannot select: 0x9fc9680: i32 = fp32_to_fp16 0x9fc0750 [ID=16] " problem!!!!!!!!!!!!!!!!!!
  
    
  
  
    On 07/09/2014 12:41 PM, Matt Arsenault
      wrote:
    
    
      
      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
    
    
    Have you tried using the @llvm.convert.to/from.fp16 intrinsics
    instead?
  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140710/dd105a5f/attachment.html>
    
    
More information about the llvm-dev
mailing list