From 432c310bf6cec3441f2993124044011f1f3fb436 Mon Sep 17 00:00:00 2001 From: wchen37 Date: Thu, 1 Nov 2018 15:24:48 -0700 Subject: [PATCH] Fix emasks on moves for indirect 64b instructions in HWConformity Change-Id: I8e77b5f77b7693267de79808ea997abe7dce26da --- visa/HWConformity.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/visa/HWConformity.cpp b/visa/HWConformity.cpp index e18a3def99f0..9452a869ce8d 100644 --- a/visa/HWConformity.cpp +++ b/visa/HWConformity.cpp @@ -3167,6 +3167,15 @@ void HWConformity::fix64bInst( INST_LIST_ITER iter, G4_BB* bb ) movInst->setSrc(srcAsUD, 0); movInst->setExecSize(inst->getExecSize() * 2); + // NoMask is set on the mov instruction, but if we fall outside of the new execution size, + // it won't be executed fully + // e.g., we have to change + // (W) mov (16|M24) r[a0.0,64]<1>:ud r67.0<8;8,1>:ud + // into + // (W) mov (16|M0) r[a0.0,64]<1>:ud r67.0<8;8,1>:ud + movInst->setMaskOption(InstOpt_M0); + + // mov saturate/pred to the original inst movInst->setOptionOn(InstOpt_WriteEnable); if (movInst->getSaturate())