MLIR
23.0.0git
include
mlir
Dialect
XeGPU
uArch
IntelGpuXe3.h
Go to the documentation of this file.
1
//===--- IntelGpuXe3.h ------------------------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// \file
10
// Xe3 uArch definition. Xe3 is the third generation of Intel Xe GPUs and
11
// includes Crescent Island (CRI). The base instruction set comes from the
12
// shared Khronos OpenCL extensions defined in uArchBase.h; Xe3 only adds the
13
// scaled DPAS extension. Subclass and override here only when a CRI-specific
14
// instruction diverges from the SPIRV defaults.
15
//
16
//===----------------------------------------------------------------------===//
17
#ifndef MLIR_DIALECT_XEGPU_UARCH_INTELGPUXE3_H
18
#define MLIR_DIALECT_XEGPU_UARCH_INTELGPUXE3_H
19
20
#include "
mlir/Dialect/XeGPU/uArch/uArchBase.h
"
21
22
namespace
mlir
{
23
namespace
xegpu
{
24
namespace
uArch
{
25
26
struct
Xe3
:
public
uArch
{
27
Xe3
(
Kind
kind
,
llvm::ArrayRef<const Instruction *>
instructionRegistry
)
28
:
uArch
(
kind
,
instructionRegistry
) {}
29
int
getSubgroupSize
()
const override
{
return
16; }
30
unsigned
getGeneralPackedFormatBitSize
()
const override
{
return
32; }
31
32
static
bool
classof
(
const
uArch
*u) {
33
return
u->getKind() >=
Kind::Xe3_First
&& u->getKind() <=
Kind::Xe3_Last
;
34
}
35
};
36
37
//===----------------------------------------------------------------------===//
38
// uArch instances
39
//===----------------------------------------------------------------------===//
40
41
struct
CRIuArch
final :
public
Xe3
{
42
static
llvm::ArrayRef<const Instruction *>
getCriInstructionRegistry
() {
43
static
const
SubgroupMatrixMultiplyAcc
dpasInst{16, 32};
44
static
const
SubgroupScaledMatrixMultiplyAcc
dpasMxInst{16, 32};
45
static
const
Subgroup2DBlockLoadInstruction
loadNdInst;
46
static
const
Subgroup2DBlockStoreInstruction
storeNdInst;
47
static
const
Subgroup2DBlockPrefetchInstruction
prefetchNdInst;
48
static
const
StoreScatterInstruction
storeScatterInst;
49
static
const
LoadGatherInstruction
loadGatherInst;
50
static
const
Instruction
*arr[] = {
51
&dpasInst, &dpasMxInst, &loadNdInst, &storeNdInst,
52
&prefetchNdInst, &storeScatterInst, &loadGatherInst};
53
return
arr;
54
}
55
56
CRIuArch
() :
Xe3
(
Kind
::
CRI
,
getCriInstructionRegistry
()) {}
57
static
bool
classof
(
const
uArch
*u) {
return
u->getKind() ==
Kind::CRI
; }
58
static
const
uArch
*
getInstance
() {
59
static
const
CRIuArch
instance;
60
return
&instance;
61
}
62
};
63
64
}
// namespace uArch
65
}
// namespace xegpu
66
}
// namespace mlir
67
68
#endif
// MLIR_DIALECT_XEGPU_UARCH_INTELGPUXE3_H
llvm::ArrayRef
Definition
LLVM.h:40
mlir::xegpu::uArch
Definition
IntelGpuXe2.h:22
mlir::xegpu
Definition
XeGPU.h:25
mlir
Include the generated interface declarations.
Definition
ABIRewriteContext.h:29
mlir::xegpu::uArch::CRIuArch::getInstance
static const uArch * getInstance()
Definition
IntelGpuXe3.h:58
mlir::xegpu::uArch::CRIuArch::classof
static bool classof(const uArch *u)
Definition
IntelGpuXe3.h:57
mlir::xegpu::uArch::CRIuArch::CRIuArch
CRIuArch()
Definition
IntelGpuXe3.h:56
mlir::xegpu::uArch::CRIuArch::getCriInstructionRegistry
static llvm::ArrayRef< const Instruction * > getCriInstructionRegistry()
Definition
IntelGpuXe3.h:42
mlir::xegpu::uArch::Instruction
Definition
uArchBase.h:57
mlir::xegpu::uArch::LoadGatherInstruction
Definition
uArchBase.h:215
mlir::xegpu::uArch::StoreScatterInstruction
Definition
uArchBase.h:220
mlir::xegpu::uArch::Subgroup2DBlockLoadInstruction
Definition
uArchBase.h:263
mlir::xegpu::uArch::Subgroup2DBlockPrefetchInstruction
Definition
uArchBase.h:330
mlir::xegpu::uArch::Subgroup2DBlockStoreInstruction
Definition
uArchBase.h:233
mlir::xegpu::uArch::SubgroupMatrixMultiplyAcc
Definition
uArchBase.h:373
mlir::xegpu::uArch::SubgroupScaledMatrixMultiplyAcc
Definition
uArchBase.h:406
mlir::xegpu::uArch::Xe3::Xe3
Xe3(Kind kind, llvm::ArrayRef< const Instruction * > instructionRegistry)
Definition
IntelGpuXe3.h:27
mlir::xegpu::uArch::Xe3::classof
static bool classof(const uArch *u)
Definition
IntelGpuXe3.h:32
mlir::xegpu::uArch::Xe3::getSubgroupSize
int getSubgroupSize() const override
Definition
IntelGpuXe3.h:29
mlir::xegpu::uArch::Xe3::getGeneralPackedFormatBitSize
unsigned getGeneralPackedFormatBitSize() const override
Definition
IntelGpuXe3.h:30
mlir::xegpu::uArch::uArch
Definition
uArchBase.h:91
mlir::xegpu::uArch::uArch::instructionRegistry
llvm::SmallDenseMap< InstructionKind, const Instruction *, 32 > instructionRegistry
Definition
uArchBase.h:129
mlir::xegpu::uArch::uArch::kind
Kind kind
Definition
uArchBase.h:127
mlir::xegpu::uArch::uArch::Kind
Kind
Definition
uArchBase.h:92
mlir::xegpu::uArch::uArch::Kind::Xe3_First
@ Xe3_First
Definition
uArchBase.h:98
mlir::xegpu::uArch::uArch::Kind::Xe3_Last
@ Xe3_Last
Definition
uArchBase.h:100
mlir::xegpu::uArch::uArch::Kind::CRI
@ CRI
Definition
uArchBase.h:99
mlir::xegpu::uArch::uArch::uArch
uArch(Kind kind, llvm::ArrayRef< const Instruction * > instructionRegistry)
Definition
uArchBase.h:104
uArchBase.h
Generated on
for MLIR by
1.14.0