MLIR

Multi-Level IR Compiler Framework

'rocdl' Dialect

Operations 

source

rocdl.ballot (ROCDL::BallotOp) 

Vote across thread group

Syntax:

operation ::= `rocdl.ballot` $pred attr-dict `:` type($res)

Ballot provides a bit mask containing the 1-bit predicate value from each lane. The nth bit of the result contains the 1 bit contributed by the nth warp lane.

Operands: 

OperandDescription
pred1-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.barrier (ROCDL::BarrierOp) 

Syntax:

operation ::= `rocdl.barrier` attr-dict

rocdl.buffer.load (ROCDL::MubufLoadOp) 

Operands: 

OperandDescription
rsrcLLVM dialect-compatible type
vindexLLVM dialect-compatible type
offsetLLVM dialect-compatible type
glcLLVM dialect-compatible type
slcLLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.buffer.store (ROCDL::MubufStoreOp) 

Operands: 

OperandDescription
vdataLLVM dialect-compatible type
rsrcLLVM dialect-compatible type
vindexLLVM dialect-compatible type
offsetLLVM dialect-compatible type
glcLLVM dialect-compatible type
slcLLVM dialect-compatible type

rocdl.cvt.f32.bf8 (ROCDL::CvtF32Bf8Op) 

Convert bf8 to f32

Syntax:

operation ::= `rocdl.cvt.f32.bf8` attr-dict $srcA `[` $byteSel `]` `:` type($res)

Convert 8-bit bf8 value from the byteSelth bit of srcA to fp32.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcA32-bit signless integer
byteSel32-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.cvt.f32.fp8 (ROCDL::CvtF32Fp8Op) 

Convert fp8 to f32

Syntax:

operation ::= `rocdl.cvt.f32.fp8` attr-dict $srcA `[` $byteSel `]` `:` type($res)

Convert 8-bit fp8 value from the byteSelth bit of srcA to fp32.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcA32-bit signless integer
byteSel32-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.cvt.pk.bf8.f32 (ROCDL::CvtPkBf8F32Op) 

Convert two f32’s to bf8

Syntax:

operation ::= `rocdl.cvt.pk.bf8.f32` attr-dict $srcA `,` $srcB `->` $old `[` $wordSel `]` `:` type($res)

Convert srcA and srcB to bf8 and store into the low/high word of old, preserving the other word.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcA32-bit float
srcB32-bit float
old32-bit signless integer
wordSel1-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.cvt.pk.fp8.f32 (ROCDL::CvtPkFp8F32Op) 

Convert two f32’s to fp8

Syntax:

operation ::= `rocdl.cvt.pk.fp8.f32` attr-dict $srcA `,` $srcB `->` $old `[` $wordSel `]` `:` type($res)

Convert srcA and srcB to fp8 and store into the low/high word of old, preserving the other word.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcA32-bit float
srcB32-bit float
old32-bit signless integer
wordSel1-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.cvt.sr.bf8.f32 (ROCDL::CvtSrBf8F32Op) 

Convert f32 to bf8, stochiastic rounding

Syntax:

operation ::= `rocdl.cvt.sr.bf8.f32` attr-dict $srcA `,` $srcB `->` $old `[` $byteSel `]` `:` type($res)

Convert srcA to bf8, adding the rounding factor from srcB, and store into the byteSelth byte of old, preserving the others.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcA32-bit float
srcB32-bit signless integer
old32-bit signless integer
byteSel32-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.cvt.sr.fp8.f32 (ROCDL::CvtSrFp8F32Op) 

Convert f32 to fp8, stochiastic rounding

Syntax:

operation ::= `rocdl.cvt.sr.fp8.f32` attr-dict $srcA `,` $srcB `->` $old `[` $byteSel `]` `:` type($res)

Convert srcA to fp8, adding the rounding factor from srcB, and store into the byteSelth byte of old, preserving the others.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcA32-bit float
srcB32-bit signless integer
old32-bit signless integer
byteSel32-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.ds_bpermute (ROCDL::DsBpermuteOp) 

Syntax:

operation ::= `rocdl.ds_bpermute` $index `,` $src  attr-dict `:` `(` type($index) `,` type($src) `)` `->` type($res)

Operands: 

OperandDescription
index32-bit signless integer
src32-bit signless integer

Results: 

ResultDescription
res32-bit signless integer

rocdl.ds_swizzle (ROCDL::DsSwizzleOp) 

Syntax:

operation ::= `rocdl.ds_swizzle` $src `,` $offset  attr-dict `:` `(` type($src) `,` type($offset) `)` `->` type($res)

Operands: 

OperandDescription
src32-bit signless integer
offset32-bit signless integer

Results: 

ResultDescription
res32-bit signless integer

rocdl.grid.dim.x (ROCDL::GridDimXOp) 

Syntax:

operation ::= `rocdl.grid.dim.x` attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.grid.dim.y (ROCDL::GridDimYOp) 

Syntax:

operation ::= `rocdl.grid.dim.y` attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.grid.dim.z (ROCDL::GridDimZOp) 

Syntax:

operation ::= `rocdl.grid.dim.z` attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.make.buffer.rsrc (ROCDL::MakeBufferRsrcOp) 

Syntax:

operation ::= `rocdl.make.buffer.rsrc` operands attr-dict `:` type($base) `to` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
baseLLVM pointer type
stride16-bit signless integer
numRecords32-bit signless integer
flags32-bit signless integer

Results: 

ResultDescription
resLLVM pointer in address space 8

rocdl.mbcnt.hi (ROCDL::MbcntHiOp) 

Syntax:

operation ::= `rocdl.mbcnt.hi` $in0 `,` $in1  attr-dict `:` `(` type($in0) `,` type($in1) `)` `->` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
in032-bit signless integer
in132-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mbcnt.lo (ROCDL::MbcntLoOp) 

Syntax:

operation ::= `rocdl.mbcnt.lo` $in0 `,` $in1  attr-dict `:` `(` type($in0) `,` type($in1) `)` `->` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
in032-bit signless integer
in132-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x16bf16.1k (ROCDL::mfma_f32_16x16x16bf16_1k) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x16bf16.1k` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x16f16 (ROCDL::mfma_f32_16x16x16f16) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x16f16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x1f32 (ROCDL::mfma_f32_16x16x1f32) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x1f32` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x2bf16 (ROCDL::mfma_f32_16x16x2bf16) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x2bf16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x32.bf8.bf8 (ROCDL::mfma_f32_16x16x32_bf8_bf8) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x32.bf8.bf8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x32.bf8.fp8 (ROCDL::mfma_f32_16x16x32_bf8_fp8) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x32.bf8.fp8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x32.fp8.bf8 (ROCDL::mfma_f32_16x16x32_fp8_bf8) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x32.fp8.bf8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x32.fp8.fp8 (ROCDL::mfma_f32_16x16x32_fp8_fp8) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x32.fp8.fp8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x4bf16.1k (ROCDL::mfma_f32_16x16x4bf16_1k) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x4bf16.1k` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x4f16 (ROCDL::mfma_f32_16x16x4f16) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x4f16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x4f32 (ROCDL::mfma_f32_16x16x4f32) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x4f32` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x8.xf32 (ROCDL::mfma_f32_16x16x8_xf32) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x8.xf32` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.16x16x8bf16 (ROCDL::mfma_f32_16x16x8bf16) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x8bf16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x16.bf8.bf8 (ROCDL::mfma_f32_32x32x16_bf8_bf8) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x16.bf8.bf8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x16.bf8.fp8 (ROCDL::mfma_f32_32x32x16_bf8_fp8) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x16.bf8.fp8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x16.fp8.bf8 (ROCDL::mfma_f32_32x32x16_fp8_bf8) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x16.fp8.bf8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x16.fp8.fp8 (ROCDL::mfma_f32_32x32x16_fp8_fp8) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x16.fp8.fp8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x1f32 (ROCDL::mfma_f32_32x32x1f32) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x1f32` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x2bf16 (ROCDL::mfma_f32_32x32x2bf16) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x2bf16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x2f32 (ROCDL::mfma_f32_32x32x2f32) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x2f32` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x4.xf32 (ROCDL::mfma_f32_32x32x4_xf32) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x4.xf32` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x4bf16 (ROCDL::mfma_f32_32x32x4bf16) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x4bf16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x4bf16.1k (ROCDL::mfma_f32_32x32x4bf16_1k) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x4bf16.1k` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x4f16 (ROCDL::mfma_f32_32x32x4f16) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x4f16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x8bf16.1k (ROCDL::mfma_f32_32x32x8bf16_1k) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x8bf16.1k` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.32x32x8f16 (ROCDL::mfma_f32_32x32x8f16) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x8f16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.4x4x1f32 (ROCDL::mfma_f32_4x4x1f32) 

Syntax:

operation ::= `rocdl.mfma.f32.4x4x1f32` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.4x4x2bf16 (ROCDL::mfma_f32_4x4x2bf16) 

Syntax:

operation ::= `rocdl.mfma.f32.4x4x2bf16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.4x4x4bf16.1k (ROCDL::mfma_f32_4x4x4bf16_1k) 

Syntax:

operation ::= `rocdl.mfma.f32.4x4x4bf16.1k` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f32.4x4x4f16 (ROCDL::mfma_f32_4x4x4f16) 

Syntax:

operation ::= `rocdl.mfma.f32.4x4x4f16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f64.16x16x4f64 (ROCDL::mfma_f64_16x16x4f64) 

Syntax:

operation ::= `rocdl.mfma.f64.16x16x4f64` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.f64.4x4x4f64 (ROCDL::mfma_f64_4x4x4f64) 

Syntax:

operation ::= `rocdl.mfma.f64.4x4x4f64` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.i32.16x16x16i8 (ROCDL::mfma_i32_16x16x16i8) 

Syntax:

operation ::= `rocdl.mfma.i32.16x16x16i8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.i32.16x16x32.i8 (ROCDL::mfma_i32_16x16x32_i8) 

Syntax:

operation ::= `rocdl.mfma.i32.16x16x32.i8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.i32.16x16x4i8 (ROCDL::mfma_i32_16x16x4i8) 

Syntax:

operation ::= `rocdl.mfma.i32.16x16x4i8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.i32.32x32x16.i8 (ROCDL::mfma_i32_32x32x16_i8) 

Syntax:

operation ::= `rocdl.mfma.i32.32x32x16.i8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.i32.32x32x4i8 (ROCDL::mfma_i32_32x32x4i8) 

Syntax:

operation ::= `rocdl.mfma.i32.32x32x4i8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.i32.32x32x8i8 (ROCDL::mfma_i32_32x32x8i8) 

Syntax:

operation ::= `rocdl.mfma.i32.32x32x8i8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.i32.4x4x4i8 (ROCDL::mfma_i32_4x4x4i8) 

Syntax:

operation ::= `rocdl.mfma.i32.4x4x4i8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.raw.buffer.atomic.cmpswap (ROCDL::RawBufferAtomicCmpSwap) 

Syntax:

operation ::= `rocdl.raw.buffer.atomic.cmpswap` attr-dict `(` operands `)` `:` type($res) `,` type($rsrc)

Operands: 

OperandDescription
srcLLVM dialect-compatible type
cmpLLVM dialect-compatible type
rsrcLLVM dialect-compatible type
offset32-bit signless integer
soffset32-bit signless integer
aux32-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.raw.buffer.atomic.fadd (ROCDL::RawBufferAtomicFAddOp) 

Operands: 

OperandDescription
vdataLLVM dialect-compatible type
rsrcLLVM dialect-compatible type
offsetLLVM dialect-compatible type
soffsetLLVM dialect-compatible type
auxLLVM dialect-compatible type

rocdl.raw.buffer.atomic.fmax (ROCDL::RawBufferAtomicFMaxOp) 

Operands: 

OperandDescription
vdataLLVM dialect-compatible type
rsrcLLVM dialect-compatible type
offsetLLVM dialect-compatible type
soffsetLLVM dialect-compatible type
auxLLVM dialect-compatible type

rocdl.raw.buffer.atomic.smax (ROCDL::RawBufferAtomicSMaxOp) 

Operands: 

OperandDescription
vdataLLVM dialect-compatible type
rsrcLLVM dialect-compatible type
offsetLLVM dialect-compatible type
soffsetLLVM dialect-compatible type
auxLLVM dialect-compatible type

rocdl.raw.buffer.atomic.umin (ROCDL::RawBufferAtomicUMinOp) 

Operands: 

OperandDescription
vdataLLVM dialect-compatible type
rsrcLLVM dialect-compatible type
offsetLLVM dialect-compatible type
soffsetLLVM dialect-compatible type
auxLLVM dialect-compatible type

rocdl.raw.buffer.load (ROCDL::RawBufferLoadOp) 

Operands: 

OperandDescription
rsrcLLVM dialect-compatible type
offsetLLVM dialect-compatible type
soffsetLLVM dialect-compatible type
auxLLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.raw.buffer.store (ROCDL::RawBufferStoreOp) 

Operands: 

OperandDescription
vdataLLVM dialect-compatible type
rsrcLLVM dialect-compatible type
offsetLLVM dialect-compatible type
soffsetLLVM dialect-compatible type
auxLLVM dialect-compatible type

rocdl.raw.ptr.buffer.atomic.cmpswap (ROCDL::RawPtrBufferAtomicCmpSwap) 

Syntax:

operation ::= `rocdl.raw.ptr.buffer.atomic.cmpswap` operands attr-dict `:` type($res)

Interfaces: AliasAnalysisOpInterface

Attributes: 

AttributeMLIR TypeDescription
alias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
noalias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
tbaa::mlir::ArrayAttrLLVM dialect TBAA tag metadata array

Operands: 

OperandDescription
srcLLVM dialect-compatible type
cmpLLVM dialect-compatible type
rsrcLLVM pointer in address space 8
offset32-bit signless integer
soffset32-bit signless integer
aux32-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.raw.ptr.buffer.atomic.fadd (ROCDL::RawPtrBufferAtomicFaddOp) 

Syntax:

operation ::= `rocdl.raw.ptr.buffer.atomic.fadd` operands attr-dict `:` type($vdata)

Interfaces: AliasAnalysisOpInterface

Attributes: 

AttributeMLIR TypeDescription
alias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
noalias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
tbaa::mlir::ArrayAttrLLVM dialect TBAA tag metadata array

Operands: 

OperandDescription
vdataLLVM dialect-compatible type
rsrcLLVM pointer in address space 8
offset32-bit signless integer
soffset32-bit signless integer
aux32-bit signless integer

rocdl.raw.ptr.buffer.atomic.fmax (ROCDL::RawPtrBufferAtomicFmaxOp) 

Syntax:

operation ::= `rocdl.raw.ptr.buffer.atomic.fmax` operands attr-dict `:` type($vdata)

Interfaces: AliasAnalysisOpInterface

Attributes: 

AttributeMLIR TypeDescription
alias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
noalias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
tbaa::mlir::ArrayAttrLLVM dialect TBAA tag metadata array

Operands: 

OperandDescription
vdataLLVM dialect-compatible type
rsrcLLVM pointer in address space 8
offset32-bit signless integer
soffset32-bit signless integer
aux32-bit signless integer

rocdl.raw.ptr.buffer.atomic.smax (ROCDL::RawPtrBufferAtomicSmaxOp) 

Syntax:

operation ::= `rocdl.raw.ptr.buffer.atomic.smax` operands attr-dict `:` type($vdata)

Interfaces: AliasAnalysisOpInterface

Attributes: 

AttributeMLIR TypeDescription
alias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
noalias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
tbaa::mlir::ArrayAttrLLVM dialect TBAA tag metadata array

Operands: 

OperandDescription
vdataLLVM dialect-compatible type
rsrcLLVM pointer in address space 8
offset32-bit signless integer
soffset32-bit signless integer
aux32-bit signless integer

rocdl.raw.ptr.buffer.atomic.umin (ROCDL::RawPtrBufferAtomicUminOp) 

Syntax:

operation ::= `rocdl.raw.ptr.buffer.atomic.umin` operands attr-dict `:` type($vdata)

Interfaces: AliasAnalysisOpInterface

Attributes: 

AttributeMLIR TypeDescription
alias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
noalias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
tbaa::mlir::ArrayAttrLLVM dialect TBAA tag metadata array

Operands: 

OperandDescription
vdataLLVM dialect-compatible type
rsrcLLVM pointer in address space 8
offset32-bit signless integer
soffset32-bit signless integer
aux32-bit signless integer

rocdl.raw.ptr.buffer.load (ROCDL::RawPtrBufferLoadOp) 

Syntax:

operation ::= `rocdl.raw.ptr.buffer.load` operands attr-dict `:` type($res)

Interfaces: AliasAnalysisOpInterface

Attributes: 

AttributeMLIR TypeDescription
alias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
noalias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
tbaa::mlir::ArrayAttrLLVM dialect TBAA tag metadata array

Operands: 

OperandDescription
rsrcLLVM pointer in address space 8
offset32-bit signless integer
soffset32-bit signless integer
aux32-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.raw.ptr.buffer.store (ROCDL::RawPtrBufferStoreOp) 

Syntax:

operation ::= `rocdl.raw.ptr.buffer.store` operands attr-dict `:` type($vdata)

Interfaces: AliasAnalysisOpInterface

Attributes: 

AttributeMLIR TypeDescription
alias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
noalias_scopes::mlir::ArrayAttrLLVM dialect alias scope array
tbaa::mlir::ArrayAttrLLVM dialect TBAA tag metadata array

Operands: 

OperandDescription
vdataLLVM dialect-compatible type
rsrcLLVM pointer in address space 8
offset32-bit signless integer
soffset32-bit signless integer
aux32-bit signless integer

rocdl.s.barrier (ROCDL::SBarrierOp) 

Syntax:

operation ::= `rocdl.s.barrier` attr-dict

rocdl.s.setprio (ROCDL::SetPrioOp) 

Syntax:

operation ::= `rocdl.s.setprio` $priority attr-dict

Attributes: 

AttributeMLIR TypeDescription
priority::mlir::IntegerAttr16-bit signless integer attribute

rocdl.sched.barrier (ROCDL::SchedBarrier) 

Syntax:

operation ::= `rocdl.sched.barrier` $mask attr-dict

Attributes: 

AttributeMLIR TypeDescription
mask::mlir::IntegerAttr32-bit signless integer attribute

rocdl.waitcnt (ROCDL::WaitcntOp) 

Syntax:

operation ::= `rocdl.waitcnt` attr-dict $bitfield

Attributes: 

AttributeMLIR TypeDescription
bitfield::mlir::IntegerAttr32-bit signless integer attribute

rocdl.wmma.bf16.16x16x16.bf16 (ROCDL::wmma_bf16_16x16x16_bf16) 

Syntax:

operation ::= `rocdl.wmma.bf16.16x16x16.bf16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.wmma.f16.16x16x16.f16 (ROCDL::wmma_f16_16x16x16_f16) 

Syntax:

operation ::= `rocdl.wmma.f16.16x16x16.f16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.wmma.f32.16x16x16.bf16 (ROCDL::wmma_f32_16x16x16_bf16) 

Syntax:

operation ::= `rocdl.wmma.f32.16x16x16.bf16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.wmma.f32.16x16x16.f16 (ROCDL::wmma_f32_16x16x16_f16) 

Syntax:

operation ::= `rocdl.wmma.f32.16x16x16.f16` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.wmma.i32.16x16x16.iu4 (ROCDL::wmma_i32_16x16x16_iu4) 

Syntax:

operation ::= `rocdl.wmma.i32.16x16x16.iu4` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.wmma.i32.16x16x16.iu8 (ROCDL::wmma_i32_16x16x16_iu8) 

Syntax:

operation ::= `rocdl.wmma.i32.16x16x16.iu8` $args attr-dict `:` functional-type($args, $res)

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.workgroup.dim.x (ROCDL::BlockDimXOp) 

Syntax:

operation ::= `rocdl.workgroup.dim.x` attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.workgroup.dim.y (ROCDL::BlockDimYOp) 

Syntax:

operation ::= `rocdl.workgroup.dim.y` attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.workgroup.dim.z (ROCDL::BlockDimZOp) 

Syntax:

operation ::= `rocdl.workgroup.dim.z` attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.workgroup.id.x (ROCDL::BlockIdXOp) 

Syntax:

operation ::= `rocdl.workgroup.id.x` attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.workgroup.id.y (ROCDL::BlockIdYOp) 

Syntax:

operation ::= `rocdl.workgroup.id.y` attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.workgroup.id.z (ROCDL::BlockIdZOp) 

Syntax:

operation ::= `rocdl.workgroup.id.z` attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.workitem.id.x (ROCDL::ThreadIdXOp) 

Syntax:

operation ::= `rocdl.workitem.id.x` attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.workitem.id.y (ROCDL::ThreadIdYOp) 

Syntax:

operation ::= `rocdl.workitem.id.y` attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.workitem.id.z (ROCDL::ThreadIdZOp) 

Syntax:

operation ::= `rocdl.workitem.id.z` attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Results: 

ResultDescription
resLLVM dialect-compatible type

Attributes 

ROCDLTargetAttr 

Syntax:

#rocdl.target<
  int,   # O
  ::llvm::StringRef,   # triple
  ::llvm::StringRef,   # chip
  ::llvm::StringRef,   # features
  ::llvm::StringRef,   # abi
  DictionaryAttr,   # flags
  ArrayAttr   # link
>

ROCDL target attribute for controlling compilation of AMDGPU targets. All parameters decay into default values if not present.

Examples:

  1. Target with default values.
  gpu.module @mymodule [#rocdl.target] attributes {...} {
    ...
  }
  1. Target with gfx90a chip and fast math.
  gpu.module @mymodule [#rocdl.target<chip = "gfx90a", flags = {fast, no_wave64}>] {
    ...
  }

Parameters: 

ParameterC++ typeDescription
OintOptimization level to apply.
triple::llvm::StringRefTarget triple.
chip::llvm::StringRefTarget chip.
features::llvm::StringRefTarget chip features.
abi::llvm::StringRefABI version.
flagsDictionaryAttrTarget specific flags.
linkArrayAttrFiles to link to the LLVM module.