[llvm] r212638 - AArch64: Better codegen for storing to __fp16.
Jim Grosbach
grosbach at apple.com
Thu Jul 10 09:42:12 PDT 2014
> On Jul 10, 2014, at 2:09 AM, Tim Northover <t.p.northover at gmail.com> wrote:
>
> Hi Jim,
>
>> This also eliminates an extra step in the convert-from-f64 path
>> which was first converting to f32 and then to f16 from there.
>
> Is that allowed in strict IEEE? We're not allowed to form FMAs
> willy-nilly even though they're guaranteed more precise, for example.
> I'd have said the original double-conversion issue needed fixing in
> Clang.
Sort-of. It’s not wrong to go through float, but doing so does require care about rounding (which we weren’t doing). clang itself is introducing the double->float->half path due to the desire to use f32_to_f16 intrinsics rather than fround. That’s mainly required at all to work around horribleness in the backend legalization for targets that want half as an interchange-only format. I wouldn’t object to adding f64<—>f16 intrinsics, though I’d really rather we fix the backend to not require such things at all. That, however, is a potentially very large task.
-Jim
More information about the llvm-commits
mailing list