Skip to content

Commit 0a70d2e

Browse files
weiyu-chensys_zuul
authored andcommitted
Fix a bug for A64 block store with byte source operand.
Change-Id: I73b8f4eb59ceb5c4ad987020a28deac186f14e45
1 parent 26a6505 commit 0a70d2e

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

visa/VisaToG4/TranslateSendLdStLegacy.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2770,19 +2770,18 @@ int IR_Builder::translateVISASVMBlockWriteInst(
27702770
sources[len].instOpt = InstOpt_WriteEnable;
27712771
++len;
27722772

2773+
if (src->getElemSize() < getTypeSize(Type_UD))
2774+
{
2775+
// use D for size computation. Src is guaranteed to be GRF-aligend per vISA spec
2776+
src->setType(Type_UD);
2777+
}
27732778
sources[len].opnd = src;
27742779

27752780
uint32_t movExecSize = 0;
27762781

27772782
auto scale = getGRFSize() / src->getElemSize();
27782783
switch (src->getElemSize())
27792784
{
2780-
case 1:
2781-
case 2:
2782-
scale = getGRFSize() / G4_Type_Table[Type_UW].byteSize;
2783-
sources[len].execSize = scale * srcNumGRF;
2784-
movExecSize = scale;
2785-
break;
27862785
case 4:
27872786
sources[len].execSize = scale * srcNumGRF;
27882787
movExecSize = scale;

0 commit comments

Comments
 (0)