Fill CUDA Cast operator opset gap: extend registration from opset 23 to 25 (#27744)
### Description
Extends CUDA Cast kernel registration to cover opset 25 (latest ONNX
spec). The existing non-versioned opset 23 registration is capped to
VERSIONED (23, 24), and a new non-versioned opset 25 registration is
added for all type specializations.
**`cast_op.cc`**:
- `REGISTER_KERNEL_TYPED(T)`: opset 23 → VERSIONED (23, 24), added
non-versioned opset 25
- Renamed `REGISTER_KERNEL_TYPED_23` → `REGISTER_KERNEL_TYPED_23_TO_24`
(VERSIONED)
- Added `REGISTER_KERNEL_TYPED_25` macro (non-versioned)
- Renamed `SPECIALIZE_IMPL_19_TO_23` → `SPECIALIZE_IMPL_19_TO_25`,
covering Float8 types through opset 25
- Updated Float4E2M1x2 registration to use new versioned/non-versioned
macros
**`cuda_execution_provider.cc`**:
- Forward declarations: all opset 23 Cast entries → VERSIONED (23, 24),
added opset 25 non-versioned entries (all 16 types: 13 standard + 2
Float8 + 1 Float4)
- `BuildKernelCreateInfo`: same pattern — capped 23 to (23, 24), added
opset 25 block
### Motivation and Context
CUDA Cast operator was registered up to opset 23, but ONNX spec defines
Cast through opset 25. This gap can cause kernel lookup failures when
running models exported at opset 25. Part of the broader CUDA opset
gap-filling effort tracked in #27729.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: tianleiwu <30328909+tianleiwu@users.noreply.github.com>
Co-authored-by: Tianlei Wu <tlwu@microsoft.com>
Co-authored-by: Copilot <copilot@github.com>