File tree Expand file tree Collapse file tree 1 file changed +17
-0
lines changed Expand file tree Collapse file tree 1 file changed +17
-0
lines changed Original file line number Diff line number Diff line change @@ -7079,6 +7079,19 @@ bool G4_INST::isSupportedAccDstType() const {
7079
7079
// -- contiguous regions
7080
7080
// -- simd8 for D/UD, simd8/16 for F, simd16 for HF/W, other types not allowed
7081
7081
bool G4_INST::canDstBeAcc () const {
7082
+
7083
+ auto cross2GRFDst = [this ](G4_DstRegRegion *dst) {
7084
+ if (dst->isNullReg () || dst->isIndirect ()) { // No acc
7085
+ return true ;
7086
+ }
7087
+ if (dst->getSubRegOff () * dst->getTypeSize () + dst->getLinearizedEnd () -
7088
+ dst->getLinearizedStart () + 1 >
7089
+ (getBuilder ().numEltPerGRF <Type_UB>() * 2u )) {
7090
+ return true ;
7091
+ }
7092
+ return false ;
7093
+ };
7094
+
7082
7095
if (isSend () || isDpas ()) {
7083
7096
return false ;
7084
7097
}
@@ -7103,6 +7116,10 @@ bool G4_INST::canDstBeAcc() const {
7103
7116
return false ;
7104
7117
}
7105
7118
7119
+ if (cross2GRFDst (dst)) {
7120
+ return false ;
7121
+ }
7122
+
7106
7123
// src0 may not have indirect regioning
7107
7124
if (!builder.accDstforIndirectSrc () && getSrc (0 ) &&
7108
7125
getSrc (0 )->isSrcRegRegion ()) {
You can’t perform that action at this time.
0 commit comments