mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 11:38:05 +02:00
nvc0: recognize r63 as zero in constant folding
This commit is contained in:
parent
bf1df06773
commit
419ff10b0e
3 changed files with 9 additions and 13 deletions
|
|
@ -103,6 +103,12 @@ nvc0_pc_replace_value(struct nv_pc *pc,
|
|||
return n;
|
||||
}
|
||||
|
||||
static INLINE boolean
|
||||
is_gpr63(struct nv_value *val)
|
||||
{
|
||||
return (val->reg.file == NV_FILE_GPR && val->reg.id == 63);
|
||||
}
|
||||
|
||||
struct nv_value *
|
||||
nvc0_pc_find_constant(struct nv_ref *ref)
|
||||
{
|
||||
|
|
@ -116,7 +122,7 @@ nvc0_pc_find_constant(struct nv_ref *ref)
|
|||
assert(!src->insn->src[0]->mod);
|
||||
src = src->insn->src[0]->value;
|
||||
}
|
||||
if ((src->reg.file == NV_FILE_IMM) ||
|
||||
if ((src->reg.file == NV_FILE_IMM) || is_gpr63(src) ||
|
||||
(src->insn &&
|
||||
src->insn->opcode == NV_OP_LD &&
|
||||
src->insn->src[0]->value->reg.file >= NV_FILE_MEM_C(0) &&
|
||||
|
|
@ -130,7 +136,7 @@ nvc0_pc_find_immediate(struct nv_ref *ref)
|
|||
{
|
||||
struct nv_value *src = nvc0_pc_find_constant(ref);
|
||||
|
||||
return (src && src->reg.file == NV_FILE_IMM) ? src : NULL;
|
||||
return (src && (src->reg.file == NV_FILE_IMM || is_gpr63(src))) ? src : NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -310,7 +310,7 @@ struct nv_reg {
|
|||
int32_t s32;
|
||||
int64_t s64;
|
||||
uint64_t u64;
|
||||
uint32_t u32;
|
||||
uint32_t u32; /* expected to be 0 for $r63 */
|
||||
float f32;
|
||||
double f64;
|
||||
} imm;
|
||||
|
|
|
|||
|
|
@ -1388,16 +1388,6 @@ emit_tex(struct bld_context *bld, uint opcode, int tic, int tsc,
|
|||
return nvi;
|
||||
}
|
||||
|
||||
/*
|
||||
static boolean
|
||||
bld_is_constant(struct nv_value *val)
|
||||
{
|
||||
if (val->reg.file == NV_FILE_IMM)
|
||||
return TRUE;
|
||||
return val->insn && nvCG_find_constant(val->insn->src[0]);
|
||||
}
|
||||
*/
|
||||
|
||||
static void
|
||||
bld_tex(struct bld_context *bld, struct nv_value *dst0[4],
|
||||
const struct tgsi_full_instruction *insn)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue