Supported ONNX Operators

Supported ONNX Operators#

2025-11-11

10 min read time

Applies to Linux

MIGraphX supports operators up to Opset 19. Latest information of ONNX operators can be found in the ONNX GitHub repository.

MIGraphX supports the following ONNX data types: BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FLOAT8, FLOAT16, FLOAT32, and DOUBLE

Note

FP8 support is only for E4M3FNUZ, see Float stored in 8 bits in the ONNX documentation.

See below for the support matrix of ONNX operators in MIGraphX.

Note

The listed supported types are taken from the ONNX specification. An operator might support other additional datatypes.

Operator Support Matrix#

Operator

Supported

Supported Types

Limitations

Abs

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Acos

✅

FP8, FP16, FP32, FP64

Acosh

✅

FP8, FP16, FP32, FP64

Add

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

And

✅

BOOL

ArgMax

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

ArgMin

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Asin

✅

FP8, FP16, FP32, FP64

Asinh

✅

FP8, FP16, FP32, FP64

Atan

✅

FP8, FP16, FP32, FP64

Atanh

✅

FP8, FP16, FP32, FP64

AveragePool

✅

FP8, FP16, FP32, FP64

BatchNormalization

✅

FP8, FP16, FP32, FP64

BiasGelu

✅

FP8, FP16, FP32, FP64

Bernoulli

❌

BitShift

❌

BitwiseAnd

❌

BitwiseNot

❌

BitwiseOr

❌

BitwiseXor

❌

BlackmanWindow

❌

Cast

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP16, FP32, FP64

saturate not supported

CastLike

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP16, FP32, FP64

saturate not supported

Ceil

✅

FP8, FP16, FP32, FP64

Celu

✅

FP32

CenterCropPad

❌

Clip

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Col2Im

❌

Compress

❌

Concat

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

ConcatFromSequence

❌

Constant

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

ConstantOfShape

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP16, FP32, FP64

dynamic shape is not supported

Conv

✅

FP8, FP16, FP32, FP64

ConvInteger

✅

INT8

ConvTranspose

✅

FP8, FP16, FP32, FP64

auto padding not supported, output_padding math differs

Cos

✅

FP8, FP16, FP32, FP64

Cosh

✅

FP8, FP16, FP32, FP64

CumSum

✅

UINT32, UINT64, INT32, INT64, FP8, FP16, FP32, FP64

axis dynamic shape is not supported

DFT

❌

DeformConv

❌

DepthToSpace

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

DequantizeLinear

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Det

❌

Div

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Dropout

✅

Any

Changed to identity

DynamicQuantizeLinear

✅

FP8, FP16, FP32, FP64

uint8 quantization only, dynamic shape is not supported

Einsum

✅

Any

more than 1 diagonal per input is not supported e.g. iijj->ij

batch diagonal where batches are not the leading dims is not supported e.g. ii...->i...

Elu

✅

FP8, FP16, FP32, FP64

Equal

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Erf

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Exp

✅

FP8, FP16, FP32, FP64

Expand

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

dynamic shape is not supported

EyeLike

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

FastGelu

✅

FP8, FP16, FP32

Flatten

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Floor

✅

FP8, FP16, FP32, FP64

Gather

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

GatherElements

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

GatherND

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Gelu

✅

FP8, FP16, FP32, FP64

Gemm

✅

UINT32, UINT64, INT32, INT64, FP8, FP16, FP32, FP64

GlobalAveragePool

✅

FP8, FP16, FP32, FP64

GlobalLpPool

✅

FP8, FP16, FP32, FP64

GlobalMaxPool

✅

FP8, FP16, FP32, FP64

Greater

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

GreaterOrEqual

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

GridSample

✅

UINT32, UINT64, INT32, INT64, FP16, FP32, FP64

5-D inputs not supported

GroupNormalization

✅

FP8, FP16, FP32, FP64

stash_type not supported

GRU

✅

FP8, FP16, FP32, FP64

Affine, ThresholdRelu, ScaledTanh, HardSigmoid, Softsign, Softplus optional activation functions are not enabled

HammingWindow

❌

HannWindow

❌

HardSigmoid

✅

FP8, FP16, FP32, FP64

HardSwish

✅

FP8, FP16, FP32, FP64

Hardmax

✅

FP8, FP16, FP32, FP64

Identity

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

identity, sequence datatypes are not supported

If

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

identity, sequence datatypes are not supported

InstanceNormalization

✅

FP16, FP32, FP64

IsInf

✅

FP8, FP16, FP32, FP64

IsNaN

✅

FP8, FP16, FP32, FP64

LayerNormalization

✅

FP8, FP16, FP32, FP64

stash_type not supported

LeakyRelu

✅

FP8, FP16, FP32, FP64

Less

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

LessOrEqual

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Log

✅

FP8, FP16, FP32, FP64

LogSoftmax

✅

FP8, FP16, FP32, FP64

Loop

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

identity, sequence datatypes are not supported, max_iteration has upper-bound

LRN

✅

FP8, FP16, FP32, FP64

LSTM

✅

FP32, FP16

Affine, ThresholdRelu, ScaledTanh, HardSigmoid, Softsign, Softplus optional activation functions are not enabled

LpNormalization

✅

FP8, FP16, FP32, FP64

LpPool

✅

FP32, FP16, FP8, INT8

lpnorm not supported pooling mode on GPU (MIOpen limitation)

MatMul

✅

UINT32, UINT64, INT32, INT64, FP8, FP16, FP32, FP64

MatMulInteger

✅

UINT8, INT8

dynamic shape is not supported

Max

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

MaxPool

✅

FP32, FP16, FP8, INT8

storage_order not supported, dialtion is partially supported on GPU (MIOpen limitation), indices 2nd ouput not supported

MaxRoiPool

❌

MaxUnpool

❌

Mean

✅

FP8, FP16, FP32, FP64

MeanVarian ceNormalization

✅

FP8, FP16, FP32, FP64

MelWeightMatrix

❌

Min

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Mish

❌

Mod

✅

UINT8, UINT16, UINT32, UINT64, INT16, INT64, FP8, FP16, FP32, FP64

int8, int32 issue on GPU

Mul

✅

UINT8, UINT16, UINT32, UINT64, INT16, INT64, FP8, FP16, FP32, FP64

Multinomial

✅

FP8, FP16, FP32, FP64

Neg

✅

INT8, INT32, INT64, FP8, FP16, FP32, FP64

NegativeLogLikelihoodLoss

❌

NonMaxSuppression

✅

FP8, FP16, FP32, FP64

fixed output size unless use_dyn_output set

NonZero

✅

FP8, FP16, FP32, FP64

fixed output size unless use_dyn_output set

Not

✅

BOOL

OneHot

✅

UINT8, UINT16, UINT32, UINT64, INT16, INT64, FP8, FP16, FP32, FP64

dynamic shape is not supported

Optional

❌

OptionalGetElement

❌

OptionalHasElement

❌

Or

✅

BOOL

Pad

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

edge, warp padding not supported, pads must be constant

Pow

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

PRelu

✅

UINT32, UINT64, INT32, INT64, FP8, FP16, FP32, FP64

QLinearAdd

✅

UINT8, INT8

QLinearAveragePool

✅

UINT8, INT8

QLinearConcat

✅

UINT8, INT8

QLinearConv

✅

UINT8, INT8

QLinearGlobalAveragePool

✅

UINT8, INT8

QLinearLeakyRelu

✅

UINT8, INT8

QLinearMatMul

✅

UINT8, INT8

non-scalar inputs are not supported

QLinearMul

✅

UINT8, INT8

QLinearSigmoid

✅

UINT8, INT8

QuantizeLinear

✅

FP8, FP16, FP32, INT32

saturate is not supported

RandomNormal

✅

FP16, FP32, FP64

RandomNormalLike

✅

FP16, FP32, FP64

RandomUniform

✅

FP16, FP32, FP64

RandomUniformLike

✅

FP16, FP32, FP64

Range

✅

FP16, FP32, FP64, INT16, INT32, INT64

start, end, delta dynamic shape is not supported

Reciprocal

✅

FP8, FP16, FP32, FP64

ReduceL1

✅

FP16, FP32, FP64, UINT32, UINT64, INT32, INT64

axes dynamic shape is not supported

ReduceL2

✅

FP16, FP32, FP64, UINT32, UINT64, INT32, INT64

axes dynamic shape is not supported

ReduceLogSum

✅

FP16, FP32, FP64, UINT32, UINT64, INT32, INT64

axes dynamic shape is not supported

ReduceLogSumExp

✅

FP16, FP32, FP64, UINT32, UINT64, INT32, INT64

axes dynamic shape is not supported

ReduceMax

✅

FP16, FP32, FP64, UINT32, UINT64, INT32, INT64

axes dynamic shape is not supported

ReduceMean

✅

FP16, FP32, FP64, UINT32, UINT64, INT32, INT64

axes dynamic shape is not supported

ReduceMin

✅

FP16, FP32, FP64, UINT32, UINT64, INT32, INT64

axes dynamic shape is not supported

ReduceProd

✅

FP16, FP32, FP64, UINT32, UINT64, INT32, INT64

axes dynamic shape is not supported

ReduceSum

✅

FP16, FP32, FP64, UINT32, UINT64, INT32, INT64

axes dynamic shape is not supported

ReduceSumSquare

✅

FP16, FP32, FP64, UINT32, UINT64, INT32, INT64

axes dynamic shape is not supported

Relu

✅

FP16, FP32, FP64, INT8, INT16, INT32, INT64

Reshape

✅

FP32, FP16, INT32, INT64, FP8, INT8, BOOL

allowzero not supported, dynamic shape is not supported

Resize

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

cubic, half_pixel_symmetric, tf_crop_and_resize not supported, linear mode not supported for non-constant inputs, exclude_outside 1 is not supported, antialias, extrapolation_value, keep_aspect_ratio_policy not supported

ReverseSequence

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

variable sequence_lens is not supported

RNN

✅

FP32, FP16

Affine, ThresholdRelu, ScaledTanh, HardSigmoid, Softsign, Softplus optional activation functions are not enabled

RoiAlign

✅

FP8, FP16, FP32, FP64

Round

✅

FP8, FP16, FP32, FP64

STFT

❌

Scan

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

identity, sequence datatypes are not supported, Number of iterations has upper-bound Version 8 not supported

Scatter (deprecated)

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

ScatterElements

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

ScatterND

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Selu

✅

FP8, FP16, FP32, FP64

SequenceAt

❌

SequenceConstruct

❌

SequenceEmpty

❌

SequenceErase

❌

SequenceInsert

❌

SequenceLength

❌

SequenceMap

❌

Shape

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Shrink

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Sigmoid

✅

FP8, FP16, FP32, FP64

Sign

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Sin

✅

FP8, FP16, FP32, FP64

Sinh

✅

FP8, FP16, FP32, FP64

Size

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Slice

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

variable inputs are not supported

Softmax

✅

FP8, FP16, FP32, FP64

SoftmaxCrossEntropyLoss

❌

Softplus

✅

FP8, FP16, FP32, FP64

Softsign

✅

FP8, FP16, FP32, FP64

SpaceToDepth

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Split

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

dynamic shape is not supported

SplitToSequence

❌

Sqrt

✅

FP8, FP16, FP32, FP64

Squeeze

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

variable axes is not supported

StringNormalizer

❌

Sub

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Sum

✅

FP8, FP16, FP32, FP64

Tan

✅

FP8, FP16, FP32, FP64

Tanh

✅

FP8, FP16, FP32, FP64

TfIdfVectorizer

❌

ThresholdedRelu

✅

FP8, FP16, FP32, FP64

Tile

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

dynamic shape is not supported

TopK

✅

UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

dynamic k is not supported, sorted is not supported

Transpose

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Trilu

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

dynamic k is not supported

Unique

✅

Any

only axis = 0 is supported

Unsqueeze

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

variable axes is not supported

Upsample (deprecated)

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

Where

✅

BOOL, UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64, FP8, FP16, FP32, FP64

mixed static and dynamic shape inputs are not supported

Xor

✅

BOOL