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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions