diff --git a/lib/docs/main.js b/lib/docs/main.js index 4b946eb9631f63fb2f8819b587113a6cd9454ddb..538fcf522904e36d4fe4c6a0c9f90aa181d3a258 100644 --- a/lib/docs/main.js +++ b/lib/docs/main.js @@ -1267,6 +1267,18 @@ const NAV_MODES = { payloadHtml += "frameSize"; break; } + case "work_item_id": { + payloadHtml += "workItemId"; + break; + } + case "work_group_size": { + payloadHtml += "workGroupSize"; + break; + } + case "work_group_id": { + payloadHtml += "workGroupId"; + break; + } case "ptr_to_int": { payloadHtml += "ptrToInt"; break; diff --git a/src/Autodoc.zig b/src/Autodoc.zig index 47b0c8d3c21a0a6596972d35f2c1c24b99610db2..5b578841c2a85fb9ba9991558822dd46d2c396ea 100644 --- a/src/Autodoc.zig +++ b/src/Autodoc.zig @@ -2984,13 +2984,33 @@ fn walkInstruction( const param_index = self.exprs.items.len; try self.exprs.append(self.arena, param.expr); - self.exprs.items[bin_index] = .{ .builtin = .{ .name = @tagName(tags[inst_index]), .param = param_index } }; + self.exprs.items[bin_index] = .{ .builtin = .{ .name = @tagName(extended.opcode), .param = param_index } }; return DocData.WalkResult{ .typeRef = param.typeRef orelse .{ .type = @enumToInt(Ref.type_type) }, .expr = .{ .builtinIndex = bin_index }, }; }, + .work_item_id, + .work_group_size, + .work_group_id, + => { + const extra = file.zir.extraData(Zir.Inst.UnNode, extended.operand).data; + const bin_index = self.exprs.items.len; + try self.exprs.append(self.arena, .{ .builtin = .{ .param = 0 } }); + const param = try self.walkRef(file, parent_scope, parent_src, extra.operand, false); + + const param_index = self.exprs.items.len; + try self.exprs.append(self.arena, param.expr); + + self.exprs.items[bin_index] = .{ .builtin = .{ .name = @tagName(extended.opcode), .param = param_index } }; + + return DocData.WalkResult{ + // from docs we know they return u32 + .typeRef = .{ .type = @enumToInt(Ref.u32_type) }, + .expr = .{ .builtinIndex = bin_index }, + }; + }, .cmpxchg => { const extra = file.zir.extraData(Zir.Inst.Cmpxchg, extended.operand).data;