diff options
Diffstat (limited to 'src/gallium/auxiliary/gallivm/lp_bld_tgsi_aos.c')
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_tgsi_aos.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_aos.c index 41ba1f93f02..55451e4bcb2 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_aos.c @@ -492,7 +492,8 @@ lp_emit_instruction_aos( case TGSI_OPCODE_RSQ: /* TGSI_OPCODE_RECIPSQRT */ src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, CHAN_ALL); - tmp0 = lp_build_abs(&bld->bld_base.base, src0); + tmp0 = lp_build_emit_llvm_unary(&bld->bld_base, TGSI_OPCODE_ABS, + LLVMTypeOf(src0), src0); dst0 = lp_build_rsqrt(&bld->bld_base.base, tmp0); break; @@ -636,11 +637,6 @@ lp_emit_instruction_aos( case TGSI_OPCODE_XPD: return FALSE; - case TGSI_OPCODE_ABS: - src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, CHAN_ALL); - dst0 = lp_build_abs(&bld->bld_base.base, src0); - break; - case TGSI_OPCODE_RCC: /* deprecated? */ assert(0); @@ -964,7 +960,11 @@ lp_emit_instruction_aos( break; default: - return FALSE; + dst0 = lp_build_tgsi_inst_llvm_aos(&bld->bld_base, inst); + if (!dst0) { + return FALSE; + } + break; } if (info->num_dst) { @@ -1015,6 +1015,9 @@ lp_build_tgsi_aos(struct gallivm_state *gallivm, bld.bld_base.emit_fetch_funcs[TGSI_FILE_INPUT] = emit_fetch_input; bld.bld_base.emit_fetch_funcs[TGSI_FILE_TEMPORARY] = emit_fetch_temporary; + /* Set opcode actions */ + lp_set_default_actions(&bld.bld_base); + if (!lp_bld_tgsi_list_init(&bld.inst_list)) { return; } |