ac/nir: implement 64-bit packing and unpacking
authorConnor Abbott <cwabbott0@gmail.com>
Wed, 7 Jun 2017 21:16:31 +0000 (14:16 -0700)
committerConnor Abbott <cwabbott0@gmail.com>
Mon, 3 Jul 2017 18:58:58 +0000 (11:58 -0700)
commit7168425dd77f37fa048de5a4639619763556c331
treecb904e94d04683812d7afc1f9ec4f8e7369826a2
parent196e6b60b1e392c5e55c07a9f9b4e85dad52fb66
ac/nir: implement 64-bit packing and unpacking

We implement the split opcodes, and tell NIR to lower the original ones.
The lowering to LLVM is a little more complicated, but NIR can optimize
the split ones a little better, and some NIR lowering passes that we
might want to use (particularly for doubles) emit the split ones.

This should fix pack/unpackDouble2x32, which seems like a bug since when
we enabled the Float64 capability. It will also fix pack/unpackInt2x32
when we enable the Int64 capability.

Fixes: 798ae37c ("radv: Enable Float64 support.")
Signed-off-by: Connor Abbott <cwabbott0@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/common/ac_nir_to_llvm.c
src/amd/vulkan/radv_pipeline.c