From cfa21656420c52a8c99e146314675f691e277c42 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Fri, 30 Jan 2015 15:13:48 -0800 Subject: [PATCH] i965/vec4: Use abs/negate functions in const propagation. No changes in shader-db. Reviewed-by: Jason Ekstrand --- .../dri/i965/brw_vec4_copy_propagation.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp index e25c9953c1c..638d99a4c92 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp @@ -114,23 +114,15 @@ try_constant_propagate(struct brw_context *brw, vec4_instruction *inst, return false; if (inst->src[arg].abs) { - if (value.type == BRW_REGISTER_TYPE_F) { - value.fixed_hw_reg.dw1.f = fabs(value.fixed_hw_reg.dw1.f); - } else if (value.type == BRW_REGISTER_TYPE_VF) { - value.fixed_hw_reg.dw1.ud &= ~0x80808080; - } else if (value.type == BRW_REGISTER_TYPE_D) { - if (value.fixed_hw_reg.dw1.d < 0) - value.fixed_hw_reg.dw1.d = -value.fixed_hw_reg.dw1.d; + if (!brw_abs_immediate(value.type, &value.fixed_hw_reg)) { + return false; } } if (inst->src[arg].negate) { - if (value.type == BRW_REGISTER_TYPE_F) - value.fixed_hw_reg.dw1.f = -value.fixed_hw_reg.dw1.f; - else if (value.type == BRW_REGISTER_TYPE_VF) - value.fixed_hw_reg.dw1.ud ^= 0x80808080; - else - value.fixed_hw_reg.dw1.ud = -value.fixed_hw_reg.dw1.ud; + if (!brw_negate_immediate(value.type, &value.fixed_hw_reg)) { + return false; + } } if (value.type == BRW_REGISTER_TYPE_VF) -- 2.30.2