[llvm-dev] RFC: Complex in LLVM
David Greene via llvm-dev
llvm-dev at lists.llvm.org
Tue Jul 2 08:57:47 PDT 2019
Tim Northover <t.p.northover at gmail.com> writes:
> On Mon, 1 Jul 2019 at 19:56, David Greene via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
>> llvm.creal.* - Overloaded intrinsic to extract the real part of a
>> complex value
>> declare float @llvm.creal.c32(c32 %Val)
>> declare double @llvm.creal.c64(c64 %Val)
>
> What are your plans for the reverse? I assume we don't want the only
> way to materialize a complex to be via memory so an insertvalue
> equivalent (or maybe using insertvalue/extractvalue directly?) and a
> literal value would probably be useful.
Good points. Originally I put the creal/cimag intrinsics in the
proposal when the layout of the complex type was left unspecified.
After internal feedback, I changed it to an explicitly-specified layout
(real followed by imaginary). Maybe creal/cimag should go away. Then
we wouldn't have to teach the optimizer about them and it already
understands insertvalue/extractvalue. Of course it might have to be
taught about insertvalue/extractvalue on a complex type anyway. So I
dunno, is there a strong preference one way or the other?
-David
More information about the llvm-dev
mailing list