summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2015-01-30 15:13:48 -0800
committerMatt Turner <[email protected]>2015-02-03 12:25:14 -0800
commitcfa21656420c52a8c99e146314675f691e277c42 (patch)
tree5c3e273060e67500d78ec8ecfdcac4fd7b7156fe /src/mesa
parentdbd4c22a37b3605dd51833f3ecf69679b52b7bde (diff)
i965/vec4: Use abs/negate functions in const propagation.
No changes in shader-db. Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp18
1 files 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)