# TPU v4 BCS 指令索引

登记 112 个非 Noop 槽内形式（S0 57 个、S1 55 个），共 66 种非 Noop operation；空槽用省略该槽或空 bundle 表示。这里的覆盖是编码与解码覆盖，不是设备执行覆盖。

使用 `.target tpu-v4-bcs` 和 `{ s0: mnemonic operands ; s1: mnemonic operands }`。表中 `s[0..31]`、`u32` 等是类型说明，不能照抄为源码。谓词前缀使用 `@p0..@p14` 或 `@!p0..@!p14`。目的字段的硬件位宽不证明全部编号都可用。

ScalarY 数字按 32-bit 位型编码；内置 selector 写作 `sy.NAME`，名称来自当前 descriptor，不将其自动改写为推测的常量值。浮点 ALU 的立即数也使用位型。`smov` 同时接受寄存器与数值；`ssub.s32` / `ssub.f32` 的源顺序是 Y、X，其余二源 ALU 是 X、Y。完整规则见 [BCS 使用与互操作](tpu_v4_bcs.md)。

DMA 使用具名字段；所有列出的字段均须给出，顺序可变。目标端的 outfeed queue 与 memory/core ID 共享物理位，必须一致。字段枚举只选择编码；地址域、allocation、completion 和生命周期由 runtime 管理。

## s0

| 助记符 | 操作数 |
|---|---|
| `dma.general` | `source_address=(s[0..31]), length=(s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80), dest_address=(s[0..31]), stride_descriptor=(s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80), stride_count=(u2), source_sync_flag=(s[0..31]), dest_sync_flag=(s[0..31]), ici_dest=(s[0..31]), source_memory_id=(vmem / smem / imem / vimem), source_core_id=(reserved_self / non_core / tensor_core_0 / tensor_core_1 / barna_core_0 / barna_core_1 / barna_core_2 / barna_core_3), src_opcode=(read / instruction_memset / data_memset), dma_type_0=(local / chip2host), destination_memory_id=(vmem / smem / imem / vimem), destination_core_id=(reserved_self / non_core / tensor_core_0 / tensor_core_1 / barna_core_0 / barna_core_1 / barna_core_2 / barna_core_3), outfeed_queue_id=(u5), destination_opcode=(write / write_special_0 / write_special_1), trace=(u1)` |
| `dma.simple` | `source_address=(s[0..31]), length=(s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80), dest_address=(s[0..31]), dest_sync_flag=(s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80), source_memory_id=(vmem / smem / imem / vimem), source_core_id=(reserved_self / non_core / tensor_core_0 / tensor_core_1 / barna_core_0 / barna_core_1 / barna_core_2 / barna_core_3), src_opcode=(read / instruction_memset / data_memset), dma_type_0=(local / chip2host), destination_memory_id=(vmem / smem / imem / vimem), destination_core_id=(reserved_self / non_core / tensor_core_0 / tensor_core_1 / barna_core_0 / barna_core_1 / barna_core_2 / barna_core_3), outfeed_queue_id=(u5), destination_opcode=(write / write_special_0 / write_special_1), trace=(u1)` |
| `dma.strided` | `source_address=(s[0..31]), length=(s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80), dest_address=(s[0..31]), dest_sync_flag=(s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80), source_stride=(s[0..31]), dest_stride=(s[0..31]), elements_per_stride=(s[0..31]), source_memory_id=(vmem / smem / imem / vimem), source_core_id=(reserved_self / non_core / tensor_core_0 / tensor_core_1 / barna_core_0 / barna_core_1 / barna_core_2 / barna_core_3), src_opcode=(read / instruction_memset / data_memset), dma_type_0=(local / chip2host), destination_memory_id=(vmem / smem / imem / vimem), destination_core_id=(reserved_self / non_core / tensor_core_0 / tensor_core_1 / barna_core_0 / barna_core_1 / barna_core_2 / barna_core_3), outfeed_queue_id=(u5), destination_opcode=(write / write_special_0 / write_special_1), trace=(u1)` |
| `interrupt` | `无操作数` |
| `issue.fsm` | `dma_request / remote_scalar_write / global_scatter_ids / local_gather / sparse_reduce / global_scatter_gradients / local_scatter_gradients / allocate_remote_buffer, s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `por` | `p[0..31], p[0..14] / !p[0..14] / 1 / 0, p[0..14] / !p[0..14] / 1 / 0` |
| `sadd.carry` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sadd.s32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sand.u32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sbr.abs` | `label / u16` |
| `sbr.reg` | `s[0..31]` |
| `sbr.rel` | `label / i16` |
| `scall.abs` | `s[0..31], label / u16` |
| `scall.reg` | `s[0..31], s[0..31]` |
| `scall.rel` | `s[0..31], label / i16` |
| `sclz` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.eq.f32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.eq.s32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.ge.f32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.ge.s32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.gt.f32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.gt.s32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.le.f32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.le.s32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.lt.f32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.lt.s32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.ne.f32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.ne.s32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sdelay` | `u11` |
| `sfence` | `s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sftoi` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `shalt` | `无操作数` |
| `sisinf_or_nan` | `p[0..31], s[0..31]` |
| `sitofp` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `smax.f32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `smin.f32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `smov` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `smul.f32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `smul.u32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sor.u32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `spop.hmf` | `s[0..31]` |
| `srdreg` | `s[0..31], lcc0 / lcc1 / gtc0 / gtc1 / tag_register / tracemark_register / fsr / hdr` |
| `ssettag` | `s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `ssettracemark` | `s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sshll.u32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sshra.s32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sshrl.u32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `ssub.s32` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80, s[0..31]` |
| `ssyncadd.s32` | `s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80, s[0..31]` |
| `swait.done` | `s[0..31]` |
| `swait.eq` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `swait.ge` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `swait.gt` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `swait.lt` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `swait.ne` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sxor.u32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `trace` | `s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |

## s1

| 助记符 | 操作数 |
|---|---|
| `interrupt` | `无操作数` |
| `issue.fsm` | `dma_request / remote_scalar_write / global_scatter_ids / local_gather / sparse_reduce / global_scatter_gradients / local_scatter_gradients / allocate_remote_buffer, s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `por` | `p[0..31], p[0..14] / !p[0..14] / 1 / 0, p[0..14] / !p[0..14] / 1 / 0` |
| `sadd.carry` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sadd.f32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sadd.s32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sand.u32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sclz` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.eq.f32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.eq.s32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.ge.f32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.ge.s32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.gt.f32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.gt.s32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.le.f32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.le.s32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.lt.f32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.lt.s32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.ne.f32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `scmp.ne.s32` | `p[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sdelay` | `u11` |
| `sdone.read` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sdone.write` | `s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80, s[0..31]` |
| `sfence` | `s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sftoi` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `shalt` | `无操作数` |
| `sisinf_or_nan` | `p[0..31], s[0..31]` |
| `sitofp` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sld` | `s[0..31], [smem:(s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80)]` |
| `sld.offset` | `s[0..31], [smem:(s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80)], s[0..31]` |
| `smax.f32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `smin.f32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `smov` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sor.u32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `spop.hmf` | `s[0..31]` |
| `spublic.read` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `spublic.write` | `s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80, s[0..31]` |
| `srdreg` | `s[0..31], lcc0 / lcc1 / gtc0 / gtc1 / tag_register / tracemark_register / fsr / hdr` |
| `ssettag` | `s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `ssettracemark` | `s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sshll.u32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sshra.s32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sshrl.u32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sst` | `[smem:(s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80)], s[0..31]` |
| `ssub.f32` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80, s[0..31]` |
| `ssub.s32` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80, s[0..31]` |
| `ssyncadd.s32` | `s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80, s[0..31]` |
| `swait.done` | `s[0..31]` |
| `swait.eq` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `swait.ge` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `swait.gt` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `swait.lt` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `swait.ne` | `s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `sxor.u32` | `s[0..31], s[0..31], s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
| `trace` | `s[0..31] / u32 / sy.hex_100 / sy.negative_one / sy.zero / sy.one / sy.two / sy.three / sy.four / sy.five / sy.six / sy.seven / sy.eight / sy.hex_10 / sy.hex_18 / sy.hex_20 / sy.hex_30 / sy.hex_40 / sy.hex_60 / sy.hex_80` |
