[LLVMdev] GCCBuiltin and Intrinsic Mapping

Eli Friedman eli.friedman at gmail.com
Mon Sep 13 10:24:35 PDT 2010


On Mon, Sep 13, 2010 at 8:27 AM, David A. Greene <dag at cray.com> wrote:
> Eli Friedman <eli.friedman at gmail.com> writes:
>
>> int_x86_avx_vhadd_pd_xmm doesn't exist on trunk.  Why does it exist on
>> your branch if the semantics are exactly equivalent to
>> int_x86_sse3_hadd_pd?  The register allocator can handle converting to
>> three-address form if the target provides the appropriate hooks.
>
> Because in some cases users may want to explicitly use non-VEX encoded
> instructions.  So we need to differentiate.

Can you give an example of such a scenario?

In answer to your original question, it's probably just a matter of
messing with the relevant generator in TableGen, relatively
straightforward.  Your syntax is probably insufficient, though: how
will the table generator decide which intrinsic to use for
__builtin_ia32_haddpd coming from a frontend?

-Eli




More information about the llvm-dev mailing list