Skip to content

StableHLO converter: missing ops RoPE, groupNorm, upsample/interpolate (gaps remaining after #666) #751

Description

@michalharakal

Summary

Issue #666 (closed COMPLETED 2026-06-06) tracked, among other things, "RoPE/groupNorm/upsample have no op." As of 0.31.2, three of those converter ops are still missing — a GraphNode with any of these operation names falls through NeuralNetOperationsConverter / ActivationOperationsConverter to the "Operation not supported" path and never lowers to StableHLO.

Evidence (0.31.2)

The combined supportedOperations across the HLO converters contains no entry for rope/rotary, groupNorm, or upsample/interpolate:

... batchNorm layerNorm rmsNorm silu swish embedding scaledDotProductAttention
    conv1d conv2d maxPool2d avgPool2d gather reshape transpose ... (no rope/groupNorm/upsample)

Downstream, the skainet-iree-conformance harness records these as ❌ "no converter op" in its capability matrix; RoPE/GroupNorm/upsample are the only remaining hard gaps now that LayerNorm/RMSNorm/BatchNorm/SiLU/Embedding all lower end-to-end and validate on IREE.

Missing ops

Op Difficulty Lowering sketch
groupNorm low reshape (N,C,*)→(N,G,M), per-group mean/var (reuse @reduce_mean/@reduce_variance as LayerNorm does), reshape back, per-channel affine. Addressed by the PR linked below.
upsample / interpolate (nearest) medium integer-factor nearest-neighbour via broadcast_in_dim + reshape; bilinear needs gather/weighting.
RoPE (rotary position embedding) high even/odd split (needs reshape — now fixed), per-position cos/sin tables, rotate-and-recombine. cos/sin should be materialised as constants (not externalised as un-fed args).

Proposed plan

  1. groupNorm — implement now (sibling of the existing LayerNorm decomposition). PR incoming.
  2. upsample (nearest) — follow-up.
  3. RoPE — follow-up; the largest piece, needs a design note on the cos/sin source.

Filing this so the remaining gaps are tracked explicitly rather than under the now-closed #666.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions