Skip to content

Commit 0f62973

Browse files
weiyu-chensys_zuul
authored and
sys_zuul
committed
Clean up message descriptor generation for raw send so that it explicitly sets the SFID.
Change-Id: I27082ddcc02bf70617e812a6629065e6098550f8
1 parent e7f24a3 commit 0f62973

File tree

5 files changed

+10
-15
lines changed

5 files changed

+10
-15
lines changed

visa/BuildIR.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -1264,8 +1264,7 @@ class IR_Builder {
12641264
uint32_t extDesc,
12651265
SendAccess access,
12661266
G4_Operand* bti = nullptr,
1267-
G4_Operand* sti = nullptr,
1268-
bool isValidFuncCtrl = true);
1267+
G4_Operand* sti = nullptr);
12691268

12701269
G4_SendMsgDescriptor* createReadMsgDesc(
12711270
SFID sfid,

visa/BuildIRImpl.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,9 @@ G4_SendMsgDescriptor* IR_Builder::createGeneralMsgDesc(
122122
uint32_t extDesc,
123123
SendAccess access,
124124
G4_Operand* bti,
125-
G4_Operand* sti,
126-
bool isValidFuncCtrl)
125+
G4_Operand* sti)
127126
{
128-
return new (mem) G4_SendMsgDescriptor(desc, extDesc, access, bti, sti, isValidFuncCtrl);
127+
return new (mem) G4_SendMsgDescriptor(desc, extDesc, access, bti, sti);
129128
}
130129

131130
G4_SendMsgDescriptor* IR_Builder::createSendMsgDesc(
@@ -200,7 +199,7 @@ G4_SendMsgDescriptor* IR_Builder::createSampleMsgDesc(
200199
{
201200
extDesc |= 1 << CPS_LOD_COMPENSATION_ENABLE;
202201
}
203-
return new (mem) G4_SendMsgDescriptor(desc, extDesc, SendAccess::READ_ONLY, bti, sti, true);
202+
return new (mem) G4_SendMsgDescriptor(desc, extDesc, SendAccess::READ_ONLY, bti, sti);
204203
}
205204

206205
G4_Operand* IR_Builder::emitSampleIndexGE16(

visa/Gen4_IR.cpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -289,13 +289,11 @@ G4_SendMsgDescriptor::G4_SendMsgDescriptor(
289289
uint32_t descBits, uint32_t extDescBits,
290290
SendAccess access,
291291
G4_Operand *bti,
292-
G4_Operand *sti,
293-
bool isValidFuncCtrl)
294-
: accessType(access), m_sti(sti), m_bti(bti), funcCtrlValid(isValidFuncCtrl)
292+
G4_Operand *sti)
293+
: accessType(access), m_sti(sti), m_bti(bti), funcCtrlValid(true)
295294
{
296295
desc.value = descBits;
297296
extDesc.value = extDescBits;
298-
// SEE the note above about clearing ExDesc[10:6]
299297
src1Len = (extDescBits >> 6) & 0x1F; // [10:6]
300298
eotAfterMessage = extDesc.layout.eot; // [5]
301299
sfid = intToSFID(extDescBits & 0xF); // [3:0]

visa/Gen4_IR.hpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -304,9 +304,7 @@ class G4_SendMsgDescriptor
304304
/// Construct a object with descriptor and extended descriptor values.
305305
/// used in IR_Builder::createSendMsgDesc(uint32_t desc, uint32_t extDesc, SendAccess access)
306306
G4_SendMsgDescriptor(uint32_t desc, uint32_t extDesc, SendAccess access,
307-
G4_Operand* bti,
308-
G4_Operand* sti,
309-
bool isValidFuncCtrl);
307+
G4_Operand* bti, G4_Operand* sti);
310308

311309
/// Preferred constructor takes an explicit SFID and src1 length
312310
G4_SendMsgDescriptor(

visa/TranslationInterface.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -5987,8 +5987,9 @@ int IR_Builder::translateVISARawSendInst(G4_Predicate *predOpnd, Common_ISA_Exec
59875987
desc = G4_SendMsgDescriptor::createDesc(0, false, numSrc, numDst);
59885988
isValidFuncCtrl = false;
59895989
}
5990-
G4_SendMsgDescriptor *sendMsgDesc = createGeneralMsgDesc(desc, exDesc, getSendAccessType(isRead, isWrite),
5991-
nullptr, nullptr, isValidFuncCtrl);
5990+
// bit[0-3] of the exDesc (always imm) holds the SFID
5991+
G4_SendMsgDescriptor *sendMsgDesc = createSendMsgDesc(static_cast<SFID>(exDesc & 0xF), desc, exDesc, 0,
5992+
getSendAccessType(isRead, isWrite), nullptr, isValidFuncCtrl);
59925993

59935994
// sanity check on srcLen/dstLen
59945995
MUST_BE_TRUE(sendMsgDesc->MessageLength() <= numSrc, "message length mismatch for raw send");

0 commit comments

Comments
 (0)