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.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{}

Attributes: 

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

Operands: 

OperandDescription
srcA32-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{}

Attributes: 

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

Operands: 

OperandDescription
srcA32-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{}

Attributes: 

AttributeMLIR TypeDescription
wordSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

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

Results: 

ResultDescription
resLLVM dialect-compatible type

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

Convert packed bf8 to packed f32

Syntax:

operation ::= `rocdl.cvt.pk.f32.bf8` attr-dict $src `[` $wordSel `]` `:` type($res)

Convert src based on $wordSel to packed fp32,

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
wordSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
src32-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

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

Convert packed fp8 to packed f32

Syntax:

operation ::= `rocdl.cvt.pk.f32.fp8` attr-dict $src `[` $wordSel `]` `:` type($res)

Convert src based on $wordSel to packed fp32.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
wordSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
src32-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{}

Attributes: 

AttributeMLIR TypeDescription
wordSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

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

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.cvt.pkrtz (ROCDL::CvtPkRtz) 

Convert two f32 input into a vector<2xf16>

Syntax:

operation ::= `rocdl.cvt.pkrtz` attr-dict $srcA `,` $srcB `:` type($res)

Convert two f32 values into a packed vector<2xf16>.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcA32-bit float
srcB32-bit float

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.cvt.scalef32.2xpk16.bf6.f32 (ROCDL::CvtScaleF322xPk16Bf6F32Op) 

Scale and convert two vector<16xf32> to 32 packed bf6

Syntax:

operation ::= `rocdl.cvt.scalef32.2xpk16.bf6.f32` attr-dict $src0 `,` $src1 `,` $scale `:` type($res)

Convert 32 single-precision float values, packed into two length-16 vectors that will be logically concanenated, to packed bf6, dividing by the exponent part of scale before doing so.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
src0fixed-length vector of 32-bit float values of length 16
src1fixed-length vector of 32-bit float values of length 16
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit signless integer values of length 6

rocdl.cvt.scalef32.2xpk16.fp6.f32 (ROCDL::CvtScaleF322xPk16Fp6F32Op) 

Scale and convert two vector<16xf32> to 32 packed fp6

Syntax:

operation ::= `rocdl.cvt.scalef32.2xpk16.fp6.f32` attr-dict $src0 `,` $src1 `,` $scale `:` type($res)

Convert 32 single-precision float values, packed into two length-16 vectors that will be logically concanenated, to packed fp6, dividing by the exponent part of scale before doing so.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
src0fixed-length vector of 32-bit float values of length 16
src1fixed-length vector of 32-bit float values of length 16
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit signless integer values of length 6

rocdl.cvt.scalef32.f16.bf8 (ROCDL::CvtScaleF32F16Bf8Op) 

Scaled convert bf8 from packed vector to f16, updating tied result

Syntax:

operation ::= `rocdl.cvt.scalef32.f16.bf8` attr-dict $src `[` $srcSelIndex `]` `,` $scale `->` $oldVdst `[` $dstLoHiSel `]` `:` type($res)

Convert a bf8 byte from src, selected by srcSelIndex, to f16 while multiplying it by the expontent of scale, and place it into the dstLoHiSelth bit of oldVdst preserving the other element of that vector in the return value.

The bytes are stored as an i32 and not a <4 x i8>.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
srcSelIndex::mlir::IntegerAttr32-bit signless integer attribute
dstLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
oldVdstfixed-length vector of 16-bit float values of length 2
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit float values of length 2

rocdl.cvt.scalef32.f16.fp8 (ROCDL::CvtScaleF32F16Fp8Op) 

Scaled convert fp8 from packed vector to f16, updating tied result

Syntax:

operation ::= `rocdl.cvt.scalef32.f16.fp8` attr-dict $src `[` $srcSelIndex `]` `,` $scale `->` $oldVdst `[` $dstLoHiSel `]` `:` type($res)

Convert a fp8 byte from src, selected by srcSelIndex, to f16 while multiplying it by the expontent of scale, and place it into the dstLoHiSelth bit of oldVdst preserving the other element of that vector in the return value.

The bytes are stored as an i32 and not a <4 x i8>.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
srcSelIndex::mlir::IntegerAttr32-bit signless integer attribute
dstLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
oldVdstfixed-length vector of 16-bit float values of length 2
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit float values of length 2

rocdl.cvt.scalef32.f32.bf8 (ROCDL::CvtScaleF32F32Bf8Op) 

Scaled convert bf8 from packed vector to f32

Syntax:

operation ::= `rocdl.cvt.scalef32.f32.bf8` attr-dict $src `[` $srcSelIndex `]` `,` $scale `:` type($res)

Convert a bf8 byte from src, selected by srcSelIndex, to f32, multiplying it by the exponent of scale.

The bytes are stored in an i32, not a <4 x i8>.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
res32-bit float

rocdl.cvt.scalef32.f32.fp8 (ROCDL::CvtScaleF32F32Fp8Op) 

Scaled convert fp8 from packed vector to f32

Syntax:

operation ::= `rocdl.cvt.scalef32.f32.fp8` attr-dict $src `[` $srcSelIndex `]` `,` $scale `:` type($res)

Convert a fp8 byte from src, selected by srcSelIndex, to f32, multiplying it by the exponent of scale.

The bytes are stored in an i32, not a <4 x i8>.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
res32-bit float

rocdl.cvt.scalef32.pk.bf16.bf8 (ROCDL::CvtScaleF32PkBf16Bf8Op) 

Scaled convert two bf8to two bf16

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.bf16.bf8` attr-dict $src `[` $srcLoHiSel `]` `,` $scale `:` type($res)

Convert two packed bf8 values in src0 to two bf16 values, multiplying by the exponent in scale. The two values to be converted are selected from the low or high half of src (a packed vector represented as an i32) on the basis of srcLoHiSel.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
srcLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of bfloat16 type values of length 2

rocdl.cvt.scalef32.pk.bf16.fp4 (ROCDL::CvtScaleF32PkBf16Fp4Op) 

Scale and convert two packed fp4 to packed bf16

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.bf16.fp4` attr-dict $src `[` $srcSelIndex `]` `,` $scale `:` type($res)

Convert two packed fp4 (f4E2M1) values stored as one byte of a 32-bit integer to packed bf16, multiplying by the exponent part of scale before doing so.

The byte to convert is chosen by srcSelIndex.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of bfloat16 type values of length 2

rocdl.cvt.scalef32.pk.bf16.fp8 (ROCDL::CvtScaleF32PkBf16Fp8Op) 

Scaled convert two fp8to two bf16

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.bf16.fp8` attr-dict $src `[` $srcLoHiSel `]` `,` $scale `:` type($res)

Convert two packed fp8 values in src0 to two bf16 values, multiplying by the exponent in scale. The two values to be converted are selected from the low or high half of src (a packed vector represented as an i32) on the basis of srcLoHiSel.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
srcLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of bfloat16 type values of length 2

rocdl.cvt.scalef32.pk.bf8.bf16 (ROCDL::CvtScaleF32PkBf8Bf16Op) 

Scaled convert two bf16to two bf8, updating packed vector

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.bf8.bf16` attr-dict $src0 `,` $scale `->` $oldVdst `[` $dstLoHiSel `]` `:` type($res)

Convert two bf16 values in src0 to two bf8 bytes, dividing by the exponent in scale. The bytes are packed into a 16-bit value which is inserted into oldVdst at the dstLoHiSel position, with the entire updated vector being returned.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
dstLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
oldVdstfixed-length vector of 16-bit signless integer values of length 2
src0fixed-length vector of bfloat16 type values of length 2
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit signless integer values of length 2

rocdl.cvt.scalef32.pk.bf8.f16 (ROCDL::CvtScaleF32PkBf8F16Op) 

Scaled convert two f16to two bf8, updating packed vector

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.bf8.f16` attr-dict $src0 `,` $scale `->` $oldVdst `[` $dstLoHiSel `]` `:` type($res)

Convert two f16 values in src0 to two bf8 bytes, dividing by the exponent in scale. The bytes are packed into a 16-bit value which is inserted into oldVdst at the dstLoHiSel position, with the entire updated vector being returned.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
dstLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
oldVdstfixed-length vector of 16-bit signless integer values of length 2
src0fixed-length vector of 16-bit float values of length 2
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit signless integer values of length 2

rocdl.cvt.scalef32.pk.bf8.f32 (ROCDL::CvtScaleF32PkBf8F32Op) 

Scaled convert two f32 to two bf8, updating packed vector

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.bf8.f32` attr-dict  $src0 `,` $src1 `,` $scale `->` $oldVdst `[` $dstLoHiSel `]` `:` type($res)

Convert two f32 values in src0 and src1 to two bf8 bytes, dividing by the exponent in scale. The bytes are packed into a 16-bit value which is inserted into oldVdst at the dstLoHiSel position, with the entire updated vector being returned.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
dstLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
oldVdstfixed-length vector of 16-bit signless integer values of length 2
src032-bit float
src132-bit float
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit signless integer values of length 2

rocdl.cvt.scalef32.pk.f16.bf8 (ROCDL::CvtScaleF32PkF16Bf8Op) 

Scaled convert two bf8to two f16

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.f16.bf8` attr-dict $src `[` $srcLoHiSel `]` `,` $scale `:` type($res)

Convert two packed bf8 values in src0 to two f16 values, multiplying by the exponent in scale. The two values to be converted are selected from the low or high half of src (a packed vector represented as an i32) on the basis of srcLoHiSel.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
srcLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit float values of length 2

rocdl.cvt.scalef32.pk.f16.fp4 (ROCDL::CvtScaleF32PkF16Fp4Op) 

Scale and convert two packed fp4 to packed f16

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.f16.fp4` attr-dict $src `[` $srcSelIndex `]` `,` $scale `:` type($res)

Convert two packed fp4 (f4E2M1) values stored as one byte of a 32-bit integer to packed f16, multiplying by the exponent part of scale before doing so.

The byte to convert is chosen by srcSelIndex.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit float values of length 2

rocdl.cvt.scalef32.pk.f16.fp8 (ROCDL::CvtScaleF32PkF16Fp8Op) 

Scaled convert two fp8to two f16

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.f16.fp8` attr-dict $src `[` $srcLoHiSel `]` `,` $scale `:` type($res)

Convert two packed fp8 values in src0 to two f16 values, multiplying by the exponent in scale. The two values to be converted are selected from the low or high half of src (a packed vector represented as an i32) on the basis of srcLoHiSel.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
srcLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit float values of length 2

rocdl.cvt.scalef32.pk.f32.bf8 (ROCDL::CvtScaleF32PkF32Bf8Op) 

Scaled convert two bf8to two f32

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.f32.bf8` attr-dict $src `[` $srcLoHiSel `]` `,` $scale `:` type($res)

Convert two packed bf8 values in src0 to two f32 values, multiplying by the exponent in scale. The two values to be converted are selected from the low or high half of src (a packed vector represented as an i32) on the basis of srcLoHiSel.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
srcLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit float values of length 2

rocdl.cvt.scalef32.pk.f32.fp4 (ROCDL::CvtScaleF32PkF32Fp4Op) 

Scale and convert two packed fp4 to packed f32

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.f32.fp4` attr-dict $src `[` $srcSelIndex `]` `,` $scale `:` type($res)

Convert two packed fp4 (f4E2M1) values stored as one byte of a 32-bit integer to packed f32, multiplying by the exponent part of scale before doing so.

The byte to convert is chosen by srcSelIndex.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit float values of length 2

rocdl.cvt.scalef32.pk.f32.fp8 (ROCDL::CvtScaleF32PkF32Fp8Op) 

Scaled convert two fp8to two f32

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.f32.fp8` attr-dict $src `[` $srcLoHiSel `]` `,` $scale `:` type($res)

Convert two packed fp8 values in src0 to two f32 values, multiplying by the exponent in scale. The two values to be converted are selected from the low or high half of src (a packed vector represented as an i32) on the basis of srcLoHiSel.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
srcLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
src32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit float values of length 2

rocdl.cvt.scalef32.pk.fp4.bf16 (ROCDL::CvtScaleF32PkFp4Bf16Op) 

Scale and convert two bf16 to packed fp4, updating tied vector

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.fp4.bf16` attr-dict $src `,` $scale `->` $oldVdst `[` $dstSelIndex `]` `:` type($res)

Convert two packed bf16 values to packed fp4, dividing by the exponent part of scale before doing so.

The two scaled values are packed into a byte. That byte is used to update the dstSelIndexth byte of oldVdst, which is returned in its entirity.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
oldVdst32-bit signless integer
srcfixed-length vector of bfloat16 type values of length 2
scale32-bit float

Results: 

ResultDescription
res32-bit signless integer

rocdl.cvt.scalef32.pk.fp4.f16 (ROCDL::CvtScaleF32PkFp4F16Op) 

Scale and convert two f16 to packed fp4, updating tied vector

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.fp4.f16` attr-dict $src `,` $scale `->` $oldVdst `[` $dstSelIndex `]` `:` type($res)

Convert two packed f16 values to packed fp4, dividing by the exponent part of scale before doing so.

The two scaled values are packed into a byte. That byte is used to update the dstSelIndexth byte of oldVdst, which is returned in its entirity.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
oldVdst32-bit signless integer
srcfixed-length vector of 16-bit float values of length 2
scale32-bit float

Results: 

ResultDescription
res32-bit signless integer

rocdl.cvt.scalef32.pk.fp4.f32 (ROCDL::CvtScaleF32PkFp4F32Op) 

Scale and convert two f32 values to two packed fp4, updating tied vector

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.fp4.f32` attr-dict $src0 `,` $src1 `,` $scale `->` $oldVdst `[` $dstSelIndex `]` `:` type($res)

Convert two single-precision float values, passed in src0 and src1 into two fp4 values, dividing them by the expontent part of scale before doing so.

The two scaled values are packed into a byte. That byte is used to update the dstSelIndexth byte of oldVdst, which is returned in its entirity.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
oldVdst32-bit signless integer
src032-bit float
src132-bit float
scale32-bit float

Results: 

ResultDescription
res32-bit signless integer

rocdl.cvt.scalef32.pk.fp8.bf16 (ROCDL::CvtScaleF32PkFp8Bf16Op) 

Scaled convert two bf16to two fp8, updating packed vector

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.fp8.bf16` attr-dict $src0 `,` $scale `->` $oldVdst `[` $dstLoHiSel `]` `:` type($res)

Convert two bf16 values in src0 to two fp8 bytes, dividing by the exponent in scale. The bytes are packed into a 16-bit value which is inserted into oldVdst at the dstLoHiSel position, with the entire updated vector being returned.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
dstLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
oldVdstfixed-length vector of 16-bit signless integer values of length 2
src0fixed-length vector of bfloat16 type values of length 2
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit signless integer values of length 2

rocdl.cvt.scalef32.pk.fp8.f16 (ROCDL::CvtScaleF32PkFp8F16Op) 

Scaled convert two f16to two fp8, updating packed vector

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.fp8.f16` attr-dict $src0 `,` $scale `->` $oldVdst `[` $dstLoHiSel `]` `:` type($res)

Convert two f16 values in src0 to two fp8 bytes, dividing by the exponent in scale. The bytes are packed into a 16-bit value which is inserted into oldVdst at the dstLoHiSel position, with the entire updated vector being returned.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
dstLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
oldVdstfixed-length vector of 16-bit signless integer values of length 2
src0fixed-length vector of 16-bit float values of length 2
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit signless integer values of length 2

rocdl.cvt.scalef32.pk.fp8.f32 (ROCDL::CvtScaleF32PkFp8F32Op) 

Scaled convert two f32 to two fp8, updating packed vector

Syntax:

operation ::= `rocdl.cvt.scalef32.pk.fp8.f32` attr-dict  $src0 `,` $src1 `,` $scale `->` $oldVdst `[` $dstLoHiSel `]` `:` type($res)

Convert two f32 values in src0 and src1 to two fp8 bytes, dividing by the exponent in scale. The bytes are packed into a 16-bit value which is inserted into oldVdst at the dstLoHiSel position, with the entire updated vector being returned.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
dstLoHiSel::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
oldVdstfixed-length vector of 16-bit signless integer values of length 2
src032-bit float
src132-bit float
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit signless integer values of length 2

rocdl.cvt.scalef32.pk32.bf16.bf6 (ROCDL::CvtScaleF32Pk32Bf16Bf6Op) 

Scale and convert packed bf6 to packed bf16

Syntax:

operation ::= `rocdl.cvt.scalef32.pk32.bf16.bf6` attr-dict $src `,` $scale `:` type($res)

Convert 32 packed bf6 values to packed bf16, multiplying by the exponent part of scale before doing so.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of 32-bit signless integer values of length 6
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of bfloat16 type values of length 32

rocdl.cvt.scalef32.pk32.bf16.fp6 (ROCDL::CvtScaleF32Pk32Bf16Fp6Op) 

Scale and convert packed fp6 to packed bf16

Syntax:

operation ::= `rocdl.cvt.scalef32.pk32.bf16.fp6` attr-dict $src `,` $scale `:` type($res)

Convert 32 packed fp6 values to packed bf16, multiplying by the exponent part of scale before doing so.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of 32-bit signless integer values of length 6
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of bfloat16 type values of length 32

rocdl.cvt.scalef32.pk32.bf6.bf16 (ROCDL::CvtScaleF32Pk32Bf6Bf16Op) 

Scale and convert packed bf16 to packed bf6

Syntax:

operation ::= `rocdl.cvt.scalef32.pk32.bf6.bf16` attr-dict $src `,` $scale `:` type($res)

Convert 32 packed bf16 values to packed bf6, dividing by the exponent part of scale before doing so.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of bfloat16 type values of length 32
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit signless integer values of length 6

rocdl.cvt.scalef32.pk32.bf6.f16 (ROCDL::CvtScaleF32Pk32Bf6F16Op) 

Scale and convert packed f16 to packed bf6

Syntax:

operation ::= `rocdl.cvt.scalef32.pk32.bf6.f16` attr-dict $src `,` $scale `:` type($res)

Convert 32 packed f16 values to packed bf6, dividing by the exponent part of scale before doing so.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of 16-bit float values of length 32
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit signless integer values of length 6

rocdl.cvt.scalef32.pk32.f16.bf6 (ROCDL::CvtScaleF32Pk32F16Bf6Op) 

Scale and convert packed bf6 to packed f16

Syntax:

operation ::= `rocdl.cvt.scalef32.pk32.f16.bf6` attr-dict $src `,` $scale `:` type($res)

Convert 32 packed bf6 values to packed f16, multiplying by the exponent part of scale before doing so.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of 32-bit signless integer values of length 6
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit float values of length 32

rocdl.cvt.scalef32.pk32.f16.fp6 (ROCDL::CvtScaleF32Pk32F16Fp6Op) 

Scale and convert packed fp6 to packed f16

Syntax:

operation ::= `rocdl.cvt.scalef32.pk32.f16.fp6` attr-dict $src `,` $scale `:` type($res)

Convert 32 packed fp6 values to packed f16, multiplying by the exponent part of scale before doing so.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of 32-bit signless integer values of length 6
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 16-bit float values of length 32

rocdl.cvt.scalef32.pk32.f32.bf6 (ROCDL::CvtScaleF32Pk32F32Bf6Op) 

Scale and convert packed bf6 to packed f32

Syntax:

operation ::= `rocdl.cvt.scalef32.pk32.f32.bf6` attr-dict $src `,` $scale `:` type($res)

Convert 32 packed bf6 values to packed f32, multiplying by the exponent part of scale before doing so.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of 32-bit signless integer values of length 6
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit float values of length 32

rocdl.cvt.scalef32.pk32.f32.fp6 (ROCDL::CvtScaleF32Pk32F32Fp6Op) 

Scale and convert packed fp6 to packed f32

Syntax:

operation ::= `rocdl.cvt.scalef32.pk32.f32.fp6` attr-dict $src `,` $scale `:` type($res)

Convert 32 packed fp6 values to packed f32, multiplying by the exponent part of scale before doing so.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of 32-bit signless integer values of length 6
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit float values of length 32

rocdl.cvt.scalef32.pk32.fp6.bf16 (ROCDL::CvtScaleF32Pk32Fp6Bf16Op) 

Scale and convert packed bf16 to packed fp6

Syntax:

operation ::= `rocdl.cvt.scalef32.pk32.fp6.bf16` attr-dict $src `,` $scale `:` type($res)

Convert 32 packed bf16 values to packed fp6, dividing by the exponent part of scale before doing so.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of bfloat16 type values of length 32
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit signless integer values of length 6

rocdl.cvt.scalef32.pk32.fp6.f16 (ROCDL::CvtScaleF32Pk32Fp6F16Op) 

Scale and convert packed f16 to packed fp6

Syntax:

operation ::= `rocdl.cvt.scalef32.pk32.fp6.f16` attr-dict $src `,` $scale `:` type($res)

Convert 32 packed f16 values to packed fp6, dividing by the exponent part of scale before doing so.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of 16-bit float values of length 32
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit signless integer values of length 6

rocdl.cvt.scalef32.sr.bf8.bf16 (ROCDL::CvtScaleF32SrBf8BF16Op) 

Scaled convert bf16to bf8 with stochiastic rounding, updating packed vector

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.bf8.bf16` attr-dict $src0 `,` $seed `,` $scale `->` $oldVdst `[` $dstSelIndex `]` `:` type($res)

Convert a bf16 value in src0 to a bf8 bytes, dividing by the exponent in scale and using seed for stochiastic rounding. Place the resulting byte in the dstSelIndexth bit of oldVdst and return the entire packed vector, which is stored as an i32.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
oldVdst32-bit signless integer
src0bfloat16 type
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
res32-bit signless integer

rocdl.cvt.scalef32.sr.bf8.f16 (ROCDL::CvtScaleF32SrBf8F16Op) 

Scaled convert f16to bf8 with stochiastic rounding, updating packed vector

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.bf8.f16` attr-dict $src0 `,` $seed `,` $scale `->` $oldVdst `[` $dstSelIndex `]` `:` type($res)

Convert a f16 value in src0 to a bf8 bytes, dividing by the exponent in scale and using seed for stochiastic rounding. Place the resulting byte in the dstSelIndexth bit of oldVdst and return the entire packed vector, which is stored as an i32.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
oldVdst32-bit signless integer
src016-bit float
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
res32-bit signless integer

rocdl.cvt.scalef32.sr.bf8.f32 (ROCDL::CvtScaleF32SrBf8F32Op) 

Scaled convert f32to bf8 with stochiastic rounding, updating packed vector

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.bf8.f32` attr-dict $src0 `,` $seed `,` $scale `->` $oldVdst `[` $dstSelIndex `]` `:` type($res)

Convert a f32 value in src0 to a bf8 bytes, dividing by the exponent in scale and using seed for stochiastic rounding. Place the resulting byte in the dstSelIndexth bit of oldVdst and return the entire packed vector, which is stored as an i32.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
oldVdst32-bit signless integer
src032-bit float
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
res32-bit signless integer

rocdl.cvt.scalef32.sr.fp8.bf16 (ROCDL::CvtScaleF32SrFp8BF16Op) 

Scaled convert bf16to fp8 with stochiastic rounding, updating packed vector

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.fp8.bf16` attr-dict $src0 `,` $seed `,` $scale `->` $oldVdst `[` $dstSelIndex `]` `:` type($res)

Convert a bf16 value in src0 to a fp8 bytes, dividing by the exponent in scale and using seed for stochiastic rounding. Place the resulting byte in the dstSelIndexth bit of oldVdst and return the entire packed vector, which is stored as an i32.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
oldVdst32-bit signless integer
src0bfloat16 type
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
res32-bit signless integer

rocdl.cvt.scalef32.sr.fp8.f16 (ROCDL::CvtScaleF32SrFp8F16Op) 

Scaled convert f16to fp8 with stochiastic rounding, updating packed vector

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.fp8.f16` attr-dict $src0 `,` $seed `,` $scale `->` $oldVdst `[` $dstSelIndex `]` `:` type($res)

Convert a f16 value in src0 to a fp8 bytes, dividing by the exponent in scale and using seed for stochiastic rounding. Place the resulting byte in the dstSelIndexth bit of oldVdst and return the entire packed vector, which is stored as an i32.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
oldVdst32-bit signless integer
src016-bit float
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
res32-bit signless integer

rocdl.cvt.scalef32.sr.fp8.f32 (ROCDL::CvtScaleF32SrFp8F32Op) 

Scaled convert f32to fp8 with stochiastic rounding, updating packed vector

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.fp8.f32` attr-dict $src0 `,` $seed `,` $scale `->` $oldVdst `[` $dstSelIndex `]` `:` type($res)

Convert a f32 value in src0 to a fp8 bytes, dividing by the exponent in scale and using seed for stochiastic rounding. Place the resulting byte in the dstSelIndexth bit of oldVdst and return the entire packed vector, which is stored as an i32.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
oldVdst32-bit signless integer
src032-bit float
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
res32-bit signless integer

rocdl.cvt.scalef32.sr.pk.fp4.bf16 (ROCDL::CvtScaleF32SrPkFp4Bf16Op) 

Scale and convert two bf16 to packed fp4 with stochiastic rounding, updating tied vector

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.pk.fp4.bf16` attr-dict $src `,` $seed `,` $scale `->` $oldVdst `[` $dstSelIndex `]` `:` type($res)

Convert two packed bf16 values to packed fp4, dividing by the exponent part of scale before doing so and using seed as the random seed for stochiastic rounding.

The two scaled values are packed (little-endian) into a byte. That byte is used to update the dstSelIndexth byte of oldVdst, which is returned in its entirity.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
oldVdst32-bit signless integer
srcfixed-length vector of bfloat16 type values of length 2
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
res32-bit signless integer

rocdl.cvt.scalef32.sr.pk.fp4.f16 (ROCDL::CvtScaleF32SrPkFp4F16Op) 

Scale and convert two f16 to packed fp4 with stochiastic rounding, updating tied vector

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.pk.fp4.f16` attr-dict $src `,` $seed `,` $scale `->` $oldVdst `[` $dstSelIndex `]` `:` type($res)

Convert two packed f16 values to packed fp4, dividing by the exponent part of scale before doing so and using seed as the random seed for stochiastic rounding.

The two scaled values are packed (little-endian) into a byte. That byte is used to update the dstSelIndexth byte of oldVdst, which is returned in its entirity.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
oldVdst32-bit signless integer
srcfixed-length vector of 16-bit float values of length 2
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
res32-bit signless integer

rocdl.cvt.scalef32.sr.pk.fp4.f32 (ROCDL::CvtScaleF32SrPkFp4F32Op) 

Scale and convert two f32 to packed fp4 with stochiastic rounding, updating tied vector

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.pk.fp4.f32` attr-dict $src `,` $seed `,` $scale `->` $oldVdst `[` $dstSelIndex `]` `:` type($res)

Convert two packed f32 values to packed fp4, dividing by the exponent part of scale before doing so and using seed as the random seed for stochiastic rounding.

The two scaled values are packed (little-endian) into a byte. That byte is used to update the dstSelIndexth byte of oldVdst, which is returned in its entirity.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

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

Operands: 

OperandDescription
oldVdst32-bit signless integer
srcfixed-length vector of 32-bit float values of length 2
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
res32-bit signless integer

rocdl.cvt.scalef32.sr.pk32.bf6.bf16 (ROCDL::CvtScaleF32SrPk32Bf6Bf16Op) 

Scale and convert packed bf16 to packed bf6 with stochiastic rounding

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.pk32.bf6.bf16` attr-dict $src `,` $seed `,` $scale `:` type($res)

Convert 32 packed bf16 values to packed bf6, dividing by the exponent part of scale before doing so and applying random rounding derived from seed.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of bfloat16 type values of length 32
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit signless integer values of length 6

rocdl.cvt.scalef32.sr.pk32.bf6.f16 (ROCDL::CvtScaleF32SrPk32Bf6F16Op) 

Scale and convert packed f16 to packed bf6 with stochiastic rounding

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.pk32.bf6.f16` attr-dict $src `,` $seed `,` $scale `:` type($res)

Convert 32 packed f16 values to packed bf6, dividing by the exponent part of scale before doing so and applying random rounding derived from seed.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of 16-bit float values of length 32
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit signless integer values of length 6

rocdl.cvt.scalef32.sr.pk32.bf6.f32 (ROCDL::CvtScaleF32SrPk32Bf6F32Op) 

Scale and convert packed f32 to packed bf6 with stochiastic rounding

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.pk32.bf6.f32` attr-dict $src `,` $seed `,` $scale `:` type($res)

Convert 32 packed f32 values to packed bf6, dividing by the exponent part of scale before doing so and applying random rounding derived from seed.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of 32-bit float values of length 32
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit signless integer values of length 6

rocdl.cvt.scalef32.sr.pk32.fp6.bf16 (ROCDL::CvtScaleF32SrPk32Fp6Bf16Op) 

Scale and convert packed bf16 to packed fp6 with stochiastic rounding

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.pk32.fp6.bf16` attr-dict $src `,` $seed `,` $scale `:` type($res)

Convert 32 packed bf16 values to packed fp6, dividing by the exponent part of scale before doing so and applying random rounding derived from seed.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of bfloat16 type values of length 32
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit signless integer values of length 6

rocdl.cvt.scalef32.sr.pk32.fp6.f16 (ROCDL::CvtScaleF32SrPk32Fp6F16Op) 

Scale and convert packed f16 to packed fp6 with stochiastic rounding

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.pk32.fp6.f16` attr-dict $src `,` $seed `,` $scale `:` type($res)

Convert 32 packed f16 values to packed fp6, dividing by the exponent part of scale before doing so and applying random rounding derived from seed.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of 16-bit float values of length 32
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit signless integer values of length 6

rocdl.cvt.scalef32.sr.pk32.fp6.f32 (ROCDL::CvtScaleF32SrPk32Fp6F32Op) 

Scale and convert packed f32 to packed fp6 with stochiastic rounding

Syntax:

operation ::= `rocdl.cvt.scalef32.sr.pk32.fp6.f32` attr-dict $src `,` $seed `,` $scale `:` type($res)

Convert 32 packed f32 values to packed fp6, dividing by the exponent part of scale before doing so and applying random rounding derived from seed.

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands: 

OperandDescription
srcfixed-length vector of 32-bit float values of length 32
seed32-bit signless integer
scale32-bit float

Results: 

ResultDescription
resfixed-length vector of 32-bit signless integer values of length 6

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{}

Attributes: 

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

Operands: 

OperandDescription
srcA32-bit float
srcB32-bit signless integer
old32-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{}

Attributes: 

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

Operands: 

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

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.ds.read.tr16.b64 (ROCDL::ds_read_tr16_b64) 

Syntax:

operation ::= `rocdl.ds.read.tr16.b64` $ptr attr-dict `:` type($ptr) `->` 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
ptrLLVM pointer in address space 3

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.ds.read.tr4.b64 (ROCDL::ds_read_tr4_b64) 

Syntax:

operation ::= `rocdl.ds.read.tr4.b64` $ptr attr-dict `:` type($ptr) `->` 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
ptrLLVM pointer in address space 3

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.ds.read.tr6.b96 (ROCDL::ds_read_tr6_b96) 

Syntax:

operation ::= `rocdl.ds.read.tr6.b96` $ptr attr-dict `:` type($ptr) `->` 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
ptrLLVM pointer in address space 3

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.ds.read.tr8.b64 (ROCDL::ds_read_tr8_b64) 

Syntax:

operation ::= `rocdl.ds.read.tr8.b64` $ptr attr-dict `:` type($ptr) `->` 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
ptrLLVM pointer in address space 3

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.global.load.lds (ROCDL::GlobalLoadLDSOp) 

Syntax:

operation ::= `rocdl.global.load.lds` $globalPtr `,`  $ldsPtr `,` $size `,` $offset `,` $aux
              attr-dict

Interfaces: AliasAnalysisOpInterface

Attributes: 

AttributeMLIR TypeDescription
size::mlir::IntegerAttr32-bit signless integer attribute
offset::mlir::IntegerAttr32-bit signless integer attribute
aux::mlir::IntegerAttr32-bit signless integer attribute
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
globalPtrLLVM pointer in address space 1
ldsPtrLLVM pointer in address space 3

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

Syntax:

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

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

Results: 

ResultDescription
resLLVM dialect-compatible type

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

Syntax:

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

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

Results: 

ResultDescription
resLLVM dialect-compatible type

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

Syntax:

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

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.iglp.opt (ROCDL::IglpOpt) 

Syntax:

operation ::= `rocdl.iglp.opt` $variant attr-dict

Attributes: 

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

rocdl.load.to.lds (ROCDL::LoadToLDSOp) 

Syntax:

operation ::= `rocdl.load.to.lds` $globalPtr `,`  $ldsPtr `,` $size `,` $offset `,` $aux
              attr-dict `:` type($globalPtr)

Interfaces: AliasAnalysisOpInterface

Attributes: 

AttributeMLIR TypeDescription
size::mlir::IntegerAttr32-bit signless integer attribute
offset::mlir::IntegerAttr32-bit signless integer attribute
aux::mlir::IntegerAttr32-bit signless integer attribute
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
globalPtrLLVM pointer type
ldsPtrLLVM pointer in address space 3

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 type

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.bf16 (ROCDL::mfma_f32_16x16x32_bf16) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x32.bf16` $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.f16 (ROCDL::mfma_f32_16x16x32_f16) 

Syntax:

operation ::= `rocdl.mfma.f32.16x16x32.f16` $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.bf16 (ROCDL::mfma_f32_32x32x16_bf16) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x16.bf16` $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.f16 (ROCDL::mfma_f32_32x32x16_f16) 

Syntax:

operation ::= `rocdl.mfma.f32.32x32x16.f16` $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.16x16x64.i8 (ROCDL::mfma_i32_16x16x64_i8) 

Syntax:

operation ::= `rocdl.mfma.i32.16x16x64.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.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.32x32x32.i8 (ROCDL::mfma_i32_32x32x32_i8) 

Syntax:

operation ::= `rocdl.mfma.i32.32x32x32.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.mfma.scale.f32.16x16x128.f8f6f4 (ROCDL::mfma_scale_f32_16x16x128_f8f6f4) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.mfma.scale.f32.32x32x64.f8f6f4 (ROCDL::mfma_scale_f32_32x32x64_f8f6f4) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.permlanex16 (ROCDL::PermlaneX16Op) 

Syntax:

operation ::= `rocdl.permlanex16` attr-dict $old `,` $src0 `,` $src1 `,` $src2 `,` $fi `,` $boundControl `:` type($src0) `,` type($src1)

Performs a permlanex16 operation with the given operands, applying the permutation specified by $fi to the provided inputs.

Attributes: 

AttributeMLIR TypeDescription
fi::mlir::IntegerAttr1-bit signless integer attribute
boundControl::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
oldLLVM dialect-compatible type
src0LLVM dialect-compatible type
src1LLVM dialect-compatible type
src2LLVM 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.load.lds (ROCDL::RawPtrBufferLoadLdsOp) 

Syntax:

operation ::= `rocdl.raw.ptr.buffer.load.lds` operands attr-dict

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
ldsPtrLLVM pointer in address space 3
size32-bit signless integer
voffset32-bit signless integer
soffset32-bit signless integer
offset32-bit signless integer
aux32-bit signless integer

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.readlane (ROCDL::ReadlaneOp) 

Get the value in the specific lane.

Syntax:

operation ::= `rocdl.readlane` $src0 `,` $src1  attr-dict `:` `(` type($src0) `,` type($src1) `)` `->` type($res)

Get the value in lane src1 from input src0.

Operands: 

OperandDescription
src0LLVM dialect-compatible type
src132-bit signless integer

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.s.barrier (ROCDL::SBarrierOp) 

Syntax:

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

rocdl.s.barrier.signal (ROCDL::BarrierSignalOp) 

Syntax:

operation ::= `rocdl.s.barrier.signal` $id attr-dict

Attributes: 

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

rocdl.s.barrier.wait (ROCDL::BarrierWaitOp) 

Syntax:

operation ::= `rocdl.s.barrier.wait` $id attr-dict

Attributes: 

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

rocdl.s.setprio (ROCDL::SetPrioOp) 

Syntax:

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

Attributes: 

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

rocdl.s.wait.dscnt (ROCDL::WaitDscntOp) 

Syntax:

operation ::= `rocdl.s.wait.dscnt` $id attr-dict

Attributes: 

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

rocdl.s.waitcnt (ROCDL::SWaitcntOp) 

Syntax:

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

Attributes: 

AttributeMLIR TypeDescription
bitfield::mlir::IntegerAttr32-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.sched.group.barrier (ROCDL::SchedGroupBarrier) 

Syntax:

operation ::= `rocdl.sched.group.barrier` $mask `,` $size `,` $groupId attr-dict

Attributes: 

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

rocdl.smfmac.f32.16x16x32.bf16 (ROCDL::smfmac_f32_16x16x32_bf16) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.f32.16x16x32.f16 (ROCDL::smfmac_f32_16x16x32_f16) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.f32.16x16x64.bf8.bf8 (ROCDL::smfmac_f32_16x16x64_bf8_bf8) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.f32.16x16x64.bf8.fp8 (ROCDL::smfmac_f32_16x16x64_bf8_fp8) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.f32.16x16x64.fp8.bf8 (ROCDL::smfmac_f32_16x16x64_fp8_bf8) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.f32.16x16x64.fp8.fp8 (ROCDL::smfmac_f32_16x16x64_fp8_fp8) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.f32.32x32x16.bf16 (ROCDL::smfmac_f32_32x32x16_bf16) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.f32.32x32x16.f16 (ROCDL::smfmac_f32_32x32x16_f16) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.f32.32x32x32.bf8.bf8 (ROCDL::smfmac_f32_32x32x32_bf8_bf8) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.f32.32x32x32.bf8.fp8 (ROCDL::smfmac_f32_32x32x32_bf8_fp8) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.f32.32x32x32.fp8.bf8 (ROCDL::smfmac_f32_32x32x32_fp8_bf8) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.f32.32x32x32.fp8.fp8 (ROCDL::smfmac_f32_32x32x32_fp8_fp8) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.i32.16x16x64.i8 (ROCDL::smfmac_i32_16x16x64_i8) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.smfmac.i32.32x32x32.i8 (ROCDL::smfmac_i32_32x32x32_i8) 

Syntax:

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

Operands: 

OperandDescription
argsvariadic of LLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.update.dpp (ROCDL::DPPUpdateOp) 

Syntax:

operation ::= `rocdl.update.dpp` attr-dict $old `,` $src `with` $dppCtrl `,` $rowMask `,` $bankMask `,` $boundCtrl `:` type($src)

Attributes: 

AttributeMLIR TypeDescription
dppCtrl::mlir::IntegerAttr32-bit signless integer attribute
rowMask::mlir::IntegerAttr32-bit signless integer attribute
bankMask::mlir::IntegerAttr32-bit signless integer attribute
boundCtrl::mlir::IntegerAttr1-bit signless integer attribute

Operands: 

OperandDescription
oldLLVM dialect-compatible type
srcLLVM dialect-compatible type

Results: 

ResultDescription
resLLVM dialect-compatible type

rocdl.wavefrontsize (ROCDL::WavefrontSizeOp) 

Syntax:

operation ::= `rocdl.wavefrontsize` (`range` $range^)? attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

Results: 

ResultDescription
resLLVM dialect-compatible type

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.bf8_bf8 (ROCDL::wmma_f32_16x16x16_bf8_bf8) 

Syntax:

operation ::= `rocdl.wmma.f32.16x16x16.bf8_bf8` $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.bf8_fp8 (ROCDL::wmma_f32_16x16x16_bf8_fp8) 

Syntax:

operation ::= `rocdl.wmma.f32.16x16x16.bf8_fp8` $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.f32.16x16x16.fp8_bf8 (ROCDL::wmma_f32_16x16x16_fp8_bf8) 

Syntax:

operation ::= `rocdl.wmma.f32.16x16x16.fp8_bf8` $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.fp8_fp8 (ROCDL::wmma_f32_16x16x16_fp8_fp8) 

Syntax:

operation ::= `rocdl.wmma.f32.16x16x16.fp8_fp8` $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.wmma.i32.16x16x32.iu4 (ROCDL::wmma_i32_16x16x32_iu4) 

Syntax:

operation ::= `rocdl.wmma.i32.16x16x32.iu4` $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` (`range` $range^)? attr-dict `:` type($res)

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

Results: 

ResultDescription
resLLVM dialect-compatible type

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

Syntax:

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

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

Results: 

ResultDescription
resLLVM dialect-compatible type

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

Syntax:

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

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

Results: 

ResultDescription
resLLVM dialect-compatible type

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

Syntax:

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

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

Results: 

ResultDescription
resLLVM dialect-compatible type

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

Syntax:

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

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

Results: 

ResultDescription
resLLVM dialect-compatible type

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

Syntax:

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

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

Results: 

ResultDescription
resLLVM dialect-compatible type

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

Syntax:

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

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

Results: 

ResultDescription
resLLVM dialect-compatible type

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

Syntax:

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

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

Results: 

ResultDescription
resLLVM dialect-compatible type

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

Syntax:

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

Traits: AlwaysSpeculatableImplTrait

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes: 

AttributeMLIR TypeDescription
range::mlir::LLVM::ConstantRangeAttr
A range of two integers, corresponding to LLVM's ConstantRange
A pair of two integers, mapping to the ConstantRange structure in LLVM IR,
which is allowed to wrap or be empty.

The range represented is [Lower, Upper), and is either signed or unsigned depending on context.

lower and upper must have the same width.

Syntax:

`&lt;` `i`(width($lower)) $lower `,` $upper `&gt;`

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.