Mesa (master): nir/spirv/cfg: Detect switch_break after loop_break/ continue
Jason Ekstrand
jekstrand at kemper.freedesktop.org
Sat Oct 1 23:00:05 UTC 2016
Module: Mesa
Branch: master
Commit: ef3c5ac7fb915f489a553fa9d9a0c96d219545ad
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ef3c5ac7fb915f489a553fa9d9a0c96d219545ad
Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date: Fri Sep 16 22:04:57 2016 -0700
nir/spirv/cfg: Detect switch_break after loop_break/continue
While the current CFG code is valid in the case where a switch break also
happens to be a loop continue, it's a bit suboptimal. Since hardware is
capable of handling the continue as a direct jump, it's better to use a
continue instruction when we can than to bother with all of the nasty
switch break lowering.
Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
Cc: "12.0" <mesa-stable at lists.freedesktop.org>
---
src/compiler/spirv/vtn_cfg.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c
index 475454e..1c8c4f8 100644
--- a/src/compiler/spirv/vtn_cfg.c
+++ b/src/compiler/spirv/vtn_cfg.c
@@ -239,12 +239,12 @@ vtn_get_branch_type(struct vtn_block *block,
swcase->fallthrough == block->switch_case);
swcase->fallthrough = block->switch_case;
return vtn_branch_type_switch_fallthrough;
- } else if (block == switch_break) {
- return vtn_branch_type_switch_break;
} else if (block == loop_break) {
return vtn_branch_type_loop_break;
} else if (block == loop_cont) {
return vtn_branch_type_loop_continue;
+ } else if (block == switch_break) {
+ return vtn_branch_type_switch_break;
} else {
return vtn_branch_type_none;
}
More information about the mesa-commit
mailing list