nak/sm20: Call copy_alu_src_if_fabs() first
Since an FAbs or FNegAbs modifier is going to force the source out to a register no matter what, we should do this first. That way we avoid the unnecessary source swaps or other evictions when we have to evict the source anyway because it has a modifier. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34675>
This commit is contained in:
committed by
Marge Bot
parent
c26273109f
commit
ca296bf0a9
@@ -585,11 +585,11 @@ impl SM20Op for OpFFma {
|
||||
fn legalize(&mut self, b: &mut LegalizeBuilder) {
|
||||
use RegFile::GPR;
|
||||
let [src0, src1, src2] = &mut self.srcs;
|
||||
swap_srcs_if_not_reg(src0, src1, GPR);
|
||||
b.copy_alu_src_if_not_reg(src0, GPR, SrcType::F32);
|
||||
b.copy_alu_src_if_fabs(src0, GPR, SrcType::F32);
|
||||
b.copy_alu_src_if_fabs(src1, GPR, SrcType::F32);
|
||||
b.copy_alu_src_if_fabs(src2, GPR, SrcType::F32);
|
||||
swap_srcs_if_not_reg(src0, src1, GPR);
|
||||
b.copy_alu_src_if_not_reg(src0, GPR, SrcType::F32);
|
||||
if src1.as_imm_not_f20().is_some()
|
||||
&& (self.saturate
|
||||
|| self.rnd_mode != FRndMode::NearestEven
|
||||
@@ -680,10 +680,10 @@ impl SM20Op for OpFMul {
|
||||
fn legalize(&mut self, b: &mut LegalizeBuilder) {
|
||||
use RegFile::GPR;
|
||||
let [src0, src1] = &mut self.srcs;
|
||||
swap_srcs_if_not_reg(src0, src1, GPR);
|
||||
b.copy_alu_src_if_not_reg(src0, GPR, SrcType::F32);
|
||||
b.copy_alu_src_if_fabs(src0, GPR, SrcType::F32);
|
||||
b.copy_alu_src_if_fabs(src1, GPR, SrcType::F32);
|
||||
swap_srcs_if_not_reg(src0, src1, GPR);
|
||||
b.copy_alu_src_if_not_reg(src0, GPR, SrcType::F32);
|
||||
if src1.as_imm_not_f20().is_some()
|
||||
&& self.rnd_mode != FRndMode::NearestEven
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user