[LLVMdev] half to float intrinsic promotion
kewuzhang
kewu.zhang at amd.com
Thu Feb 12 10:57:03 PST 2015
Thank you very much!
don’t know why I just overlooked the llvm_half_ty when I was reading the intrinsics.td
best
kevin
On Feb 12, 2015, at 1:31 PM, Ahmed Bougacha <ahmed.bougacha at gmail.com> wrote:
> On Thu, Feb 12, 2015 at 8:48 AM, kewuzhang <kewu.zhang at amd.com> wrote:
>>
>> Hi Guys,
>>
>> I am trying to promote half to float for my intrinsic math operations,
>> following class and pattern are defined.
>>
>> "
>> class S_HF__HF< string asmstr> : Intrinsic
>> <[llvm_float_ty ], [llvm_float_ty ],
>> [IntrNoMem],
>> !strconcat(asmstr, "_f16")>;
>>
>> def :Pat<( f16 (int_my_math_f16 f16:$src)), (F2Hsr (FEXTsr f16:$src) )>;
>>
>>
>> “
>> where FEXTsr is implementing the fextend type profile, F2Hsr is
>> implementing as the float to half conversion .
>> “int_my_math_f16” is implementing the “S_HF__HF” profile above.
>> I am just trying to
>> (1) convert the $src from f16 to f32 using FEXTsr.
>> (2) use the F2Hsr to convert the f32 back to f16.
>> for testing.
>> however, I always got the error
>> ”
>> Type inference contradiction found, merging 'f32' into 'f16'
>> def :Pat<( f16 (int_my_math_f16 f16:$src)), (F_2_F16sr (FEXTsr f16:$src) )>;
>>
>> “
>>
>>
>> Wondering what is the reason? I noticed that LLVM does not have the
>> intrinsic type “LLVM_f16_ty”, so I always use “LLVM_float_ty” for it as long
>> as it is a float or half.
>
> Hi Kevin,
>
> In "llvm_float_ty", "float" means f32 (as in the IR language
> reference, and as defined in include/llvm/IR/Intrinsics.td). So in
> your example, TableGen complains because you're feeding an f16 to an
> intrinsic declared as taking an f32.
>
> However, there's also "llvm_half_ty" in Intrinsics.td, corresponding
> to f16; why not use that instead?
>
> -Ahmed
>
>> best
>>
>> Kevin
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150212/4e7242eb/attachment.html>
More information about the llvm-dev
mailing list