Mesa (master): i965: Don' t treat IF or WHILE with cmod as writing the flag.
Matt Turner
mattst88 at kemper.freedesktop.org
Tue Dec 2 00:44:38 UTC 2014
Module: Mesa
Branch: master
Commit: f1e5418f402c7ac087b1c127cb4476d0d02e0073
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1e5418f402c7ac087b1c127cb4476d0d02e0073
Author: Matt Turner <mattst88 at gmail.com>
Date: Tue Nov 11 15:56:58 2014 -0800
i965: Don't treat IF or WHILE with cmod as writing the flag.
Sandybridge's IF and WHILE instructions can do an embedded comparison
with conditional mod.
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
---
src/mesa/drivers/dri/i965/brw_fs.cpp | 4 +++-
src/mesa/drivers/dri/i965/brw_vec4.h | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 028eff2..37015ec 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -933,7 +933,9 @@ fs_inst::reads_flag() const
bool
fs_inst::writes_flag() const
{
- return (conditional_mod && opcode != BRW_OPCODE_SEL) ||
+ return (conditional_mod && (opcode != BRW_OPCODE_SEL &&
+ opcode != BRW_OPCODE_IF &&
+ opcode != BRW_OPCODE_WHILE)) ||
opcode == FS_OPCODE_MOV_DISPATCH_TO_FLAGS;
}
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h
index 7d814ca..abdab99 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.h
+++ b/src/mesa/drivers/dri/i965/brw_vec4.h
@@ -234,7 +234,9 @@ public:
bool writes_flag()
{
- return conditional_mod && opcode != BRW_OPCODE_SEL;
+ return (conditional_mod && (opcode != BRW_OPCODE_SEL &&
+ opcode != BRW_OPCODE_IF &&
+ opcode != BRW_OPCODE_WHILE));
}
};
More information about the mesa-commit
mailing list