[PATCH] Add support to promote f16 to f32

Ahmed Bougacha ahmed.bougacha at gmail.com
Wed Apr 1 11:22:23 PDT 2015


On Wed, Apr 1, 2015 at 10:59 AM, Pirama Arumuga Nainar
<pirama at google.com> wrote:
>
>
> On Wed, Apr 1, 2015 at 10:35 AM, Ahmed Bougacha <ahmed.bougacha at gmail.com>
> wrote:
>>
>> Awesome, I wanted to do this next, thanks for working on this =)
>>
>> I'll look into this closer, but a couple of very high level
>> not-really-questions first:
>>
>> - what about other types?  I just removed the generic f32->f64 promotion a
>> few days ago (in anticipation for such a PromoteFloat legalizer).  I'm not
>> sure we can test that in-tree, so there's probably not much point in
>> worrying about this.
>
>
> I've tried to keep promotion as generic as possible.  As long as the
> PromoteFloat typeaction is set and TransformToType is set correctly, it
> should be able to handle f32->f64.  I haven't tested it though.
>
>> - might I ask: what's your use case?  In particular, do you intend to
>> change clang in any way?
>
>
> I am not planning to change Clang.  The use case is to handle bitcode with
> Clang run with NativeHalfType and HalfArgsAndReturns arguments enabled, but
> the target/backend doesn't have support for f16.

Alright, then why a command-line option anyway?  On any IR with half,
but targeting platforms without it, we'll just crash.  For the few
nodes where we don't (load/store), we soften to i16 here as well, so
there should be no difference.

Why not just always promote when f16 isn't legal but f32 is?

-Ahmed

>>
>>
>> In the meantime, you might be interested in http://reviews.llvm.org/D8648
>> for tests, as I tried to cover as many IR/generic ISD opcodes as possible.
>> The patch itself just focuses on ops promotion on AArch64 (where half is
>> legal).
>
>
> I did peek into your patch when I wrote my tests :)  I'll refer to them when
> I write target-specific tests.
>>
>>
>> -Ahmed
>>
>>
>> http://reviews.llvm.org/D8755
>>
>> EMAIL PREFERENCES
>>   http://reviews.llvm.org/settings/panel/emailpreferences/
>>
>>
>



More information about the llvm-commits mailing list