gallivm: add PK2H/UP2H support

Add support for these opcodes, the conversion functions were already
there albeit need some new packing stuff.
Just like the tgsi version, piglit won't like it for all the same
reasons, so it's disabled (UP2H passes piglit arb_shader_language_packing
tests, albeit since PK2H won't due to those rounding differences I don't
know if that one works or not as the piglit test is rather difficult to
deal with).

Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Roland Scheidegger 2016-02-02 03:51:22 +01:00
parent 5171ec9ca9
commit 7221b8aec6
2 changed files with 9 additions and 7 deletions

View File

@ -273,7 +273,7 @@ lp_build_uninterleave1(struct gallivm_state *gallivm,
unsigned i;
assert(num_elems <= LP_MAX_VECTOR_LENGTH);
for(i = 0; i < num_elems / 2; ++i)
for (i = 0; i < num_elems / 2; ++i)
elems[i] = lp_build_const_int32(gallivm, 2*i + lo_hi);
shuffle = LLVMConstVector(elems, num_elems / 2);

View File

@ -548,9 +548,10 @@ pk2h_fetch_args(
}
static void
pk2h_emit(const struct lp_build_tgsi_action *action,
struct lp_build_tgsi_context *bld_base,
struct lp_build_emit_data *emit_data)
pk2h_emit(
const struct lp_build_tgsi_action *action,
struct lp_build_tgsi_context *bld_base,
struct lp_build_emit_data *emit_data)
{
struct gallivm_state *gallivm = bld_base->base.gallivm;
struct lp_type f16i_t;
@ -575,9 +576,10 @@ static struct lp_build_tgsi_action pk2h_action = {
/* TGSI_OPCODE_UP2H */
static void
up2h_emit(const struct lp_build_tgsi_action *action,
struct lp_build_tgsi_context *bld_base,
struct lp_build_emit_data *emit_data)
up2h_emit(
const struct lp_build_tgsi_action *action,
struct lp_build_tgsi_context *bld_base,
struct lp_build_emit_data *emit_data)
{
struct gallivm_state *gallivm = bld_base->base.gallivm;
LLVMBuilderRef builder = gallivm->builder;