[Mesa-dev,01/10] gallivm: supply correct opcode info to emit functions

Submitted by Marek Olšák on Oct. 11, 2015, 10:55 p.m.

Details

Message ID CAAxE2A7=-8NosdGN9QN3jX+Gk7tiohcAPfV8mfNTguOKYju4nw@mail.gmail.com
State New
Headers show

Not browsing as part of any series.

Commit Message

Marek Olšák Oct. 11, 2015, 10:55 p.m.
On Sun, Oct 11, 2015 at 11:15 PM, Roland Scheidegger <sroland@vmware.com> wrote:
> So why do you need to set the info back after action->emit? If you want
> to set that always so that information can be used, looks fine to me.
> But if you have to set it back afterwards that screams hack (and I see
> no reason for such a hack as you could easily avoid it by just using
> different emit actions).

A reworked patch is attached, fixing the callers instead of the callee.

Marek

Patch hide | download patch | download mbox

From fe013a4b7a3589ec0b2e75bb49f6e04fb817057a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= <marek.olsak@amd.com>
Date: Sat, 10 Oct 2015 21:24:28 +0200
Subject: [PATCH] gallivm: set correct opcode info from unary/binary/ternary
 emits

and clear the emit_data structure.

The new radeonsi min/max opcode implementation requires this.
---
 src/gallium/auxiliary/gallivm/lp_bld_tgsi.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c
index c4ae304..c88dfbf 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c
@@ -129,7 +129,8 @@  lp_build_emit_llvm_unary(
    unsigned tgsi_opcode,
    LLVMValueRef arg0)
 {
-   struct lp_build_emit_data emit_data;
+   struct lp_build_emit_data emit_data = {{0}};
+   emit_data.info = tgsi_get_opcode_info(tgsi_opcode);
    emit_data.arg_count = 1;
    emit_data.args[0] = arg0;
    return lp_build_emit_llvm(bld_base, tgsi_opcode, &emit_data);
@@ -142,7 +143,8 @@  lp_build_emit_llvm_binary(
    LLVMValueRef arg0,
    LLVMValueRef arg1)
 {
-   struct lp_build_emit_data emit_data;
+   struct lp_build_emit_data emit_data = {{0}};
+   emit_data.info = tgsi_get_opcode_info(tgsi_opcode);
    emit_data.arg_count = 2;
    emit_data.args[0] = arg0;
    emit_data.args[1] = arg1;
@@ -157,7 +159,8 @@  lp_build_emit_llvm_ternary(
    LLVMValueRef arg1,
    LLVMValueRef arg2)
 {
-   struct lp_build_emit_data emit_data;
+   struct lp_build_emit_data emit_data = {{0}};
+   emit_data.info = tgsi_get_opcode_info(tgsi_opcode);
    emit_data.arg_count = 3;
    emit_data.args[0] = arg0;
    emit_data.args[1] = arg1;
-- 
2.1.4


Comments

Am 12.10.2015 um 00:55 schrieb Marek Olšák:
> On Sun, Oct 11, 2015 at 11:15 PM, Roland Scheidegger <sroland@vmware.com> wrote:
>> So why do you need to set the info back after action->emit? If you want
>> to set that always so that information can be used, looks fine to me.
>> But if you have to set it back afterwards that screams hack (and I see
>> no reason for such a hack as you could easily avoid it by just using
>> different emit actions).
> 
> A reworked patch is attached, fixing the callers instead of the callee.
> 
> Marek
> 

Thanks, that looks much more reasonable now.

Roland