Skip to content

Commit 4c580c0

Browse files
feature: Update COMPUTE_WALKER instruction
Fixes incorrect RawData array length. Related-To: NEO-14588 Signed-off-by: Vysochyn, Illia <[email protected]>
1 parent f95644f commit 4c580c0

File tree

1 file changed

+80
-51
lines changed

1 file changed

+80
-51
lines changed

shared/source/generated/xe_hpg_core/hw_cmds_generated_xe_hpg_core.inl

Lines changed: 80 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2021-2024 Intel Corporation
2+
* Copyright (C) 2021-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -5159,23 +5159,21 @@ typedef struct tagCOMPUTE_WALKER {
51595159
uint32_t PredicateEnable : BITFIELD_RANGE(8, 8);
51605160
uint32_t WorkloadPartitionEnable : BITFIELD_RANGE(9, 9);
51615161
uint32_t IndirectParameterEnable : BITFIELD_RANGE(10, 10);
5162-
uint32_t UavWaitToProduce : BITFIELD_RANGE(11, 11);
5163-
uint32_t UavProducer : BITFIELD_RANGE(12, 12);
5164-
uint32_t UavConsumer : BITFIELD_RANGE(13, 13);
5162+
uint32_t Reserved_11 : BITFIELD_RANGE(11, 13);
51655163
uint32_t SystolicModeEnable : BITFIELD_RANGE(14, 14);
51665164
uint32_t Reserved_15 : BITFIELD_RANGE(15, 15);
51675165
uint32_t CfeSubopcodeVariant : BITFIELD_RANGE(16, 17);
51685166
uint32_t CfeSubopcode : BITFIELD_RANGE(18, 23);
51695167
uint32_t ComputeCommandOpcode : BITFIELD_RANGE(24, 26);
51705168
uint32_t Pipeline : BITFIELD_RANGE(27, 28);
51715169
uint32_t CommandType : BITFIELD_RANGE(29, 31);
5172-
// DWORD 1 of COMPUTE WALKER = DWORD 0 of COMPUTE_WALKER_BODY
5170+
// DWORD 1
51735171
uint32_t Reserved_32 : BITFIELD_RANGE(0, 7);
5174-
uint32_t Reserved_40 : BITFIELD_RANGE(8, 31);
5172+
uint32_t DebugObjectId : BITFIELD_RANGE(8, 31);
51755173
// DWORD 2
51765174
uint32_t IndirectDataLength : BITFIELD_RANGE(0, 16);
51775175
uint32_t L3PrefetchDisable : BITFIELD_RANGE(17, 17);
5178-
uint32_t Reserved_82 : BITFIELD_RANGE(18, 29);
5176+
uint32_t PartitionDispatchParameter : BITFIELD_RANGE(18, 29);
51795177
uint32_t PartitionType : BITFIELD_RANGE(30, 31);
51805178
// DWORD 3
51815179
uint32_t Reserved_96 : BITFIELD_RANGE(0, 5);
@@ -5188,7 +5186,7 @@ typedef struct tagCOMPUTE_WALKER {
51885186
uint32_t TileLayout : BITFIELD_RANGE(19, 21);
51895187
uint32_t WalkOrder : BITFIELD_RANGE(22, 24);
51905188
uint32_t EmitInlineParameter : BITFIELD_RANGE(25, 25);
5191-
uint32_t EmitLocalId : BITFIELD_RANGE(26, 28);
5189+
uint32_t EmitLocal : BITFIELD_RANGE(26, 28);
51925190
uint32_t GenerateLocalId : BITFIELD_RANGE(29, 29);
51935191
uint32_t SimdSize : BITFIELD_RANGE(30, 31);
51945192
// DWORD 5
@@ -5227,13 +5225,14 @@ typedef struct tagCOMPUTE_WALKER {
52275225
// DWORD 31
52285226
uint32_t InlineData[8];
52295227
} Common;
5230-
uint32_t RawData[31];
5228+
uint32_t RawData[39];
52315229
} TheStructure;
52325230
typedef enum tagDWORD_LENGTH {
52335231
DWORD_LENGTH_FIXED_SIZE = 0x25,
52345232
} DWORD_LENGTH;
52355233
typedef enum tagCFE_SUBOPCODE_VARIANT {
52365234
CFE_SUBOPCODE_VARIANT_STANDARD = 0x0,
5235+
CFE_SUBOPCODE_VARIANT_TG_RESUME = 0x1,
52375236
} CFE_SUBOPCODE_VARIANT;
52385237
typedef enum tagCFE_SUBOPCODE {
52395238
CFE_SUBOPCODE_COMPUTE_WALKER = 0x2,
@@ -5253,6 +5252,31 @@ typedef struct tagCOMPUTE_WALKER {
52535252
PARTITION_TYPE_Y = 0x2,
52545253
PARTITION_TYPE_Z = 0x3,
52555254
} PARTITION_TYPE;
5255+
typedef enum tagMESSAGE_SIMD {
5256+
MESSAGE_SIMD_SIMD8 = 0x0,
5257+
MESSAGE_SIMD_SIMD16 = 0x1,
5258+
MESSAGE_SIMD_SIMD32 = 0x2,
5259+
} MESSAGE_SIMD;
5260+
typedef enum tagTILE_LAYOUT {
5261+
TILE_LAYOUT_LINEAR = 0x0,
5262+
TILE_LAYOUT_TILEY_32BPE = 0x1,
5263+
TILE_LAYOUT_TILEY_64BPE = 0x2,
5264+
TILE_LAYOUT_TILEY_128BPE = 0x3,
5265+
} TILE_LAYOUT;
5266+
typedef enum tagWALK_ORDER {
5267+
WALK_ORDER_WALK_012 = 0x0,
5268+
WALK_ORDER_WALK_021 = 0x1,
5269+
WALK_ORDER_WALK_102 = 0x2,
5270+
WALK_ORDER_WALK_120 = 0x3,
5271+
WALK_ORDER_WALK_201 = 0x4,
5272+
WALK_ORDER_WALK_210 = 0x5,
5273+
} WALK_ORDER;
5274+
typedef enum tagEMIT_LOCAL {
5275+
EMIT_LOCAL_EMIT_NONE = 0x0,
5276+
EMIT_LOCAL_EMIT_X = 0x1,
5277+
EMIT_LOCAL_EMIT_XY = 0x3,
5278+
EMIT_LOCAL_EMIT_XYZ = 0x7,
5279+
} EMIT_LOCAL;
52565280
typedef enum tagSIMD_SIZE {
52575281
SIMD_SIZE_SIMD8 = 0x0,
52585282
SIMD_SIZE_SIMD16 = 0x1,
@@ -5262,7 +5286,7 @@ typedef struct tagCOMPUTE_WALKER {
52625286
PARTITION_ID_SUPPORTED_MIN = 0x0,
52635287
PARTITION_ID_SUPPORTED_MAX = 0xf,
52645288
} PARTITION_ID;
5265-
typedef enum tagDISPATCH_WALK_ORDER {
5289+
typedef enum tagDISPATCH_WALK_ORDER { // patched
52665290
DISPATCH_WALK_ORDER_LINEAR_WALK = 0x0,
52675291
DISPATCH_WALK_ORDER_Y_ORDER_WALK = 0x1,
52685292
} DISPATCH_WALK_ORDER;
@@ -5275,9 +5299,16 @@ typedef struct tagCOMPUTE_WALKER {
52755299
TheStructure.Common.Pipeline = PIPELINE_COMPUTE;
52765300
TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE;
52775301
TheStructure.Common.PartitionType = PARTITION_TYPE_DISABLED;
5302+
TheStructure.Common.MessageSimd = MESSAGE_SIMD_SIMD8;
5303+
TheStructure.Common.TileLayout = TILE_LAYOUT_LINEAR;
5304+
TheStructure.Common.WalkOrder = WALK_ORDER_WALK_012;
5305+
TheStructure.Common.EmitLocal = EMIT_LOCAL_EMIT_NONE;
52785306
TheStructure.Common.SimdSize = SIMD_SIZE_SIMD8;
52795307
TheStructure.Common.InterfaceDescriptor.init();
52805308
TheStructure.Common.PostSync.init();
5309+
for (uint32_t i = 0; i < 8; i++) {
5310+
TheStructure.Common.InlineData[i] = 0;
5311+
}
52815312
}
52825313
static tagCOMPUTE_WALKER sInit() {
52835314
COMPUTE_WALKER state;
@@ -5288,10 +5319,10 @@ typedef struct tagCOMPUTE_WALKER {
52885319
UNRECOVERABLE_IF(index >= 39);
52895320
return TheStructure.RawData[index];
52905321
}
5291-
inline void setDwordLength(const DWORD_LENGTH value) {
5322+
inline void setDwordLength(const DWORD_LENGTH value) { // patched
52925323
TheStructure.Common.DwordLength = value;
52935324
}
5294-
inline DWORD_LENGTH getDwordLength() const {
5325+
inline DWORD_LENGTH getDwordLength() const { // patched
52955326
return static_cast<DWORD_LENGTH>(TheStructure.Common.DwordLength);
52965327
}
52975328
inline void setPredicateEnable(const bool value) {
@@ -5312,24 +5343,6 @@ typedef struct tagCOMPUTE_WALKER {
53125343
inline bool getIndirectParameterEnable() const {
53135344
return TheStructure.Common.IndirectParameterEnable;
53145345
}
5315-
inline void setUavWaitToProduce(const bool value) {
5316-
TheStructure.Common.UavWaitToProduce = value;
5317-
}
5318-
inline bool getUavWaitToProduce() const {
5319-
return TheStructure.Common.UavWaitToProduce;
5320-
}
5321-
inline void setUavProducer(const bool value) {
5322-
TheStructure.Common.UavProducer = value;
5323-
}
5324-
inline bool getUavProducer() const {
5325-
return TheStructure.Common.UavProducer;
5326-
}
5327-
inline void setUavConsumer(const bool value) {
5328-
TheStructure.Common.UavConsumer = value;
5329-
}
5330-
inline bool getUavConsumer() const {
5331-
return TheStructure.Common.UavConsumer;
5332-
}
53335346
inline void setSystolicModeEnable(const bool value) {
53345347
TheStructure.Common.SystolicModeEnable = value;
53355348
}
@@ -5354,6 +5367,13 @@ typedef struct tagCOMPUTE_WALKER {
53545367
inline COMPUTE_COMMAND_OPCODE getComputeCommandOpcode() const {
53555368
return static_cast<COMPUTE_COMMAND_OPCODE>(TheStructure.Common.ComputeCommandOpcode);
53565369
}
5370+
inline void setDebugObjectId(const uint32_t value) {
5371+
UNRECOVERABLE_IF(value > 0xffffff);
5372+
TheStructure.Common.DebugObjectId = value;
5373+
}
5374+
inline uint32_t getDebugObjectId() const {
5375+
return TheStructure.Common.DebugObjectId;
5376+
}
53575377
inline void setIndirectDataLength(const uint32_t value) {
53585378
UNRECOVERABLE_IF(value > 0x1ffff);
53595379
TheStructure.Common.IndirectDataLength = value;
@@ -5367,6 +5387,13 @@ typedef struct tagCOMPUTE_WALKER {
53675387
inline bool getL3PrefetchDisable() const {
53685388
return TheStructure.Common.L3PrefetchDisable;
53695389
}
5390+
inline void setPartitionDispatchParameter(const uint32_t value) {
5391+
UNRECOVERABLE_IF(value > 0xfff);
5392+
TheStructure.Common.PartitionDispatchParameter = value;
5393+
}
5394+
inline uint32_t getPartitionDispatchParameter() const {
5395+
return TheStructure.Common.PartitionDispatchParameter;
5396+
}
53705397
inline void setPartitionType(const PARTITION_TYPE value) {
53715398
TheStructure.Common.PartitionType = value;
53725399
}
@@ -5384,47 +5411,46 @@ typedef struct tagCOMPUTE_WALKER {
53845411
INDIRECTDATASTARTADDRESS_ALIGN_SIZE = 0x40,
53855412
} INDIRECTDATASTARTADDRESS;
53865413
inline void setIndirectDataStartAddress(const uint32_t value) {
5387-
UNRECOVERABLE_IF(value > 0xffffffc0);
53885414
TheStructure.Common.IndirectDataStartAddress = value >> INDIRECTDATASTARTADDRESS_BIT_SHIFT;
53895415
}
53905416
inline uint32_t getIndirectDataStartAddress() const {
53915417
return TheStructure.Common.IndirectDataStartAddress << INDIRECTDATASTARTADDRESS_BIT_SHIFT;
53925418
}
5393-
inline void setMessageSimd(const uint32_t value) {
5419+
inline void setMessageSimd(const uint32_t value) { // patched
53945420
TheStructure.Common.MessageSimd = value;
53955421
}
5396-
inline uint32_t getMessageSimd() const {
5422+
inline uint32_t getMessageSimd() const { // patched
53975423
return (TheStructure.Common.MessageSimd);
53985424
}
5399-
inline void setTileLayout(const uint32_t value) {
5425+
inline void setTileLayout(const uint32_t value) { // patched
54005426
TheStructure.Common.TileLayout = value;
54015427
}
5402-
inline uint32_t getTileLayout() const {
5428+
inline uint32_t getTileLayout() const { // patched
54035429
return (TheStructure.Common.TileLayout);
54045430
}
5405-
inline void setWalkOrder(const uint32_t value) {
5431+
inline void setWalkOrder(const uint32_t value) { // patched
54065432
TheStructure.Common.WalkOrder = value;
54075433
}
5408-
inline uint32_t getWalkOrder() const {
5434+
inline uint32_t getWalkOrder() const { // patched
54095435
return (TheStructure.Common.WalkOrder);
54105436
}
5411-
inline void setEmitInlineParameter(const uint32_t value) {
5437+
inline void setEmitInlineParameter(const bool value) {
54125438
TheStructure.Common.EmitInlineParameter = value;
54135439
}
5414-
inline uint32_t getEmitInlineParameter() const {
5415-
return (TheStructure.Common.EmitInlineParameter);
5440+
inline bool getEmitInlineParameter() const {
5441+
return TheStructure.Common.EmitInlineParameter;
54165442
}
5417-
inline void setEmitLocalId(const uint32_t value) {
5418-
TheStructure.Common.EmitLocalId = value;
5443+
inline void setEmitLocalId(const uint32_t value) { // patched
5444+
TheStructure.Common.EmitLocal = value;
54195445
}
5420-
inline uint32_t getEmitLocalId() const {
5421-
return (TheStructure.Common.EmitLocalId);
5446+
inline uint32_t getEmitLocalId() const { // patched
5447+
return TheStructure.Common.EmitLocal;
54225448
}
5423-
inline void setGenerateLocalId(const uint32_t value) {
5449+
inline void setGenerateLocalId(const bool value) {
54245450
TheStructure.Common.GenerateLocalId = value;
54255451
}
5426-
inline uint32_t getGenerateLocalId() const {
5427-
return (TheStructure.Common.GenerateLocalId);
5452+
inline bool getGenerateLocalId() const {
5453+
return TheStructure.Common.GenerateLocalId;
54285454
}
54295455
inline void setSimdSize(const SIMD_SIZE value) {
54305456
TheStructure.Common.SimdSize = value;
@@ -5439,22 +5465,25 @@ typedef struct tagCOMPUTE_WALKER {
54395465
return TheStructure.Common.ExecutionMask;
54405466
}
54415467
inline void setLocalXMaximum(const uint32_t value) {
5468+
UNRECOVERABLE_IF(value > 0x3ff);
54425469
TheStructure.Common.LocalXMaximum = value;
54435470
}
54445471
inline uint32_t getLocalXMaximum() const {
5445-
return (TheStructure.Common.LocalXMaximum);
5472+
return TheStructure.Common.LocalXMaximum;
54465473
}
54475474
inline void setLocalYMaximum(const uint32_t value) {
5475+
UNRECOVERABLE_IF(value > 0x3ff);
54485476
TheStructure.Common.LocalYMaximum = value;
54495477
}
54505478
inline uint32_t getLocalYMaximum() const {
5451-
return (TheStructure.Common.LocalYMaximum);
5479+
return TheStructure.Common.LocalYMaximum;
54525480
}
54535481
inline void setLocalZMaximum(const uint32_t value) {
5482+
UNRECOVERABLE_IF(value > 0x3ff);
54545483
TheStructure.Common.LocalZMaximum = value;
54555484
}
54565485
inline uint32_t getLocalZMaximum() const {
5457-
return (TheStructure.Common.LocalZMaximum);
5486+
return TheStructure.Common.LocalZMaximum;
54585487
}
54595488
inline void setThreadGroupIdXDimension(const uint32_t value) {
54605489
TheStructure.Common.ThreadGroupIdXDimension = value;
@@ -5537,7 +5566,7 @@ typedef struct tagCOMPUTE_WALKER {
55375566
inline uint32_t *getInlineDataPointer() {
55385567
return reinterpret_cast<uint32_t *>(&TheStructure.Common.InlineData);
55395568
}
5540-
static constexpr uint32_t getInlineDataSize() { // patched
5569+
static constexpr uint32_t getInlineDataSize() {
55415570
return sizeof(TheStructure.Common.InlineData);
55425571
}
55435572
using InterfaceDescriptorType = std::decay_t<decltype(TheStructure.Common.InterfaceDescriptor)>; // patched

0 commit comments

Comments
 (0)