Mesa (master): intel/fs: roll the loop with the <0,1,0> additions in emit_scan()
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Sep 19 02:47:33 UTC 2019
Module: Mesa
Branch: master
Commit: cebf447d167b89f017382810d4ac1f43bca3c4d6
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cebf447d167b89f017382810d4ac1f43bca3c4d6
Author: Paulo Zanoni <paulo.r.zanoni at intel.com>
Date: Fri Aug 23 17:15:27 2019 -0700
intel/fs: roll the loop with the <0,1,0> additions in emit_scan()
IMHO the code is easier to understand this way, being explicit that
we're doing exactly the same thing every time.
No functional changes.
v2: Adjust the loop breaking condition (Jason).
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
---
src/intel/compiler/brw_fs_builder.h | 46 +++++++++++--------------------------
1 file changed, 14 insertions(+), 32 deletions(-)
diff --git a/src/intel/compiler/brw_fs_builder.h b/src/intel/compiler/brw_fs_builder.h
index 1000d956d6f..54f5bd16892 100644
--- a/src/intel/compiler/brw_fs_builder.h
+++ b/src/intel/compiler/brw_fs_builder.h
@@ -503,48 +503,30 @@ namespace brw {
}
}
- if (cluster_size > 4) {
- const fs_builder ubld = exec_all().group(4, 0);
- src_reg left = component(tmp, 3);
- dst_reg right = horiz_offset(tmp, 4);
+ for (unsigned i = 4;
+ i < MIN2(cluster_size, dispatch_width());
+ i *= 2) {
+ const fs_builder ubld = exec_all().group(i, 0);
+ src_reg left = component(tmp, i - 1);
+ dst_reg right = horiz_offset(tmp, i);
set_condmod(mod, ubld.emit(opcode, right, left, right));
- if (dispatch_width() > 8) {
- left = component(tmp, 8 + 3);
- right = horiz_offset(tmp, 8 + 4);
+ if (dispatch_width() > i * 2) {
+ left = component(tmp, i * 3 - 1);
+ right = horiz_offset(tmp, i * 3);
set_condmod(mod, ubld.emit(opcode, right, left, right));
}
- if (dispatch_width() > 16) {
- left = component(tmp, 16 + 3);
- right = horiz_offset(tmp, 16 + 4);
+ if (dispatch_width() > i * 4) {
+ left = component(tmp, i * 5 - 1);
+ right = horiz_offset(tmp, i * 5);
set_condmod(mod, ubld.emit(opcode, right, left, right));
- left = component(tmp, 24 + 3);
- right = horiz_offset(tmp, 24 + 4);
+ left = component(tmp, i * 7 - 1);
+ right = horiz_offset(tmp, i * 7);
set_condmod(mod, ubld.emit(opcode, right, left, right));
}
}
-
- if (cluster_size > 8 && dispatch_width() > 8) {
- const fs_builder ubld = exec_all().group(8, 0);
- src_reg left = component(tmp, 7);
- dst_reg right = horiz_offset(tmp, 8);
- set_condmod(mod, ubld.emit(opcode, right, left, right));
-
- if (dispatch_width() > 16) {
- left = component(tmp, 16 + 7);
- right = horiz_offset(tmp, 16 + 8);
- set_condmod(mod, ubld.emit(opcode, right, left, right));
- }
- }
-
- if (cluster_size > 16 && dispatch_width() > 16) {
- const fs_builder ubld = exec_all().group(16, 0);
- src_reg left = component(tmp, 15);
- dst_reg right = horiz_offset(tmp, 16);
- set_condmod(mod, ubld.emit(opcode, right, left, right));
- }
}
/**
More information about the mesa-commit
mailing list