[Mesa-dev] [PATCH] intel/compiler: Set swizzle to BRW_SWIZZLE_XXXX for scalar region
Sagar Ghuge
sagar.ghuge at intel.com
Wed Oct 24 07:27:10 UTC 2018
For 3 source operand instruction with access mode align16, channel
select does not apply when RepCtrl is enabled, So setting it to
BRW_SWIZZLE_XXXX seems more appropriate choice.
Signed-off-by: Sagar Ghuge <sagar.ghuge at intel.com>
---
src/intel/compiler/brw_eu_emit.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/src/intel/compiler/brw_eu_emit.c b/src/intel/compiler/brw_eu_emit.c
index 4630b83b1a..4550ff9a7c 100644
--- a/src/intel/compiler/brw_eu_emit.c
+++ b/src/intel/compiler/brw_eu_emit.c
@@ -833,7 +833,15 @@ brw_inst *brw_##OP(struct brw_codegen *p, \
struct brw_reg src0, \
struct brw_reg src1, \
struct brw_reg src2) \
-{ \
+{ \
+ if (p->current->access_mode == BRW_ALIGN_16) { \
+ if (has_scalar_region(src0)) \
+ src0.swizzle = BRW_SWIZZLE_XXXX; \
+ if (has_scalar_region(src1)) \
+ src1.swizzle = BRW_SWIZZLE_XXXX; \
+ if (has_scalar_region(src2)) \
+ src2.swizzle = BRW_SWIZZLE_XXXX; \
+ } \
return brw_alu3(p, BRW_OPCODE_##OP, dest, src0, src1, src2); \
}
@@ -854,6 +862,15 @@ brw_inst *brw_##OP(struct brw_codegen *p, \
assert(src0.type == BRW_REGISTER_TYPE_DF); \
assert(src1.type == BRW_REGISTER_TYPE_DF); \
assert(src2.type == BRW_REGISTER_TYPE_DF); \
+ } \
+ \
+ if (p->current->access_mode == BRW_ALIGN_16) { \
+ if (has_scalar_region(src0)) \
+ src0.swizzle = BRW_SWIZZLE_XXXX; \
+ if (has_scalar_region(src1)) \
+ src1.swizzle = BRW_SWIZZLE_XXXX; \
+ if (has_scalar_region(src2)) \
+ src2.swizzle = BRW_SWIZZLE_XXXX; \
} \
return brw_alu3(p, BRW_OPCODE_##OP, dest, src0, src1, src2); \
}
--
2.17.1
More information about the mesa-dev
mailing list