diff --git a/dnn-providers/hip-kernel-provider/rocke/TESTING.md b/dnn-providers/hip-kernel-provider/rocke/TESTING.md index c3595b718b23..fd80c8847dc3 100644 --- a/dnn-providers/hip-kernel-provider/rocke/TESTING.md +++ b/dnn-providers/hip-kernel-provider/rocke/TESTING.md @@ -324,6 +324,42 @@ Key semantics: ([`fuzz_diff.py`](platform/tests/instances/differential/fuzz_diff.py)) feeds the differential oracle with generated `(spec, arch)` inputs rather than a fixed list. +### 4.4 Is the emitted IR legal? (the toolchain gate) + +§4.2 and §4.3 both compare rocKE's output against *another copy of rocKE's +output* — a golden sha, or the other engine. Neither asks the AMDGPU toolchain +whether the IR is valid at all, so an illegal construct that is emitted stably +and by both engines is green in both. The **emitted-IR validity gate**, +[`check_ir_validity.py`](platform/tools/check_ir_validity.py), asks the external +question: it lowers every case in the representative corpus +([`rocke_ir_parity_harness.cases()`](platform/tests/instances/rocke_ir_parity_harness.py), +the same corpus §4.2 hashes) and pushes each module through `clang` to a linked +hsaco. + +Three design points, each of them load-bearing: + +- **The oracle is a LINK, not a verify and not a codegen.** A `declare` for an + intrinsic that does not exist passes `opt -passes=verify`, *and* passes + `clang -S` — the backend silently treats the unknown `llvm.*` name as an + ordinary external function and emits a GOT-relative call. The undefined symbol + appears only when the relocatable is linked. Stopping anywhere earlier makes + the gate blind to the whole *fictional-intrinsic* bug class. +- **Every compile is a subprocess.** A backend failure is a + `report_fatal_error`, not an exception: it takes the process down. Compiling + in-process (via comgr, which is otherwise faster) means one bad module kills + the run and emits no report. The isolation is a correctness requirement, and + it makes the per-module diagnostic free. +- **Only the host's own LLVM flavor can be validated.** Modules lower at any + flavor, but there is no local compiler for the others; those report + `UNVALIDATED`, never green. On a host with no LLVM tools at all the gate + self-skips loudly — pass `--strict` to make that a failure instead. + +Failures that are known and owned live in a `KNOWN_BAD` allowlist, same +convention and same rule as `KNOWN_VIOLATIONS` in +[`test_library_layering.py`](library/tests/test_library_layering.py): **it only +shrinks.** An entry that starts compiling is itself reported as a failure, so a +fix cannot leave dead weight behind. + --- ## 5. Execution tiers & gating @@ -332,13 +368,13 @@ Four distinct things run here; **do not conflate them**: | Tier | What | Gated? | |---|---|---| -| **1. Gate** | relative-path guard → byte-identity gate → pytest (`platform/tests`) → ctest | ✅ blocking | +| **1. Gate** | relative-path guard → byte-identity gate → emitted-IR validity gate → pytest (`platform/tests`) → ctest | ✅ blocking | | **2. Diagnostics** | IR-canonical diff, fuzz diff, per-config golden check | ❌ opt-in | | **3. GPU / numeric** | reference-oracle kernel-correctness lanes | ❌ skipped off-device | | **4. Manual demos/tools** | hand-compiled CLIs / demos | ❌ | **Two entrypoints with different environments and selection.** [`run_all.py`](platform/tests/run_all.py) is -the **developer** runner (guard → gate → pytest → ctest). **CI does not run +the **developer** runner (guard → gate → IR validity → pytest → ctest). **CI does not run `run_all.py`** — it runs **ctest** against the installed artifact, after the component script installs the packaged wheels. Its registered pytest entries include the platform suite diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/CMakeLists.txt b/dnn-providers/hip-kernel-provider/rocke/platform/CMakeLists.txt index 1ec5d0f77825..abeeafeb8ecb 100644 --- a/dnn-providers/hip-kernel-provider/rocke/platform/CMakeLists.txt +++ b/dnn-providers/hip-kernel-provider/rocke/platform/CMakeLists.txt @@ -391,7 +391,10 @@ if(ROCKE_INSTALL_TESTS) # Install the full pytest suite for installed/artifact test execution. # Excludes: C/C++ parity emitters (compiled against rocke_core at build time), # the differential harness (needs compiler + source), the WaveScope sidecar - # and LDS analyzer tests (load tools from the adjacent dsl_docs source tree). + # and LDS analyzer tests (load tools from the adjacent dsl_docs source tree), + # and the arch-domain artifact gate (imports tools/gen_arch_domain.py, which + # is not installed -- and an unresolvable import is a collection error that + # aborts the whole installed pytest session, not one skipped test). # Include run_all.py: installed runner unit tests import it as a dependency. # cmake-lint: disable=E1122 block() @@ -403,7 +406,8 @@ if(ROCKE_INSTALL_TESTS) PATTERN "*.cpp" EXCLUDE PATTERN "differential" EXCLUDE PATTERN "test_wavescope_sidecar.py" EXCLUDE - PATTERN "test_lds_analyzer.py" EXCLUDE) + PATTERN "test_lds_analyzer.py" EXCLUDE + PATTERN "test_arch_domain_artifact.py" EXCLUDE) endblock() diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/cpp/core/lower_llvm/data.cpp b/dnn-providers/hip-kernel-provider/rocke/platform/cpp/core/lower_llvm/data.cpp index 007887954a5f..cf835733e6fd 100644 --- a/dnn-providers/hip-kernel-provider/rocke/platform/cpp/core/lower_llvm/data.cpp +++ b/dnn-providers/hip-kernel-provider/rocke/platform/cpp/core/lower_llvm/data.cpp @@ -277,9 +277,6 @@ const rocke_ll_decl_t ROCKE_LL_INTRINSIC_DECLS[] = { {"update.dpp.i32", "declare i32 @llvm.amdgcn.update.dpp.i32(i32, i32, i32 immarg, i32 immarg, i32 immarg, i1 " "immarg)"}, - {"global.atomic.fadd.v2bf16", - "declare <2 x bfloat> @llvm.amdgcn.global.atomic.fadd.v2bf16.p1(" - "ptr addrspace(1), <2 x bfloat>)"}, {"global.atomic.fadd.v2f16", "declare <2 x half> @llvm.amdgcn.global.atomic.fadd.v2f16.p1(" "ptr addrspace(1), <2 x half>)"}, @@ -344,10 +341,6 @@ const rocke_ll_decl_t ROCKE_LL_INTRINSIC_DECLS[] = { "declare <2 x float> @llvm.amdgcn.cvt.scalef32.pk.f32.fp8(i32, float, i1)"}, {"amdgcn.cvt.scalef32.pk.f32.bf8", "declare <2 x float> @llvm.amdgcn.cvt.scalef32.pk.f32.bf8(i32, float, i1)"}, - {"amdgcn.cvt.scalef32.pk.fp8.f32", - "declare i32 @llvm.amdgcn.cvt.scalef32.pk.fp8.f32(i32, <2 x float>, float, i1)"}, - {"amdgcn.cvt.scalef32.pk.bf8.f32", - "declare i32 @llvm.amdgcn.cvt.scalef32.pk.bf8.f32(i32, <2 x float>, float, i1)"}, {"amdgcn.ds.swizzle", "declare i32 @llvm.amdgcn.ds.swizzle(i32, i32 immarg)"}, /* Not overloaded, so no name suffix, but the flags are immarg like every * other permlane* flag pair. */ diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/cpp/instances/gfx942/attention_tiled_2d_public_entry_glue.cpp b/dnn-providers/hip-kernel-provider/rocke/platform/cpp/instances/gfx942/attention_tiled_2d_public_entry_glue.cpp index afb0529d67bc..db62946fdd8c 100644 --- a/dnn-providers/hip-kernel-provider/rocke/platform/cpp/instances/gfx942/attention_tiled_2d_public_entry_glue.cpp +++ b/dnn-providers/hip-kernel-provider/rocke/platform/cpp/instances/gfx942/attention_tiled_2d_public_entry_glue.cpp @@ -580,6 +580,9 @@ static rocke_status_t hkv_buf, s->dtype ? s->dtype : "", kv_buf, + /* Python emits "fnuz" under the *same* condition as the kv part, + * not under a format test, so it keys off kv_buf being non-empty. */ + kv_buf[0] ? "fnuz" : "", s->use_sinks ? "sinks" : "", sw_buf, s->has_softcap ? "softcap" : "", diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/cpp/instances/gfx942/attention_tiled_3d_gfx942_attn_tiled_3d_public_glue.cpp b/dnn-providers/hip-kernel-provider/rocke/platform/cpp/instances/gfx942/attention_tiled_3d_gfx942_attn_tiled_3d_public_glue.cpp index 4b9fb4e6cf24..3e0f2c22d08e 100644 --- a/dnn-providers/hip-kernel-provider/rocke/platform/cpp/instances/gfx942/attention_tiled_3d_gfx942_attn_tiled_3d_public_glue.cpp +++ b/dnn-providers/hip-kernel-provider/rocke/platform/cpp/instances/gfx942/attention_tiled_3d_gfx942_attn_tiled_3d_public_glue.cpp @@ -231,7 +231,8 @@ int rocke_unified_attention_3d_tiled_spec_kernel_name( const rocke_unified_attention_3d_tiled_spec_t* s, char* buf, size_t cap) { /* kernel_name_join("rocke_uattn3d_tiled_gfx942", d.., b.., h..kv.., seg.., - * dtype, kv<...> if kv_storage_dtype else "", "sinks" if use_sinks else "", + * dtype, kv<...> if kv_storage_dtype else "", "fnuz" if kv_storage_dtype + * else "", "sinks" if use_sinks else "", * "sw" if sw>0 else "", "softcap" if has_softcap else "", * "alibi" if use_alibi else "", "qqb" if use_qq_bias else "", * "hoist" if use_invariant_hoist else "", "wkv" if use_wide_kv_load else "") @@ -270,6 +271,9 @@ int rocke_unified_attention_3d_tiled_spec_kernel_name( { snprintf(kv_part, sizeof(kv_part), "kv%s", s->kv_storage_dtype); parts[np++] = kv_part; + /* Python emits "fnuz" under the *same* condition as the kv part, not + * under a format test, so it is tagged here rather than separately. */ + parts[np++] = "fnuz"; } if(s->use_sinks) { diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/dsl_docs/development/arch_axis_proposal.md b/dnn-providers/hip-kernel-provider/rocke/platform/dsl_docs/development/arch_axis_proposal.md new file mode 100644 index 000000000000..9f480135bde6 --- /dev/null +++ b/dnn-providers/hip-kernel-provider/rocke/platform/dsl_docs/development/arch_axis_proposal.md @@ -0,0 +1,466 @@ +# Proposal: give intrinsic resolution an arch axis + +**Status:** S1 implemented (`tools/gen_arch_domain.py`, two committed columns, +gated by `tests/core/test_arch_domain_artifact.py`); S2–S4 still proposed. +Delivery breakdown: [`arch_axis_epic.md`](arch_axis_epic.md). +**Non-specialist summary:** [`arch_axis_brief.md`](arch_axis_brief.md) (one page). +**Scope:** `core/lower_llvm.py` + `cpp/core/lower_llvm/` declare resolution. +**Related:** [`multi_toolchain_strategy.md`](multi_toolchain_strategy.md) (the +wider ROCm/LLVM/gfx problem; this doc is its §4 R1+R2 written out), +[`f8f6f4_and_decl_validation_plan.md`](f8f6f4_and_decl_validation_plan.md) +(bug record B1–B11). + +> **Provenance.** The hand-run probes quoted in §3 were taken on AMD clang +> 23.0.0git at `/opt/rocm/lib/llvm/bin/clang` (comgr reports ROCm 7.13, so rocke +> detects flavor `llvm23`). They are a **single-flavor snapshot, kept only as the +> argument that motivated S1** — they are not the data. The data is the generated +> artifact, one column per flavor, under +> `python/rocke/core/arch/data/intrinsic_arch_domain..json`; each column +> records the clang identity that produced it. All three flavors are now +> committed: `llvm20` (ROCm 7.1), `llvm22` (ROCm 7.2) and `llvm23` (ROCm 10.0), +> the last measured in a container rather than on a host. So §3 is reproducible +> end-to-end, and where §3 and the artifacts disagree, the artifacts win. See +> §3.2 for the rows that did not survive. + +--- + +## 1. Summary + +rocke resolves an intrinsic `declare` on **one** axis — the LLVM flavor. The +target architecture is never consulted, even though "does this intrinsic exist +on this GPU" is an arch question. The result is that using an intrinsic on an +arch that lacks it is not an error at build time; it is a linker `undefined +symbol`, a backend `Cannot select` abort, or — worst case — a silently wrong +kernel. + +This proposes adding the missing axis in the cheapest form that actually works: + +- **S1** *(done)* — generate an `arch_domain` table by probing the installed + toolchain; commit it, gate regeneration as a no-op, exactly like golden. One + column per flavor, `(key, arch) → status + evidence`; a plain `key → set of + arches` proved too lossy (§3.2, §4/S1). +- **S2** — make `_need()` consult it. One chokepoint, every decl key, all call sites + unchanged. +- **S3** — remove the implicit `arch or "gfx950"` fallback that makes a forgotten + `arch=` silently succeed. +- **S4** — mirror S1/S2 into the C++ engine from the same generated source, so + byte-identity holds. + +S1–S4 change **zero emitted IR bytes** and need no golden re-bless. + +--- + +## 2. Motivation + +### 2.1 The defect, in code + +`core/lower_llvm.py:1398` — `arch` is consumed to pick a backend and then +dropped: + +```python +self._backend = backend_for(arch or "gfx950") # the only use of `arch` +... +self._decls: Dict[str, str] = dict(_INTRINSIC_DECLS) +if flavor == LLVM_FLAVOR_LLVM22: + self._decls.update(_INTRINSIC_DECLS_LLVM22_OVERRIDES) +elif flavor == LLVM_FLAVOR_LLVM23: + self._decls.update(_INTRINSIC_DECLS_LLVM23_OVERRIDES) +``` + +`self._decls` is a function of `flavor` alone. And `_need()` — the single +chokepoint every one of the ~151 declares passes through (`:1536`) — validates +nothing at all: + +```python +def _need(self, key: str) -> None: + self._needs_intrin[key] = True +``` + +The C++ engine mirrors the defect faithfully, including the fallback +(`cpp/core/lower_llvm/core.cpp:602`): + +```c +if(arch == NULL || strcmp(arch, "gfx950") == 0) +``` + +So on both sides: a caller who omits `arch=` gets gfx950, and a caller who passes +the right `arch` gets no extra checking for having done so. + +### 2.2 Why nothing catches it + +The natural place to catch this is a verifier. It does not work: + +| oracle | verdict on a declare for a nonexistent intrinsic | +|---|---| +| `opt -passes=verify` | **accepts** | +| `clang -S` (to assembly) | **accepts** — emits a GOT-relative external call (`...@gotpcrel32@lo` + `s_swappc_b64`) | +| **link** | `ld.lld: error: undefined symbol` | + +An unknown `llvm.amdgcn.*` name is, to LLVM, just an external function. Only +linking forces the symbol to resolve. **The IR-validity oracle must be a link**, +which is why this cannot be a cheap in-process check. + +Second complication: for an intrinsic that *exists* but is unsupported on the +target, the backend calls `report_fatal_error`, which **kills the process**. +Every probe must therefore run in a subprocess. Both constraints shape S1. + +### 2.3 The bug record + +This is not hypothetical. Every one of these traces to the missing axis: + +| bug | what happened | +|---|---| +| **B9** | `ds.read.tr16.b128` declared and reachable from gfx950 paths. The intrinsic **does not exist in any LLVM** (§3). Survived only because its call sites sit behind `tr128: bool = False`. | +| **B3 / B4** | fp4 / fp6 MFMA atoms pointed at intrinsics unavailable on the targeted arch. | +| tiled-3D routing | `kernels/__init__.py` re-exported the gfx950 3D builder directly, so gfx942 requests silently built gfx950 kernels. Fixed in `8a901dd99b`. | +| the `gfx950` default | several builder call sites were dropping `arch=` entirely and getting gfx950 by fallback. Found and fixed in the same commit — *by inspection*, not by any gate. | + +The pattern: these are found by a human reading code, or by a kernel failing at +run time. Nothing in the test suite is looking for them. + +### 2.4 It gets worse with scale + +`BACKEND_REGISTRY` has 8 rows (`gfx908`, `gfx90a`, `gfx942`, `gfx950`, `gfx1151`, +`gfx1201`, `gfx1250`, `gfx11-generic`), 7 of them wired with arch metadata. They +span three programming models (GFX9 / GFX11 / GFX12). The number of intrinsics +that exist on some of these and not others is large and growing — new MFMA/WMMA +shapes, new `ds` transpose forms, new buffer ops. Each addition is a fresh chance +to make the B9 mistake, with nothing to catch it. + +--- + +## 3. The key empirical result + +The two axes are not tangled — **the compiler reports them as two distinct +errors**. Declaring an intrinsic, calling it, and linking gives exactly three +outcomes, and they map one-to-one onto the two axes: + +| outcome | meaning | axis | +|---|---|---| +| `ld.lld: undefined symbol` | this **name** does not exist in this LLVM | flavor | +| `Cannot select` / fatal | name exists, **this target** can't lower it | **arch** | +| link OK | available here | — | + +Three outcomes were enough to *motivate* the split, but not to *record* it: the +shipped generator needs six. Two more say "we did not get an answer" — +`target_unsupported` (this clang cannot target this arch at all, so it has no +opinion) and `toolchain_crash` (asking the question killed the compiler) — plus +`probe_error` for a malformed probe module of our own. Collapsing any of those +into `arch_absent` would condemn an intrinsic on the strength of a missing +answer; on the `llvm20` column that alone would have mis-reported 116 cells. + +The flavor axis also turned out not to need the link. The generator answers it +first, and separately, with an `opt -S` round-trip: LLVM resolves a recognised +`llvm.*` declare on parse, while an unrecognised name round-trips verbatim. That +ordering is load-bearing, not tidiness — it is the only stage that can answer a +key whose *codegen* crashes. + +Measured by hand on `llvm23` (15 probes, 21 ms each) — superseded, see §3.2: + +| intrinsic | gfx942 | gfx950 | gfx1250 | +|---|---|---|---| +| `ds.read.tr16.b64.v4i16` | Cannot select | **LINK-OK** | Cannot select | +| `ds.read.tr16.b128.v8i16` | undefined symbol | undefined symbol | undefined symbol | +| `ds.load.tr16.b128.v8f16` | Cannot select | Cannot select | **LINK-OK** | +| `ds.load.tr16.b128.v8bf16` | Cannot select | Cannot select | **LINK-OK** | +| `ds.read.tr8.b64.v2i32` | Cannot select | **LINK-OK** | Cannot select | + +Row 2 is B9: `undefined symbol` on *every* arch — a name that exists nowhere. The +full `ds.*.tr*` set in this LLVM is `ds.read.{tr16.b64, tr4.b64, tr6.b96, tr8.b64}` +and `ds.load.{tr16.b128, tr4.b64, tr6.b96, tr8.b64}`; there is no +`ds.read.tr16.b128` at any width, and `ds_read_b128_tr_b16` does not assemble on +gfx950 or gfx1250. + +### 3.1 Consequence: the cube factorizes + +Because the two failure modes are independent signals: + +``` +available(key, arch, flavor) ≈ arch_domain(key, arch) ∧ exists(key, flavor) +text(key, flavor) ← already modelled +``` + +- `arch_domain` is a **hardware** fact: an instruction absent from an ISA does not + appear because the compiler was upgraded. +- `exists` / `text` are **spelling** facts: the fp8 MFMA operand widening, + `make.buffer.rsrc`'s `i32`→`i64`, the `ds.read.tr16.b64` → `.v4i16` rename — + all uniform across arches. + +Checked against every known data point: + +| item | arch axis | flavor axis | +|---|---|---| +| `ds.load.tr16.b128.*` | gfx1250 only | — | +| `ds.read.tr16.b64.*` | gfx950 only | rename (B8) | +| `mfma.f32.16x16x32.bf16` | gfx950 only | — | +| `ds.read.tr16.b128` (B9) | **empty set** | — | +| fp8 MFMA operand width (B6) | — | LLVM20 vs 21+ | +| `make.buffer.rsrc.p1` (B7) | — | LLVM20 vs 21+ | +| `global.atomic.fadd.v2f16` (B10) | — | removed in LLVM23 | + +**No `151 × 7 × 3` table is required.** One 151-row `arch_domain` plus the +existing per-flavor override mechanism covers every case on record. Where the +factorization does fail, the artifact in S1 records the exception per cell — it +is measured, so it cannot be wrong about its own host. + +### 3.2 What the generated columns changed + +S1 replaced the table above with ~1000 measured cells per flavor, and two of its +five rows did not survive contact with a second flavor: + +| row | this doc said | `llvm22` | `llvm20` | +|---|---|---|---| +| `ds.read.tr16.b64` | gfx950 only | gfx950 only ✓ | gfx950 only, but gfx1250 is `target_unsupported` — LLVM 20 cannot target it at all | +| `ds.load.tr16.b128.*` | gfx1250 only | gfx1250 only ✓ | **`name_absent` everywhere** — the name does not exist in LLVM 20 | +| `ds.read.tr16.b128` | empty set (B9) | `name_absent` everywhere ✓ | `name_absent` everywhere ✓ | + +This matters for §3.1 rather than for B9. The factorization is argued from +"`arch_domain` is a hardware fact, near-independent of LLVM version" — and +`ds.load.tr16.b128.*` is precisely a key whose *arch* answer is unobtainable on +one flavor because its *name* answer is `name_absent` there. The factorization +still holds, but only because the flavor axis is evaluated first and short- +circuits: `arch_domain` is not independent of flavor, it is **undefined** wherever +the name is absent. A table that stored one arch set per key, with no flavor +column, would have had to invent an answer for those cells. + +Two further findings from the sweep, neither visible to a 15-probe sample: + +- **Probes must compile at `-O0`.** At `-O3` the IR pipeline can delete the very + call being asked about, and a module with nothing left to select links happily. + This produced a false `ok` for a cross-lane intrinsic on a target that does not + have it — the object contained no such instruction at all. Nine keys were + foldable this way when that was measured. A false `ok` is the dangerous direction: it silently + admits a kernel that cannot run. +- **Transient failures must not be recorded as facts.** Under `-j` the probes + fork enough linkers to occasionally hit the process limit, and one abort was + otherwise about to be committed as a permanent compiler crash. A serial retry + pass separates real results (stable under retry) from resource failures. + +--- + +## 4. Solution + +### S1 — Generate the `arch_domain` artifact; never hand-write it — **DONE** + +`tools/gen_arch_domain.py`, for each decl key × each wired arch, emits a minimal +module, compiles **and links** it in a **subprocess**, and classifies the +outcome. Commit the result; `tests/core/test_arch_domain_artifact.py` asserts +regeneration is a no-op. This is exactly how golden is managed. + +Shipped schema — per-cell provenance is the point, per +[`multi_toolchain_strategy.md`](multi_toolchain_strategy.md) §3.2, since one host +can only ever validate one flavor column. It differs from what this doc first +proposed in three ways, each of which was a mistake worth recording: + +```json +{ + "schema": "rocke.intrinsic_arch_domain/v1", + "toolchain": {"flavor": "llvm22", "clang": "AMD clang version 22.0.0git ...", + "arches": ["gfx11-generic", "..."]}, + "keys": { + "ds.read.tr16.b64": { + "gfx950": {"status": "ok", "verified_on": "llvm22"}, + "gfx942": {"status": "arch_absent", "verified_on": "llvm22", + "evidence": "Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64"} + } + }, + "canonical": {"ds.read.tr16.b64": "llvm.amdgcn.ds.read.tr16.b64.v4i16"} +} +``` + +- **One file per flavor, named after it**, rather than an `unvalidated` status + inside a shared file. A host can only measure its own LLVM, so a shared file + means whichever flavor ran last silently overwrites the others and `--check` + reds on every machine whose toolchain differs. Naming the flavor makes each + column independently ownable and independently checkable, and deletes the + `unvalidated` status entirely: a flavor with no column is absent, not unknown. +- **No `"*"` wildcard row.** Every cell is written out, even when all seven agree. + The wildcard saves bytes and costs the ability to diff a single cell, which is + the entire failure mode `--check` exists to localise. +- **Every non-`ok` cell carries its `evidence`** — the compiler's own first + diagnostic. A status with no diagnostic behind it cannot be acted on by whoever + hits it, and cannot be distinguished from a bug in the probe. + +`canonical` records what LLVM resolved each surviving declare to. Mostly +identical to the declared name; the interesting rows are the overloads that +remangle (`ds.read.tr16.b64` → `...b64.v4i16`) and the legacy names AutoUpgrade +rewrites, because both are places where what rocke *emits* and what the toolchain +*executes* differ. + +Rules: +- a flavor with no committed column reports **skip**; it may never report green. +- a key whose domain is empty on every arch (`name_absent`) is a **hard error** — + that is B9, and it should fail the build the day it is introduced. + +The flavor axis is enumerated by an `opt -S` round-trip per key (§3), not by +reading names out of the shipped `libLLVM.so`. The name table *is* in that +library (and notably **not** in the `opt` binary, which links it dynamically), but +keying on it means keying on install layout — the same reason +`/llvm/include/llvm/IR/IntrinsicsAMDGPU.h` is unusable here: it does not +exist on every install. `opt -S` asks the toolchain the question directly and +costs one process per key, not per cell. + +Cost, measured: every decl key × 7 arches on `llvm22` — the committed columns +are the count of record, not this sentence — ~15 s wall across cores. Cheap +enough to run in CI, not just on demand — which is why the gate is a test rather +than a nightly. + +**Why a generated table and not the module-level validity gate.** The existing +`tools/check_ir_validity.py` only sees intrinsics that some corpus case happens to +emit — a limitation the f8f6f4 plan §4.8 states explicitly. B9 evaded it for +exactly that reason (`tr128=False`). S1 probes the table, not the corpus, so +coverage does not depend on corpus luck. + +### S2 — Make `_need()` arch-aware, warn-only first + +```python +def _need(self, key: str) -> None: + status = arch_domain_status(key, self._arch, self._flavor) + if status is UNAVAILABLE: + raise NotImplementedError( + f"intrinsic {key!r} is not available on {self._arch} " + f"({self._flavor}); see dsl_docs/development/arch_axis_proposal.md" + ) + self._needs_intrin[key] = True +``` + +One edit covers all ~151 call sites, because they all already funnel through +here. It converts link-time `undefined symbol` and backend `report_fatal_error` +aborts into a build-time error that names the key and the arch. + +**Land it warn-only.** Some live paths survive today on luck (B8 rides LLVM +auto-upgrade), so a hard error on day one would break working builds. Promote to +`raise` only once the warning stream is quiet — the same discipline the plan doc +prescribes for Tier 3. + +One cleanup is a prerequisite: `lower_llvm.py:2806` assigns +`self._needs_intrin["global.atomic.fadd.v2f16"] = True` directly, bypassing +`_need()`. A chokepoint with a bypass is not a chokepoint; route it through +`_need()` first. + +### S3 — Close the implicit `gfx950` default + +`arch or "gfx950"` (Python `:1398`, C++ `:602`) turns "caller forgot `arch=`" +into "caller silently targeted gfx950". Without S3, S2 checks the wrong arch and +the whole exercise is decorative. + +Make `arch` required at the `_Lowerer` boundary. Where an outer API must keep a +default for compatibility, make the default explicit and logged rather than an +`or` fallback buried in a constructor. Commit `8a901dd99b` already fixed the +known leaking call sites; this prevents the next ones. + +### S4 — Mirror into the C++ engine from the same source + +Byte-identity is the #1 invariant, and it covers behaviour, not just bytes: if +Python raises on an unavailable key and C++ emits a declare, the engines have +diverged. So S1's artifact must feed **both**. + +Generate the C++ table into `cpp/core/lower_llvm/` from the same record set and +commit the generated file, rather than hand-transcribing it — hand-transcription +is what made the Tier 0 declare-parity test necessary +(`tests/core/test_intrinsic_decl_table_parity.py`). One source, two emitted +tables, CI checks regeneration is a no-op. + +### 4.1 Rollout order + +1. **S3** — close the default. Standalone, mechanical, no new machinery. +2. **S1** *(done)* — land the generator + artifact + CI no-op check. Nothing + consumes it yet, so it cannot break anything. B9 shows up here immediately. +3. **S2 (warn)** — wire `_need()` to the artifact, warnings only. Route the one + bypass through `_need()` first. +4. **S4** — mirror to C++, re-run byte-identity at every flavor. +5. **S2 (error)** — promote once the warning stream is quiet. + +### 4.2 What does and does not change + +| | effect | +|---|---| +| emitted IR bytes | **none** — S1–S4 add checks and a data file; no emission path changes | +| golden | **no re-bless** | +| byte-identity | must be re-run after S4 (behaviour parity), expected GREEN | +| `KNOWN_BAD` | arch-unavailable keys become build errors, not allowlist entries; the allowlist itself holds 2 entries, both the same llvm23 backend fatal on attention 3d on gfx942 | +| B9 | fixed as a consequence: S1 flags it `name_absent` on every arch | + +--- + +## 5. Alternatives considered + +**Do nothing; rely on the module validity gate.** Rejected: it only covers what +the corpus emits, which is how B9 survived. Complementary, not sufficient. + +**A dense `(key, arch, flavor)` table.** Rejected: 151 × 7 × 3 hand-maintained +cells, when §3.1 shows the cube factorizes and every known case fits the +factorization. + +**Generate declares from LLVM's `.td` files.** Rejected, and the f8f6f4 plan §4 +already rejected it for the right reason: `.td` is not in the install package, so +it creates a source-tree dependency. S1 differs — it probes the *installed* +compiler and commits the result, so nothing is needed at build or run time. + +**Push the check down to the ISA backend.** Partially right and worth doing +eventually (the `ds_tr16_b128_spec` seam is the model), but it only covers +intrinsics reached through a backend method. `_need()` covers all of them, today. + +--- + +## 6. Open questions + +- **Where does `arch` come from for a non-kernel lowering path?** S3 needs an + answer for every entry point, not just the kernel builders. +- **Forward-declared arches.** `gfx908` has a backend row but no `arch_specs.json` + metadata. Probe it anyway and record the domain, or exclude it from the + artifact? Probing is nearly free and the data is useful when it gets wired. +- **`gfx11-generic`.** A generic target's domain is presumably the intersection + over its family. Worth confirming by probe rather than assuming. +- **Cells where the factorization fails** — a key whose arch domain genuinely + differs between flavors. None are known; the per-cell artifact represents them + correctly if they appear, but the S2 lookup signature must allow it (hence + `arch_domain_status(key, arch, flavor)` above, not `(key, arch)`). + +--- + +## 7. Verification + +The §3 hand-probes are superseded; ask the generator instead, which is the only +form of these measurements that is gated: + +```bash +cd platform && export ROCKE=$(pwd) PYTHONPATH=$ROCKE/python + +# detected flavor and its basis +python3 -c "from rocke.core import lower_llvm as L; \ + print(L._resolve_llvm_flavor(), L._comgr_lib_rocm_version())" + +# one cell, one family, or the whole column -- on this host's flavor only +python3 tools/gen_arch_domain.py --only ds.read.tr --arch gfx950 --verbose +python3 tools/gen_arch_domain.py --check +``` + +The generator refuses to run when `clang --version` and the flavor rocke resolved +disagree: a real measurement filed under the wrong LLVM vintage is worse than no +measurement, because nothing downstream can tell. + +Per-cell probe, for reference: emit a module declaring the intrinsic, calling it, +and storing the result `volatile`; run `clang -x ir .ll -target +amdgcn-amd-amdhsa -mcpu= -nogpulib -O0 -o ` — note this **links**, +which `-S` would not, and note the `-O0`, without which the optimiser can delete +the call and the probe reports `ok` for a target that cannot run it (§3.2) — in a +subprocess, and classify stderr by the §3 taxonomy. + +Acceptance for the change itself: + +- `python -m pytest tests/core/test_arch_domain_artifact.py` green (the structure + half runs without a toolchain; the regeneration half skips where the flavor has + no committed column) +- `python tools/check_byte_identity.py` GREEN at each flavor (S4) +- `python tools/check_ir_validity.py` GREEN, with no *new* failures beyond the 2 + documented `KNOWN_BAD` emission defects +- golden unchanged (no re-bless in the diff) + +--- + +## 8. Compliance + +No measured kernel performance figures appear in this document; the timings +quoted are build-tool wall-clock, which is in scope per +[`platform/AGENTS.md`](../../AGENTS.md) §Compliance. diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/dsl_docs/development/multi_toolchain_strategy.md b/dnn-providers/hip-kernel-provider/rocke/platform/dsl_docs/development/multi_toolchain_strategy.md new file mode 100644 index 000000000000..7804b3c5339f --- /dev/null +++ b/dnn-providers/hip-kernel-provider/rocke/platform/dsl_docs/development/multi_toolchain_strategy.md @@ -0,0 +1,439 @@ +# Supporting many ROCm / LLVM / gfx combinations + +Working notes. Two halves: **§1–§2 survey what rocke does today** for the +LLVM-version axis (read this first — the existing design is better than its +reputation and the recommendations build on it), **§3–§4 are the proposed +strategy** for scaling to more toolchains and more targets. + +> **Lifecycle.** This is a design/working note, not reference documentation. +> Fold §1–§2 into `dsl_docs/architecture/` once they stop changing, and delete +> the rest as §4's items land. Related: the decl-table half of this problem is +> tracked in [`f8f6f4_and_decl_validation_plan.md`](f8f6f4_and_decl_validation_plan.md). + +> **Toolchain this was surveyed on.** AMD clang 23.0.0git at +> `/opt/rocm/lib/llvm/bin/clang`; comgr reports ROCm 7.13, so rocke detects +> flavor **`llvm23`**. Note `/opt/rocm/.info/version` does **not** exist here — +> `_system_rocm_version()` returns `None` and detection falls through to the +> comgr-vintage step, exactly as designed (§1.3). Probe results in §2.4 are +> LLVM-23 facts; re-run before trusting them on another flavor. +> +> **Superseded in part.** §4's R1 has since shipped as +> `tools/gen_arch_domain.py`, and the §2.4 hand-probes are no longer the data — +> the generated columns under +> `python/rocke/core/arch/data/intrinsic_arch_domain..json` are. All +> three flavors are committed (`llvm20`, `llvm22`, `llvm23`), so the survey +> above now has a machine-checked column behind it. Where §2.4 +> and the artifacts disagree, the artifacts win — see +> [`arch_axis_proposal.md`](arch_axis_proposal.md) §3.2 for the rows that changed. + +--- + +## 1. What exists today: the flavor architecture + +### 1.1 Three axes collapse to one + +rocke does **not** carry a ROCm axis and an LLVM axis separately. `_ROCM_FLAVOR_LADDER` +(`core/lower_llvm.py:195`) maps a ROCm release to the LLVM vintage its comgr +bundles, and everything downstream keys off the resulting *flavor*: + +```python +_ROCM_FLAVOR_LADDER = ( + ((7, 13), LLVM_FLAVOR_LLVM23), + ((7, 2), LLVM_FLAVOR_LLVM22), +) +``` + +`_flavor_for_rocm` clamps at both ends and never raises: newer-than-newest +resolves to the newest flavor, older-than-oldest to `LLVM_FLAVORS[0]` (which is +what pre-7.2 actually shipped, not a fallback). Both callers are best-effort +guesses about a host, so raising would be wrong; callers wanting strictness pass +`llvm_flavor=` explicitly, which *is* validated. + +The ladder's own comment states the design goal: *"Add a row when a ROCm release +bumps its bundled LLVM; nothing else needs editing."* That is the right contract +and it mostly holds. + +### 1.2 The flavor set is an SSOT with an anti-drift lint + +```python +LLVM_FLAVORS: Tuple[str, ...] = (LLVM_FLAVOR_LLVM20, LLVM_FLAVOR_LLVM22, LLVM_FLAVOR_LLVM23) +``` + +Every membership test must go through this tuple. This is enforced, not just +documented — `test_no_hand_rolled_flavor_membership_lists` pins that no private +copy reappears. The comment records why: a hand-rolled tuple is how `llvm23` was +once silently rejected by the C++ path while the Python path accepted it. + +### 1.3 Detection is resolved against the *compiling* comgr, not the environment + +`_detect_llvm_flavor()` (`:324`) resolves in this order: + +1. `$ROCKE_LLVM_FLAVOR` (explicit override; test/dev knob) +2. **the ROCm vintage of the comgr lib that will actually compile the IR** +3. `torch.version.hip` (proxy) +4. `/opt/rocm/.info/version` (proxy) +5. `llvm22` (modern default) + +Step 2 is the load-bearing one and the design is subtle in a good way: a torch +wheel bundles its *own* `libamd_comgr.so` whose LLVM follows the wheel's ROCm, +not the system `/opt/rocm`. Emitting IR for the wrong one means comgr either +rejects the declares or silently auto-upgrades them. + +The cache (`_resolve_llvm_flavor`, `:367`) is keyed on the **resolved comgr lib +path** rather than resolved-once-forever, so an early torch-less call cannot +lock in the `/opt/rocm` flavor — once torch enters the process the basis changes +and the flavor re-resolves. Every step is exception-wrapped so a misconfigured +environment never breaks import. + +### 1.4 Two distinct kinds of cross-flavor divergence, modelled differently + +**(a) Datalayout — modelled as a coarser *generation*, not per-flavor.** + +`LlvmDatalayoutKind` (`:145`) partitions flavors by the `p8` field only: + +| kind | shape | flavors | +|---|---|---| +| `P8_PLAIN` | `p8:128:128` | llvm20 | +| `P8_INDEXED` | `p8:128:128:128:48` | llvm22, llvm23 | + +The reason it is a *generation* and not a flavor: llvm22 and llvm23 share the p8 +shape but differ in `m:e`, so a datalayout string **cannot narrow to a single +flavor**. `runtime/comgr.py:_assert_ir_flavor_matches_lib` therefore compares +*generations*, which is exactly the strongest claim the evidence supports — and +that is asserted by its own test +(`test_comgr_guard_compares_datalayout_generation_not_flavor`). + +The enum member names (`P8_INDEXED`, not `MODERN`) are chosen so they stay true +when a newer generation lands. The partition is exhaustiveness-checked by +`test_datalayout_kinds_partition_every_flavor` — a hand-rolled substitute for +the check a language-level `match` would give for free. + +**(b) Intrinsic declare text — modelled as base + per-flavor override dicts.** + +```python +self._decls = dict(_INTRINSIC_DECLS) # LLVM 20 shapes +if flavor == LLVM_FLAVOR_LLVM22: self._decls.update(_INTRINSIC_DECLS_LLVM22_OVERRIDES) +elif flavor == LLVM_FLAVOR_LLVM23: self._decls.update(_INTRINSIC_DECLS_LLVM23_OVERRIDES) +``` + +The **key is stable across flavors**, so all ~151 `_need(...)` call sites are +flavor-agnostic. Only the text differs. Five overrides per modern flavor today +(4 fp8/bf8 MFMA operand-width changes + `make.buffer.rsrc.p1`'s `i32`→`i64`). + +Why it has to be emitted correctly up front rather than left to auto-upgrade: +**comgr verifies the toplevel `declare` lines *before* running the auto-upgrade +pass.** + +### 1.5 The C++ mirror is better factored than the Python original + +`cpp/core/lower_llvm/core.cpp:62` holds **one** table with every flavor fact as a +column: + +```c +} ROCKE_LL_FLAVOR_LADDER[] = { + {ROCKE_LLVM_FLAVOR_LLVM20, "llvm20", 0, 0, false}, + {ROCKE_LLVM_FLAVOR_LLVM22, "llvm22", 7, 2, true}, + {ROCKE_LLVM_FLAVOR_LLVM23, "llvm23", 7, 13, true}, +}; +``` + +Its comment: *"Everything on this side that names, parses, validates, +enumerates, or version-maps a flavor reads this table, so adding a rung is one +row here plus the enumerator in `lower_llvm.h` — previously it was five +coordinated edits across three files."* + +Python spreads the same facts across **five** structures: `LLVM_FLAVORS`, +`_DATALAYOUT_KIND_FLAVORS`, `_P8_MARKERS`, `_ROCM_FLAVOR_LADDER`, and the +if-chain in `_datalayout_for_flavor`. Adding a flavor to Python is still the +five-coordinated-edits shape that the C++ side already escaped. + +### 1.6 Enforcement surface + +Twelve tests. They fall into three groups, and the sizes are the interesting part: + +| group | count | what it proves | +|---|---|---| +| internal consistency | 9 | the partition is exhaustive, markers match constants, no hand-rolled lists, unknown flavors raise, the ladder clamps | +| cross-engine agreement | 2 | `test_cpp_engine_accepts_exactly_the_python_flavor_set`, `test_cpp_backend_path_accepts_every_known_flavor` | +| **toolchain conformance** | **1** | `test_datalayout_matches_hipcc_emitted_ir` — the only one that compares against a real toolchain, and only for the flavor of the `hipcc` on PATH | + +### 1.7 How the three gates treat the flavor axis + +| gate | flavor coverage | why | +|---|---|---| +| golden (`rocke_representative_ir_sha256.json`) | **all three, from any host** | flavor is an explicit *input* to `lower_case(case, flavor)`; pure Python emission, no toolchain needed. The JSON stores one sub-document per flavor under `flavors:`. | +| emitted-IR validity (`tools/check_ir_validity.py`) | **host flavor only** | it compiles and links; only the installed toolchain can judge | +| byte-identity (`tools/check_byte_identity.py`) | one flavor per run, selected **ambiently** | no `--flavor` argument; both engines read `ROCKE_LLVM_FLAVOR`, so CLAUDE.md's recipe is three separate invocations with the env var set | + +--- + +## 2. Assessment + +### 2.1 What is genuinely good + +- **The ROCm axis is correctly collapsed.** Three axes are really 1.5, and rocke + already figured that out. +- **The flavor set is an SSOT with a lint that bans copies of it.** Rare, and + motivated by a real past bug. +- **Detection tracks the *compiling* comgr, cached on the comgr path.** This is + the hard part of the problem and it is solved well. +- **The comgr guard claims a generation, not a flavor.** It asserts exactly what + the evidence supports, no more. +- **Golden is flavor-parameterized**, so all three flavors are regression-locked + from any host without needing three machines. + +### 2.2 Gap G1 — the arch dimension is absent from declare resolution + +`_Lowerer.__init__` (`:1385`) consumes `arch` **only** to pick `self._backend`; +it never reaches `self._decls`. And it defaults: + +```python +self._backend = backend_for(arch or "gfx950") +``` + +So intrinsic availability — which is an arch-dependent fact — is resolved on the +flavor axis alone. `_need()` (`:1536`) sets a flag and validates nothing. + +This is the structural cause of two already-diagnosed bugs: B9 (`ds.read.tr16.b128`, +fictional on the gfx950 path, real-but-different on the gfx1250 path, one table +row for both) and the tiled-3D arch-routing bug (`f8f6f4_..._plan.md` §4.10). + +The `arch or "gfx950"` default makes it worse: a caller that forgets `arch=` +silently gets gfx950 rather than an error. Several such call sites were found and +fixed in commit `8a901dd99b`. + +### 2.3 Gap G2 — per-flavor overrides are hand-written strings + +Each new flavor costs one hand-written string per drifted declare. It is five +today. Plan A's f8f6f4 format parameterization alone would add 5 formats × 2 +shapes = 10 more strings **per flavor**. That is linear manual growth, and manual +growth is precisely what produced B1–B8. + +Compounding: the **base** table is the LLVM-20 shape and is known-stale for +llvm20 in at least two places (B6 fp8 MFMA `<2 x i32>`, B7 `make.buffer.rsrc` +`i32`), yet it is the *default* — a flavor with no override dict inherits shapes +nobody has validated. + +### 2.4 Gap G3 — only the host's flavor is toolchain-verified, and that is not recorded as data + +§1.6 shows 9 of 12 flavor tests prove internal consistency. That is worth having, +but internal consistency between two hand-written tables says nothing about +whether either matches LLVM. + +The one conformance test only covers the host's flavor. The other two flavors are +*self-consistent and unvalidated*, and nothing in the repo distinguishes those two +states — a green run reads as "all three flavors fine." + +Measured on this host (LLVM 23), by declaring each intrinsic, calling it, and +**linking** (15 probes, 21 ms each). Kept as the argument that motivated R1, not +as data — the generated columns superseded it, and on `llvm20` rows 3 and 4 read +`name_absent` rather than `Cannot select`, because the name does not exist in +LLVM 20 at all: + +| intrinsic | gfx942 | gfx950 | gfx1250 | +|---|---|---|---| +| `ds.read.tr16.b64.v4i16` | Cannot select | LINK-OK | Cannot select | +| `ds.read.tr16.b128.v8i16` | **undefined symbol** | **undefined symbol** | **undefined symbol** | +| `ds.load.tr16.b128.v8f16` | Cannot select | Cannot select | LINK-OK | +| `ds.load.tr16.b128.v8bf16` | Cannot select | Cannot select | LINK-OK | +| `ds.read.tr8.b64.v2i32` | Cannot select | LINK-OK | Cannot select | + +Full `ds.*.tr*` enumeration on this host: `ds.read.{tr16.b64, tr4.b64, tr6.b96, +tr8.b64}` and `ds.load.{tr16.b128, tr4.b64, tr6.b96, tr8.b64}`. There is **no +`ds.read.tr16.b128` at any width**, and the mnemonic `ds_read_b128_tr_b16` does +not assemble on gfx950 or gfx1250 (`ds_read_b64_tr_b16` / `ds_read_b64_tr_b8` +assemble on gfx950 only) — so B9's "likely a rename to `ds.load.tr16.b128`" is +wrong: that intrinsic is gfx1250-only, already correctly declared under two other +keys, and renaming onto it would trade a link-time undefined symbol for a backend +`report_fatal_error`. + +Two methodology notes for anyone building on this: + +- `/llvm/include/llvm/IR/IntrinsicsAMDGPU.h` — the enumeration source §4.1 + of the f8f6f4 plan proposed — **does not exist on this host**. Any design + depending on install layout is unreliable. +- The intrinsic name table is **not** in the `opt` binary (it links `libLLVM.so` + dynamically, so `strings opt` finds one match). It is in + `/lib/llvm/lib/libLLVM.so`, which yields **1484** `llvm.amdgcn.*` names + on this host. That is a cheap, install-layout-independent enumeration oracle. + +### 2.5 Gap G4 — Python carries the five-edit shape the C++ side already escaped + +See §1.5. The asymmetry is backwards from what one would expect, and Python is the +side that gets edited first when a flavor is added. + +### 2.6 Gap G5 — the declare table is hand-mirrored across engines + +`data.cpp`'s arrays are a hand transcription of the Python dicts. The Tier 0 +parity test (`tests/core/test_intrinsic_decl_table_parity.py`) exists **because** +of that transcription; it is a symptom, not a cure. + +### 2.7 Observation — byte-identity's flavor selection is ambient + +`check_byte_identity.py` takes no flavor argument; selection flows through +`ROCKE_LLVM_FLAVOR` into both engines' own resolution. It works, but "which +flavor did that run actually cover" is not in the run's own output or arguments. +(Not verified whether the C++ engine reads the env var directly or inherits it +through the binding — worth confirming before acting.) + +--- + +## 3. The strategy + +### 3.1 The cube is not dense — it factorizes + +`available(key, arch, flavor)` decomposes into two nearly independent one-dimensional +facts: + +``` +available(key, arch, flavor) ≈ arch_domain(key, arch) ∧ exists(key, flavor) +text(key, flavor) ← already modelled (§1.4b) +``` + +- **`arch_domain(key)` is a hardware fact**, near-independent of LLVM version. An + instruction absent from an ISA does not appear because the compiler was + upgraded. `ds_read_b128_tr_b16` is absent from gfx950 in every LLVM. +- **`text(key, flavor)` is a spelling fact**, near-independent of arch. The fp8 + MFMA operand widening, `make.buffer.rsrc`'s `i64`, the `ds.read.tr16.b64` + → `.v4i16` rename: all uniform across arches. + +Every known data point fits: + +| item | arch axis | flavor axis | +|---|---|---| +| `ds.load.tr16.b128.*` | gfx1250 only | — | +| `mfma.f32.16x16x32.bf16` | gfx950 only | — | +| `ds.read.tr16.b128` (B9) | **empty set** → delete | — | +| fp8 MFMA operand width (B6) | — | LLVM20 vs 21+ | +| `make.buffer.rsrc.p1` (B7) | — | LLVM20 vs 21+ | +| `global.atomic.fadd.v2f16` (B10) | — | removed in LLVM23 | +| `ds.read.tr16.b64` rename (B8) | — | cross-version rename | + +**Consequence: no 151 × 7 × 3 table is needed.** One 151-row `arch_domain` +(a hardware fact, written once, rarely changing), plus the existing flavor +override mechanism, plus a short list of cases where the factorization fails. + +### 3.2 One host can only ever validate one column + +This is physics, not a limitation to be engineered away (the f8f6f4 plan §4.6 +states it as a caveat; it deserves to be a first-class design constraint). The +strategy must therefore make evidence **accumulate across hosts**: + +- every cell carries `verified` / `unvalidated` plus the toolchain identity that + verified it; +- `unvalidated` may report **skip**, never green; +- CI becomes a host matrix — one host per supported flavor. Rows with no host stay + explicitly "declared supported, unvalidated". + +Golden already has the right shape (`flavors:` sub-documents); copy it. + +### 3.3 The support matrix is a declared list, not a cross product + +Nobody supports N × M × K. Make the actual list data: + +```python +SUPPORTED = [ + ("rocm>=7.0,<7.2", "llvm20", {"gfx942", "gfx950", ...}), + ("rocm>=7.2,<7.13", "llvm22", {...}), + ("rocm>=7.13", "llvm23", {...}), +] +``` + +**N and M are choices, not givens.** Every retained old flavor multiplies every +cost above. A stated support window (e.g. newest two flavors plus one LTS) is the +only lever here that reduces cost rather than merely organizing it. + +--- + +## 4. Recommendations, in landing order + +R1 and R2 change **zero emitted bytes**, need no golden re-bless, and are fully +verifiable on a host without cmake. + +**R1 — generate an `arch_domain` artifact from the toolchain; do not hand-write +it. — SHIPPED** as `tools/gen_arch_domain.py`, gated by +`tests/core/test_arch_domain_artifact.py`. + +Uses the link probe (declare + call + `store volatile`, compile **and link**; +prototype validated, §2.4), at **`-O0`** — at `-O3` the optimiser can delete the +call being asked about and the probe reports `ok` for a target that cannot run +it. Every decl key × every wired arch — the committed columns are the count of +record, not this sentence — ~15 s wall across cores on `llvm22`. Managed like +golden — a generator tool, a committed artifact, a test asserting regeneration is +a no-op. Depends only on `clang`, never on install layout (§2.4). + +Per-cell provenance landed as **one file per flavor, named after it**, rather +than a `verified`/`unvalidated` marker inside a shared file as §3.2 suggested. A +host can only measure its own LLVM, so a shared file means whichever flavor ran +last silently overwrites the others. Naming the flavor deletes the `unvalidated` +state entirely: a flavor with no column is absent, and absence skips rather than +reds. + +Catches B3, B4 and B9 immediately, and unlike the module gate does **not** depend +on a corpus case happening to emit them (`f8f6f4_..._plan.md` §4.8 admits that +limitation explicitly). + +**R2 — make `_need()` arch-aware; land it warn-only.** + +`_need()` is the single chokepoint all ~151 declares pass through: + +```python +def _need(self, key: str) -> None: + if not _available(key, self._arch, self._flavor): + raise NotImplementedError(f"{key} is not available on {self._arch}") + self._needs_intrin[key] = True +``` + +Converts an entire class of link-time undefined symbols and backend +`report_fatal_error` aborts into a build-time error naming the key and the arch. + +Two prerequisites: (a) close the `arch or "gfx950"` default (§2.2) — otherwise +the check is decorative; (b) **warn-only first**. Live paths survive today on +luck (B8 rides LLVM auto-upgrade), so promote to `error` only once the warning +stream is quiet. Same discipline as Tier 3. + +**R3 — make the support matrix data, and forbid `unvalidated` from reporting green** (§3.2, §3.3). + +**R4 — store structure, not strings.** + +Replace hand-written declare text with `(base_name, operand_types, ret_type, +arch_domain)` and *render* the declare, computing the mangling suffix from which +parameters are `anyvector`. This is the f8f6f4 plan §4.7 idea, promoted from +"nice-to-have at Plan A step 3" to "the answer to the many-flavors question": + +- a new flavor adds a **rule**, not 151 strings; +- `arch_domain` attaches to the same record, so R1's table needs no separate home; +- f8f6f4's 5 formats × 2 shapes becomes two width parameters instead of 10 + hand-written declares per flavor. + +Land it safely: write the renderer, assert it reproduces all 151 current strings +**byte-for-byte**, and only then delete the hand-written table. That assertion is +the safety net. + +**R5 — generate `data.cpp`'s tables instead of hand-mirroring them** (§2.6). + +Once R4 exists, emit both engines' tables from the one record set; commit the +generated file; CI checks regeneration is a no-op. Byte-identity at the declare +layer becomes structural rather than test-enforced, and the Tier 0 parity test +stops being necessary. + +Note the f8f6f4 plan §4 rejected a generator — but that objection was specific to +a **`.td`-driven** generator (`.td` is absent from the install package, creating a +source-tree dependency). Generating two tables from one in-repo record set has +neither problem: the artifact is committed and no tool is needed at runtime. + +**R6 — collapse Python's five flavor structures into one ladder table**, matching +`ROCKE_LL_FLAVOR_LADDER` (§1.5, §2.5). Mechanical, and it removes the +five-coordinated-edits hazard from the side that gets edited first. + +Then promote R2 from warn to error. + +### 4.1 Out of scope here but adjacent + +- Route each kernel family on arch through exactly **one** seam; make direct + cross-arch module imports illegal via the existing AST walk in + `library/tests/test_library_layering.py`. (The `kernels/__init__.py` bug + happened because there were two ways to obtain a builder.) +- Extend corpus coverage to **op × arch**, and assert every op has a case on every + arch it claims to support. Complementary to R1: R1 validates declares, the + corpus validates whole modules — the tiled-3D bug had perfectly valid declares. diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/arch/data/intrinsic_arch_domain.llvm20.json b/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/arch/data/intrinsic_arch_domain.llvm20.json new file mode 100644 index 000000000000..59e66b458282 --- /dev/null +++ b/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/arch/data/intrinsic_arch_domain.llvm20.json @@ -0,0 +1,5877 @@ +{ + "_comment": "GENERATED by tools/gen_arch_domain.py -- do not hand-edit. Which intrinsic declarations link for which gfx target, measured by compiling AND LINKING a probe module per (key, arch). Only the flavor named in toolchain.flavor was measured; every other flavor is unvalidated on this host by construction. See dsl_docs/development/arch_axis_proposal.md.", + "canonical": { + "amdgcn.alignbyte": "llvm.amdgcn.alignbyte", + "amdgcn.cvt.f32.bf8": "llvm.amdgcn.cvt.f32.bf8", + "amdgcn.cvt.f32.fp8": "llvm.amdgcn.cvt.f32.fp8", + "amdgcn.cvt.pk.bf8.f32": "llvm.amdgcn.cvt.pk.bf8.f32", + "amdgcn.cvt.pk.f32.bf8": "llvm.amdgcn.cvt.pk.f32.bf8", + "amdgcn.cvt.pk.f32.fp8": "llvm.amdgcn.cvt.pk.f32.fp8", + "amdgcn.cvt.pk.fp8.f32": "llvm.amdgcn.cvt.pk.fp8.f32", + "amdgcn.cvt.scalef32.pk.f32.bf8": "llvm.amdgcn.cvt.scalef32.pk.f32.bf8", + "amdgcn.cvt.scalef32.pk.f32.fp8": "llvm.amdgcn.cvt.scalef32.pk.f32.fp8", + "amdgcn.ds.swizzle": "llvm.amdgcn.ds.swizzle", + "amdgcn.exp2.f32": "llvm.amdgcn.exp2.f32", + "amdgcn.perm": "llvm.amdgcn.perm", + "amdgcn.permlane16": "llvm.amdgcn.permlane16.i32", + "amdgcn.permlane32.swap": "llvm.amdgcn.permlane32.swap", + "amdgcn.permlane64": "llvm.amdgcn.permlane64.i32", + "amdgcn.permlanex16": "llvm.amdgcn.permlanex16.i32", + "amdgcn.s.wqm.i32": "llvm.amdgcn.s.wqm.i32.i32", + "amdgcn.s.wqm.i64": "llvm.amdgcn.s.wqm.i64.i64", + "ballot.i64": "llvm.amdgcn.ballot.i64", + "ds.bpermute": "llvm.amdgcn.ds.bpermute", + "ds.read.tr16.b64": "llvm.amdgcn.ds.read.tr16.b64.v4i16", + "exp2.f32": "llvm.exp2.f32", + "fabs.bf16": "llvm.fabs.bf16", + "fabs.f16": "llvm.fabs.f16", + "fabs.f32": "llvm.fabs.f32", + "fmuladd.bf16": "llvm.fmuladd.bf16", + "fmuladd.f16": "llvm.fmuladd.f16", + "fmuladd.f32": "llvm.fmuladd.f32", + "fmuladd.v16f32": "llvm.fmuladd.v16f32", + "fmuladd.v2bf16": "llvm.fmuladd.v2bf16", + "fmuladd.v2f16": "llvm.fmuladd.v2f16", + "fmuladd.v2f32": "llvm.fmuladd.v2f32", + "fmuladd.v4bf16": "llvm.fmuladd.v4bf16", + "fmuladd.v4f16": "llvm.fmuladd.v4f16", + "fmuladd.v4f32": "llvm.fmuladd.v4f32", + "fmuladd.v8bf16": "llvm.fmuladd.v8bf16", + "fmuladd.v8f16": "llvm.fmuladd.v8f16", + "fmuladd.v8f32": "llvm.fmuladd.v8f32", + "global.atomic.fadd.v2f16": "(auto-upgraded)", + "global.load.lds": "llvm.amdgcn.global.load.lds", + "global.load.tr.b128.v8bf16": "llvm.amdgcn.global.load.tr.b128.v8bf16", + "global.load.tr.b128.v8f16": "llvm.amdgcn.global.load.tr.b128.v8f16", + "global.load.tr.b128.v8i16": "llvm.amdgcn.global.load.tr.b128.v8i16", + "iglp.opt": "llvm.amdgcn.iglp.opt", + "log2.f32": "llvm.log2.f32", + "make.buffer.rsrc.p1": "llvm.amdgcn.make.buffer.rsrc.p1", + "maxnum.bf16": "llvm.maxnum.bf16", + "maxnum.f16": "llvm.maxnum.f16", + "maxnum.f32": "llvm.maxnum.f32", + "mbcnt.hi": "llvm.amdgcn.mbcnt.hi", + "mbcnt.lo": "llvm.amdgcn.mbcnt.lo", + "mfma.f32.16x16x128.fp8.hero": "llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4.v8i32.v8i32", + "mfma.f32.16x16x16bf16.1k": "llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "mfma.f32.16x16x16f16": "llvm.amdgcn.mfma.f32.16x16x16f16", + "mfma.f32.16x16x32.bf16": "llvm.amdgcn.mfma.f32.16x16x32.bf16", + "mfma.f32.16x16x32.bf8.bf8": "llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "mfma.f32.16x16x32.f16": "llvm.amdgcn.mfma.f32.16x16x32.f16", + "mfma.f32.16x16x32.fp8.fp8": "llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "mfma.f32.16x16x4f32": "llvm.amdgcn.mfma.f32.16x16x4f32", + "mfma.f32.16x16x8.xf32": "llvm.amdgcn.mfma.f32.16x16x8.xf32", + "mfma.f32.32x32x16.bf16": "llvm.amdgcn.mfma.f32.32x32x16.bf16", + "mfma.f32.32x32x16.bf8.bf8": "llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "mfma.f32.32x32x16.f16": "llvm.amdgcn.mfma.f32.32x32x16.f16", + "mfma.f32.32x32x16.fp8.fp8": "llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "mfma.f32.32x32x2f32": "llvm.amdgcn.mfma.f32.32x32x2f32", + "mfma.f32.32x32x4.xf32": "llvm.amdgcn.mfma.f32.32x32x4.xf32", + "mfma.f32.32x32x8bf16.1k": "llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "mfma.f32.32x32x8f16": "llvm.amdgcn.mfma.f32.32x32x8f16", + "mfma.f32.4x4x4f16": "llvm.amdgcn.mfma.f32.4x4x4f16", + "mfma.scale.f32.16x16x128.f8f6f4": "llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "minnum.bf16": "llvm.minnum.bf16", + "minnum.f16": "llvm.minnum.f16", + "minnum.f32": "llvm.minnum.f32", + "mov.dpp8.f32": "llvm.amdgcn.mov.dpp8.f32", + "mov.dpp8.i32": "llvm.amdgcn.mov.dpp8.i32", + "raw.ptr.buffer.load.async.lds": "llvm.amdgcn.raw.ptr.buffer.load.async.lds", + "raw.ptr.buffer.load.i16": "llvm.amdgcn.raw.ptr.buffer.load.i16", + "raw.ptr.buffer.load.i32": "llvm.amdgcn.raw.ptr.buffer.load.i32", + "raw.ptr.buffer.load.lds": "llvm.amdgcn.raw.ptr.buffer.load.lds", + "raw.ptr.buffer.load.v2i32": "llvm.amdgcn.raw.ptr.buffer.load.v2i32", + "raw.ptr.buffer.load.v4i32": "llvm.amdgcn.raw.ptr.buffer.load.v4i32", + "raw.ptr.buffer.store.i16": "llvm.amdgcn.raw.ptr.buffer.store.i16", + "raw.ptr.buffer.store.i32": "llvm.amdgcn.raw.ptr.buffer.store.i32", + "raw.ptr.buffer.store.v2i32": "llvm.amdgcn.raw.ptr.buffer.store.v2i32", + "raw.ptr.buffer.store.v4i32": "llvm.amdgcn.raw.ptr.buffer.store.v4i32", + "rcp.f32": "llvm.amdgcn.rcp.f32", + "readfirstlane.i32": "llvm.amdgcn.readfirstlane.i32", + "readfirstlane.i64": "llvm.amdgcn.readfirstlane.i64", + "readlane.f32": "llvm.amdgcn.readlane.f32", + "readlane.i32": "llvm.amdgcn.readlane.i32", + "rint.f32": "llvm.rint.f32", + "rsqrt.f32": "llvm.amdgcn.rsq.f32", + "s.barrier": "llvm.amdgcn.s.barrier", + "s.barrier.init": "llvm.amdgcn.s.barrier.init", + "s.barrier.join": "llvm.amdgcn.s.barrier.join", + "s.barrier.leave": "llvm.amdgcn.s.barrier.leave", + "s.barrier.signal": "llvm.amdgcn.s.barrier.signal", + "s.barrier.signal.var": "llvm.amdgcn.s.barrier.signal.var", + "s.barrier.wait": "llvm.amdgcn.s.barrier.wait", + "s.setprio": "llvm.amdgcn.s.setprio", + "s.wait.dscnt": "llvm.amdgcn.s.wait.dscnt", + "s.wait.expcnt": "llvm.amdgcn.s.wait.expcnt", + "s.wait.kmcnt": "llvm.amdgcn.s.wait.kmcnt", + "s.wait.loadcnt": "llvm.amdgcn.s.wait.loadcnt", + "s.wait.storecnt": "llvm.amdgcn.s.wait.storecnt", + "s.waitcnt": "llvm.amdgcn.s.waitcnt", + "sched.barrier": "llvm.amdgcn.sched.barrier", + "sched.group.barrier": "llvm.amdgcn.sched.group.barrier", + "smax.i32": "llvm.smax.i32", + "smin.i32": "llvm.smin.i32", + "sqrt.f32": "llvm.sqrt.f32", + "update.dpp.i32": "llvm.amdgcn.update.dpp.i32", + "wmma.f32.16x16x16.bf16": "llvm.amdgcn.wmma.f32.16x16x16.bf16.v8f32.v16i16", + "wmma.f32.16x16x16.f16": "llvm.amdgcn.wmma.f32.16x16x16.f16.v8f32.v16f16", + "wmma.gfx12.f32.16x16x16.bf16": "llvm.amdgcn.wmma.f32.16x16x16.bf16.v8f32.v8i16", + "wmma.gfx12.f32.16x16x16.f16": "llvm.amdgcn.wmma.f32.16x16x16.f16.v8f32.v8f16", + "wmma.i32.16x16x16.iu4": "llvm.amdgcn.wmma.i32.16x16x16.iu4.v8i32.v2i32", + "wmma.i32.16x16x16.iu8": "llvm.amdgcn.wmma.i32.16x16x16.iu8.v8i32.v4i32", + "workgroup.x": "llvm.amdgcn.workgroup.id.x", + "workgroup.y": "llvm.amdgcn.workgroup.id.y", + "workgroup.z": "llvm.amdgcn.workgroup.id.z", + "workitem.x": "llvm.amdgcn.workitem.id.x", + "workitem.y": "llvm.amdgcn.workitem.id.y", + "workitem.z": "llvm.amdgcn.workitem.id.z", + "writelane.f32": "llvm.amdgcn.writelane.f32", + "writelane.i32": "llvm.amdgcn.writelane.i32" + }, + "keys": { + "amdgcn.alignbyte": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "amdgcn.cvt.f32.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "amdgcn.cvt.f32.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "amdgcn.cvt.pk.bf8.f32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.bf8.f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.bf8.f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.bf8.f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.bf8.f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.bf8.f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.bf8.f32", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "amdgcn.cvt.pk.f32.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "amdgcn.cvt.pk.f32.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "amdgcn.cvt.pk.fp8.f32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.fp8.f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.fp8.f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.fp8.f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.fp8.f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.fp8.f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.fp8.f32", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "amdgcn.cvt.scalef32.pk.f32.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.scalef32.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.scalef32.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.scalef32.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.scalef32.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.scalef32.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.scalef32.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "amdgcn.cvt.scalef32.pk.f32.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.scalef32.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.scalef32.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.scalef32.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.scalef32.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.scalef32.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.scalef32.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "amdgcn.ds.swizzle": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "amdgcn.exp2.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "amdgcn.perm": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "amdgcn.permlane16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane16", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "amdgcn.permlane32.swap": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "amdgcn.permlane64": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + } + }, + "amdgcn.permlanex16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlanex16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlanex16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlanex16", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "amdgcn.s.wqm.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "amdgcn.s.wqm.i64": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "asyncmark": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "av.load.b128.p0": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "av.load.b128.p1": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "av.store.b128.p0": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "av.store.b128.p1": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "ballot.i64": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "ds.bpermute": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "ds.load.tr16.b128.v8bf16": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "ds.load.tr16.b128.v8f16": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "ds.read.tr16.b128": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "ds.read.tr16.b64": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "exp2.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fabs.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fabs.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fabs.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.v16f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.v2bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.v2f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.v2f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.v4bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.v4f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.v4f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.v8bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.v8f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "fmuladd.v8f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "global.atomic.fadd.v2f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "global.load.async.to.lds.b128": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "global.load.async.to.lds.b32": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "global.load.async.to.lds.b64": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "global.load.async.to.lds.b8": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "global.load.lds": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.lds", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.lds", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.lds", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "probe_imm": 1, + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "probe_imm": 1, + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "probe_imm": 1, + "status": "ok", + "verified_on": "llvm20" + } + }, + "global.load.tr.b128.v8bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "global.load.tr.b128.v8f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "global.load.tr.b128.v8i16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "global.store.async.from.lds.b128": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "global.store.async.from.lds.b32": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "global.store.async.from.lds.b64": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "global.store.async.from.lds.b8": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "iglp.opt": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "log2.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "make.buffer.rsrc.p1": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "maxnum.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "maxnum.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "maxnum.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mbcnt.hi": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mbcnt.lo": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.16x16x128.fp4": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "mfma.f32.16x16x128.fp8.hero": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.16x16x16bf16.1k": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.16x16x16f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.16x16x32.bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.16x16x32.bf8.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.16x16x32.f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.16x16x32.fp8.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.16x16x4f32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x4f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x4f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x4f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.16x16x8.xf32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "mfma.f32.16x16x96.fp6": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "mfma.f32.32x32x16.bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.32x32x16.bf8.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.32x32x16.f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.32x32x16.fp8.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.32x32x2f32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x2f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x2f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x2f32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.32x32x4.xf32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "mfma.f32.32x32x8bf16.1k": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.32x32x8f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.f32.4x4x4f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.4x4x4f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.4x4x4f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.4x4x4f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mfma.scale.f32.16x16x128.f8f6f4": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "minnum.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "minnum.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "minnum.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "mov.dpp8.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mov.dpp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mov.dpp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mov.dpp8", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "mov.dpp8.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mov.dpp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mov.dpp8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mov.dpp8", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "raw.ptr.buffer.load.async.lds": { + "gfx11-generic": { + "evidence": "clang did not terminate within 60s", + "status": "toolchain_timeout", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "clang did not terminate within 60s", + "status": "toolchain_timeout", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "clang did not terminate within 60s", + "status": "toolchain_timeout", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "clang did not terminate within 60s", + "status": "toolchain_timeout", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "clang did not terminate within 60s", + "status": "toolchain_timeout", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "clang did not terminate within 60s", + "status": "toolchain_timeout", + "verified_on": "llvm20" + } + }, + "raw.ptr.buffer.load.i16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "raw.ptr.buffer.load.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "raw.ptr.buffer.load.lds": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "raw.ptr.buffer.load.v2i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "raw.ptr.buffer.load.v4i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "raw.ptr.buffer.store.i16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "raw.ptr.buffer.store.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "raw.ptr.buffer.store.v2i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "raw.ptr.buffer.store.v4i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "rcp.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "readfirstlane.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "readfirstlane.i64": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "readlane.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "readlane.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "rint.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "rsqrt.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "s.alloc.vgpr": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "s.barrier": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "s.barrier.init": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + } + }, + "s.barrier.join": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + } + }, + "s.barrier.leave": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + } + }, + "s.barrier.signal": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + } + }, + "s.barrier.signal.var": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + } + }, + "s.barrier.wait": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm20" + } + }, + "s.prefetch.inst.p0": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "s.prefetch.inst.p1": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "s.prefetch.inst.p4": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "s.setprio": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "s.wait.asynccnt": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "s.wait.dscnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "s.wait.event": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "s.wait.expcnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "s.wait.kmcnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "s.wait.loadcnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "s.wait.storecnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "s.wait.tensorcnt": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "s.waitcnt": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "s.wakeup.barrier": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "sched.barrier": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "sched.group.barrier": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "smax.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "smin.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "sqrt.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "tensor.load.to.lds": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "tensor.store.from.lds": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "update.dpp.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "wait.asyncmark": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wave.reduce.add.i32": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wave.reduce.fadd.f32": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wave.reduce.fmax.f32": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wave.reduce.max.i32": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wave.reduce.min.i32": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wmma.f32.16x16x16.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "wmma.f32.16x16x16.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "wmma.gfx12.f32.16x16x16.bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "wmma.gfx12.f32.16x16x16.f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "wmma.gfx1250.f32.16x16x32.bf16": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wmma.gfx1250.f32.16x16x32.f16": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wmma.gfx1250.f32.16x16x64.bf8.bf8": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wmma.gfx1250.f32.16x16x64.bf8.fp8": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wmma.gfx1250.f32.16x16x64.fp8.bf8": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wmma.gfx1250.f32.16x16x64.fp8.fp8": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wmma.i32.16x16x16.iu4": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "wmma.i32.16x16x16.iu8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm20" + } + }, + "wmma.scale.block16.gfx1250.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "wmma.scale.block32.gfx1250.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm20", + "status": "name_absent", + "verified_on": "llvm20" + } + }, + "workgroup.x": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "workgroup.y": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "workgroup.z": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "workitem.x": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "workitem.y": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "workitem.z": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "writelane.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + }, + "writelane.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx1250": { + "evidence": "invalid target ID", + "status": "target_unsupported", + "verified_on": "llvm20" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm20" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm20" + } + } + }, + "schema": "rocke.intrinsic_arch_domain/v1", + "toolchain": { + "arches": [ + "gfx11-generic", + "gfx1151", + "gfx1201", + "gfx1250", + "gfx90a", + "gfx942", + "gfx950" + ], + "clang": "AMD clang version 20.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-7.1.1 25444 27682a16360e33e37c4f3cc6adf9a620733f8fe1)", + "flavor": "llvm20", + "generator": 4, + "probe_cflags": [ + "-O0", + "-nogpulib" + ], + "probe_timeout_s": 60 + } +} diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/arch/data/intrinsic_arch_domain.llvm22.json b/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/arch/data/intrinsic_arch_domain.llvm22.json new file mode 100644 index 000000000000..f2d74722cd2e --- /dev/null +++ b/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/arch/data/intrinsic_arch_domain.llvm22.json @@ -0,0 +1,5739 @@ +{ + "_comment": "GENERATED by tools/gen_arch_domain.py -- do not hand-edit. Which intrinsic declarations link for which gfx target, measured by compiling AND LINKING a probe module per (key, arch). Only the flavor named in toolchain.flavor was measured; every other flavor is unvalidated on this host by construction. See dsl_docs/development/arch_axis_proposal.md.", + "canonical": { + "amdgcn.alignbyte": "llvm.amdgcn.alignbyte", + "amdgcn.cvt.f32.bf8": "llvm.amdgcn.cvt.f32.bf8", + "amdgcn.cvt.f32.fp8": "llvm.amdgcn.cvt.f32.fp8", + "amdgcn.cvt.pk.bf8.f32": "llvm.amdgcn.cvt.pk.bf8.f32", + "amdgcn.cvt.pk.f32.bf8": "llvm.amdgcn.cvt.pk.f32.bf8", + "amdgcn.cvt.pk.f32.fp8": "llvm.amdgcn.cvt.pk.f32.fp8", + "amdgcn.cvt.pk.fp8.f32": "llvm.amdgcn.cvt.pk.fp8.f32", + "amdgcn.cvt.scalef32.pk.f32.bf8": "llvm.amdgcn.cvt.scalef32.pk.f32.bf8", + "amdgcn.cvt.scalef32.pk.f32.fp8": "llvm.amdgcn.cvt.scalef32.pk.f32.fp8", + "amdgcn.ds.swizzle": "llvm.amdgcn.ds.swizzle", + "amdgcn.exp2.f32": "llvm.amdgcn.exp2.f32", + "amdgcn.perm": "llvm.amdgcn.perm", + "amdgcn.permlane16": "llvm.amdgcn.permlane16.i32", + "amdgcn.permlane32.swap": "llvm.amdgcn.permlane32.swap", + "amdgcn.permlane64": "llvm.amdgcn.permlane64.i32", + "amdgcn.permlanex16": "llvm.amdgcn.permlanex16.i32", + "amdgcn.s.wqm.i32": "llvm.amdgcn.s.wqm.i32.i32", + "amdgcn.s.wqm.i64": "llvm.amdgcn.s.wqm.i64.i64", + "ballot.i64": "llvm.amdgcn.ballot.i64", + "ds.bpermute": "llvm.amdgcn.ds.bpermute", + "ds.load.tr16.b128.v8bf16": "llvm.amdgcn.ds.load.tr16.b128.v8bf16", + "ds.load.tr16.b128.v8f16": "llvm.amdgcn.ds.load.tr16.b128.v8f16", + "ds.read.tr16.b64": "llvm.amdgcn.ds.read.tr16.b64.v4i16", + "exp2.f32": "llvm.exp2.f32", + "fabs.bf16": "llvm.fabs.bf16", + "fabs.f16": "llvm.fabs.f16", + "fabs.f32": "llvm.fabs.f32", + "fmuladd.bf16": "llvm.fmuladd.bf16", + "fmuladd.f16": "llvm.fmuladd.f16", + "fmuladd.f32": "llvm.fmuladd.f32", + "fmuladd.v16f32": "llvm.fmuladd.v16f32", + "fmuladd.v2bf16": "llvm.fmuladd.v2bf16", + "fmuladd.v2f16": "llvm.fmuladd.v2f16", + "fmuladd.v2f32": "llvm.fmuladd.v2f32", + "fmuladd.v4bf16": "llvm.fmuladd.v4bf16", + "fmuladd.v4f16": "llvm.fmuladd.v4f16", + "fmuladd.v4f32": "llvm.fmuladd.v4f32", + "fmuladd.v8bf16": "llvm.fmuladd.v8bf16", + "fmuladd.v8f16": "llvm.fmuladd.v8f16", + "fmuladd.v8f32": "llvm.fmuladd.v8f32", + "global.atomic.fadd.v2f16": "(auto-upgraded)", + "global.load.async.to.lds.b128": "llvm.amdgcn.global.load.async.to.lds.b128", + "global.load.async.to.lds.b32": "llvm.amdgcn.global.load.async.to.lds.b32", + "global.load.async.to.lds.b64": "llvm.amdgcn.global.load.async.to.lds.b64", + "global.load.async.to.lds.b8": "llvm.amdgcn.global.load.async.to.lds.b8", + "global.load.lds": "llvm.amdgcn.global.load.lds", + "global.load.tr.b128.v8bf16": "llvm.amdgcn.global.load.tr.b128.v8bf16", + "global.load.tr.b128.v8f16": "llvm.amdgcn.global.load.tr.b128.v8f16", + "global.load.tr.b128.v8i16": "llvm.amdgcn.global.load.tr.b128.v8i16", + "global.store.async.from.lds.b128": "llvm.amdgcn.global.store.async.from.lds.b128", + "global.store.async.from.lds.b32": "llvm.amdgcn.global.store.async.from.lds.b32", + "global.store.async.from.lds.b64": "llvm.amdgcn.global.store.async.from.lds.b64", + "global.store.async.from.lds.b8": "llvm.amdgcn.global.store.async.from.lds.b8", + "iglp.opt": "llvm.amdgcn.iglp.opt", + "log2.f32": "llvm.log2.f32", + "make.buffer.rsrc.p1": "llvm.amdgcn.make.buffer.rsrc.p8.p1", + "maxnum.bf16": "llvm.maxnum.bf16", + "maxnum.f16": "llvm.maxnum.f16", + "maxnum.f32": "llvm.maxnum.f32", + "mbcnt.hi": "llvm.amdgcn.mbcnt.hi", + "mbcnt.lo": "llvm.amdgcn.mbcnt.lo", + "mfma.f32.16x16x128.fp8.hero": "llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4.v8i32.v8i32", + "mfma.f32.16x16x16bf16.1k": "llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "mfma.f32.16x16x16f16": "llvm.amdgcn.mfma.f32.16x16x16f16", + "mfma.f32.16x16x32.bf16": "llvm.amdgcn.mfma.f32.16x16x32.bf16", + "mfma.f32.16x16x32.bf8.bf8": "llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "mfma.f32.16x16x32.f16": "llvm.amdgcn.mfma.f32.16x16x32.f16", + "mfma.f32.16x16x32.fp8.fp8": "llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "mfma.f32.16x16x4f32": "llvm.amdgcn.mfma.f32.16x16x4f32", + "mfma.f32.16x16x8.xf32": "llvm.amdgcn.mfma.f32.16x16x8.xf32", + "mfma.f32.32x32x16.bf16": "llvm.amdgcn.mfma.f32.32x32x16.bf16", + "mfma.f32.32x32x16.bf8.bf8": "llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "mfma.f32.32x32x16.f16": "llvm.amdgcn.mfma.f32.32x32x16.f16", + "mfma.f32.32x32x16.fp8.fp8": "llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "mfma.f32.32x32x2f32": "llvm.amdgcn.mfma.f32.32x32x2f32", + "mfma.f32.32x32x4.xf32": "llvm.amdgcn.mfma.f32.32x32x4.xf32", + "mfma.f32.32x32x8bf16.1k": "llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "mfma.f32.32x32x8f16": "llvm.amdgcn.mfma.f32.32x32x8f16", + "mfma.f32.4x4x4f16": "llvm.amdgcn.mfma.f32.4x4x4f16", + "minnum.bf16": "llvm.minnum.bf16", + "minnum.f16": "llvm.minnum.f16", + "minnum.f32": "llvm.minnum.f32", + "mov.dpp8.f32": "llvm.amdgcn.mov.dpp8.f32", + "mov.dpp8.i32": "llvm.amdgcn.mov.dpp8.i32", + "raw.ptr.buffer.load.i16": "llvm.amdgcn.raw.ptr.buffer.load.i16", + "raw.ptr.buffer.load.i32": "llvm.amdgcn.raw.ptr.buffer.load.i32", + "raw.ptr.buffer.load.lds": "llvm.amdgcn.raw.ptr.buffer.load.lds", + "raw.ptr.buffer.load.v2i32": "llvm.amdgcn.raw.ptr.buffer.load.v2i32", + "raw.ptr.buffer.load.v4i32": "llvm.amdgcn.raw.ptr.buffer.load.v4i32", + "raw.ptr.buffer.store.i16": "llvm.amdgcn.raw.ptr.buffer.store.i16", + "raw.ptr.buffer.store.i32": "llvm.amdgcn.raw.ptr.buffer.store.i32", + "raw.ptr.buffer.store.v2i32": "llvm.amdgcn.raw.ptr.buffer.store.v2i32", + "raw.ptr.buffer.store.v4i32": "llvm.amdgcn.raw.ptr.buffer.store.v4i32", + "rcp.f32": "llvm.amdgcn.rcp.f32", + "readfirstlane.i32": "llvm.amdgcn.readfirstlane.i32", + "readfirstlane.i64": "llvm.amdgcn.readfirstlane.i64", + "readlane.f32": "llvm.amdgcn.readlane.f32", + "readlane.i32": "llvm.amdgcn.readlane.i32", + "rint.f32": "llvm.rint.f32", + "rsqrt.f32": "llvm.amdgcn.rsq.f32", + "s.barrier": "llvm.amdgcn.s.barrier", + "s.barrier.init": "llvm.amdgcn.s.barrier.init", + "s.barrier.join": "llvm.amdgcn.s.barrier.join", + "s.barrier.leave": "llvm.amdgcn.s.barrier.leave", + "s.barrier.signal": "llvm.amdgcn.s.barrier.signal", + "s.barrier.signal.var": "llvm.amdgcn.s.barrier.signal.var", + "s.barrier.wait": "llvm.amdgcn.s.barrier.wait", + "s.setprio": "llvm.amdgcn.s.setprio", + "s.wait.asynccnt": "llvm.amdgcn.s.wait.asynccnt", + "s.wait.dscnt": "llvm.amdgcn.s.wait.dscnt", + "s.wait.expcnt": "llvm.amdgcn.s.wait.expcnt", + "s.wait.kmcnt": "llvm.amdgcn.s.wait.kmcnt", + "s.wait.loadcnt": "llvm.amdgcn.s.wait.loadcnt", + "s.wait.storecnt": "llvm.amdgcn.s.wait.storecnt", + "s.wait.tensorcnt": "llvm.amdgcn.s.wait.tensorcnt", + "s.waitcnt": "llvm.amdgcn.s.waitcnt", + "sched.barrier": "llvm.amdgcn.sched.barrier", + "sched.group.barrier": "llvm.amdgcn.sched.group.barrier", + "smax.i32": "llvm.smax.i32", + "smin.i32": "llvm.smin.i32", + "sqrt.f32": "llvm.sqrt.f32", + "update.dpp.i32": "llvm.amdgcn.update.dpp.i32", + "wave.reduce.add.i32": "llvm.amdgcn.wave.reduce.add.i32", + "wave.reduce.max.i32": "llvm.amdgcn.wave.reduce.max.i32", + "wave.reduce.min.i32": "llvm.amdgcn.wave.reduce.min.i32", + "wmma.f32.16x16x16.bf16": "llvm.amdgcn.wmma.f32.16x16x16.bf16.v8f32.v16i16", + "wmma.f32.16x16x16.f16": "llvm.amdgcn.wmma.f32.16x16x16.f16.v8f32.v16f16", + "wmma.gfx12.f32.16x16x16.bf16": "llvm.amdgcn.wmma.f32.16x16x16.bf16.v8f32.v8i16", + "wmma.gfx12.f32.16x16x16.f16": "llvm.amdgcn.wmma.f32.16x16x16.f16.v8f32.v8f16", + "wmma.gfx1250.f32.16x16x32.bf16": "llvm.amdgcn.wmma.f32.16x16x32.bf16.v8f32.v16bf16", + "wmma.gfx1250.f32.16x16x32.f16": "llvm.amdgcn.wmma.f32.16x16x32.f16.v8f32.v16f16", + "wmma.gfx1250.f32.16x16x64.bf8.bf8": "llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8.v8f32.v8i32", + "wmma.gfx1250.f32.16x16x64.bf8.fp8": "llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8.v8f32.v8i32", + "wmma.gfx1250.f32.16x16x64.fp8.bf8": "llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8.v8f32.v8i32", + "wmma.gfx1250.f32.16x16x64.fp8.fp8": "llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8.v8f32.v8i32", + "wmma.i32.16x16x16.iu4": "llvm.amdgcn.wmma.i32.16x16x16.iu4.v8i32.v2i32", + "wmma.i32.16x16x16.iu8": "llvm.amdgcn.wmma.i32.16x16x16.iu8.v8i32.v4i32", + "wmma.scale.block16.gfx1250.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32": "llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32", + "wmma.scale.block32.gfx1250.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32": "llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32", + "workgroup.x": "llvm.amdgcn.workgroup.id.x", + "workgroup.y": "llvm.amdgcn.workgroup.id.y", + "workgroup.z": "llvm.amdgcn.workgroup.id.z", + "workitem.x": "llvm.amdgcn.workitem.id.x", + "workitem.y": "llvm.amdgcn.workitem.id.y", + "workitem.z": "llvm.amdgcn.workitem.id.z", + "writelane.f32": "llvm.amdgcn.writelane.f32", + "writelane.i32": "llvm.amdgcn.writelane.i32" + }, + "keys": { + "amdgcn.alignbyte": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.cvt.f32.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.cvt.f32.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.cvt.pk.bf8.f32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.bf8.f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.bf8.f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.bf8.f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.cvt.pk.f32.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.cvt.pk.f32.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.cvt.pk.fp8.f32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.fp8.f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.fp8.f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.fp8.f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.cvt.scalef32.pk.f32.bf8": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.cvt.scalef32.pk.f32.fp8": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.ds.swizzle": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.exp2.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.perm": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.permlane16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane16", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "amdgcn.permlane32.swap": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.permlane64": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + } + }, + "amdgcn.permlanex16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlanex16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlanex16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlanex16", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "amdgcn.s.wqm.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "amdgcn.s.wqm.i64": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "asyncmark": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "av.load.b128.p0": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "av.load.b128.p1": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "av.store.b128.p0": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "av.store.b128.p1": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "ballot.i64": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "ds.bpermute": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "ds.load.tr16.b128.v8bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "ds.load.tr16.b128.v8f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "ds.read.tr16.b128": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "ds.read.tr16.b64": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "exp2.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fabs.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fabs.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fabs.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.v16f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.v2bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.v2f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.v2f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.v4bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.v4f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.v4f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.v8bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.v8f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "fmuladd.v8f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "global.atomic.fadd.v2f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "global.load.async.to.lds.b128": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b128", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "global.load.async.to.lds.b32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b32", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "global.load.async.to.lds.b64": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b64", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "global.load.async.to.lds.b8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b8", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "global.load.lds": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.lds", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.lds", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.lds", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.lds", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "probe_imm": 1, + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "probe_imm": 1, + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "probe_imm": 1, + "status": "ok", + "verified_on": "llvm22" + } + }, + "global.load.tr.b128.v8bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "global.load.tr.b128.v8f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "global.load.tr.b128.v8i16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "global.store.async.from.lds.b128": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b128", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b128", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "global.store.async.from.lds.b32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b32", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "global.store.async.from.lds.b64": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b64", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b64", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "global.store.async.from.lds.b8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b8", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "iglp.opt": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "log2.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "make.buffer.rsrc.p1": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "maxnum.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "maxnum.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "maxnum.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mbcnt.hi": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mbcnt.lo": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.16x16x128.fp4": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "mfma.f32.16x16x128.fp8.hero": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.16x16x16bf16.1k": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.16x16x16f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.16x16x32.bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.16x16x32.bf8.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.16x16x32.f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.16x16x32.fp8.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.16x16x4f32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x4f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x4f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x4f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x4f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.16x16x8.xf32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "mfma.f32.16x16x96.fp6": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "mfma.f32.32x32x16.bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.32x32x16.bf8.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.32x32x16.f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.32x32x16.fp8.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.32x32x2f32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x2f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x2f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x2f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x2f32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.32x32x4.xf32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "mfma.f32.32x32x8bf16.1k": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.32x32x8f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.f32.4x4x4f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.4x4x4f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.4x4x4f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.4x4x4f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.4x4x4f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mfma.scale.f32.16x16x128.f8f6f4": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "minnum.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "minnum.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "minnum.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "mov.dpp8.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mov.dpp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mov.dpp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mov.dpp8", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "mov.dpp8.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mov.dpp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mov.dpp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mov.dpp8", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "raw.ptr.buffer.load.async.lds": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "raw.ptr.buffer.load.i16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "raw.ptr.buffer.load.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "raw.ptr.buffer.load.lds": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "raw.ptr.buffer.load.v2i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "raw.ptr.buffer.load.v4i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "raw.ptr.buffer.store.i16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "raw.ptr.buffer.store.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "raw.ptr.buffer.store.v2i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "raw.ptr.buffer.store.v4i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "rcp.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "readfirstlane.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "readfirstlane.i64": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "readlane.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "readlane.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "rint.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "rsqrt.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "s.alloc.vgpr": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "s.barrier": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "s.barrier.init": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + } + }, + "s.barrier.join": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + } + }, + "s.barrier.leave": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + } + }, + "s.barrier.signal": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + } + }, + "s.barrier.signal.var": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + } + }, + "s.barrier.wait": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm22" + } + }, + "s.prefetch.inst.p0": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "s.prefetch.inst.p1": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "s.prefetch.inst.p4": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "s.setprio": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "s.wait.asynccnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.asynccnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.asynccnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.asynccnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.asynccnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.asynccnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.asynccnt", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "s.wait.dscnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "s.wait.event": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "s.wait.expcnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "s.wait.kmcnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "s.wait.loadcnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "s.wait.storecnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "s.wait.tensorcnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.tensorcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.tensorcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.tensorcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.tensorcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.tensorcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.tensorcnt", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "s.waitcnt": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.waitcnt", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "s.wakeup.barrier": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "sched.barrier": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "sched.group.barrier": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "smax.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "smin.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "sqrt.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "tensor.load.to.lds": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "tensor.store.from.lds": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "update.dpp.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "wait.asyncmark": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "wave.reduce.add.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "wave.reduce.fadd.f32": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "wave.reduce.fmax.f32": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm22", + "status": "name_absent", + "verified_on": "llvm22" + } + }, + "wave.reduce.max.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "wave.reduce.min.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "wmma.f32.16x16x16.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.f32.16x16x16.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.gfx12.f32.16x16x16.bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.gfx12.f32.16x16x16.f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.gfx1250.f32.16x16x32.bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.gfx1250.f32.16x16x32.f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.gfx1250.f32.16x16x64.bf8.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.gfx1250.f32.16x16x64.bf8.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.gfx1250.f32.16x16x64.fp8.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.gfx1250.f32.16x16x64.fp8.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.i32.16x16x16.iu4": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.i32.16x16x16.iu8": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.scale.block16.gfx1250.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "wmma.scale.block32.gfx1250.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm22" + } + }, + "workgroup.x": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "workgroup.y": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "workgroup.z": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "workitem.x": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "workitem.y": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "workitem.z": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "writelane.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + }, + "writelane.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm22" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm22" + } + } + }, + "schema": "rocke.intrinsic_arch_domain/v1", + "toolchain": { + "arches": [ + "gfx11-generic", + "gfx1151", + "gfx1201", + "gfx1250", + "gfx90a", + "gfx942", + "gfx950" + ], + "clang": "AMD clang version 22.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-7.2.0 26014 7b800a19466229b8479a78de19143dc33c3ab9b5)", + "flavor": "llvm22", + "generator": 4, + "probe_cflags": [ + "-O0", + "-nogpulib" + ], + "probe_timeout_s": 60 + } +} diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/arch/data/intrinsic_arch_domain.llvm23.json b/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/arch/data/intrinsic_arch_domain.llvm23.json new file mode 100644 index 000000000000..a8fbafec0ea9 --- /dev/null +++ b/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/arch/data/intrinsic_arch_domain.llvm23.json @@ -0,0 +1,5686 @@ +{ + "_comment": "GENERATED by tools/gen_arch_domain.py -- do not hand-edit. Which intrinsic declarations link for which gfx target, measured by compiling AND LINKING a probe module per (key, arch). Only the flavor named in toolchain.flavor was measured; every other flavor is unvalidated on this host by construction. See dsl_docs/development/arch_axis_proposal.md.", + "canonical": { + "amdgcn.alignbyte": "llvm.amdgcn.alignbyte", + "amdgcn.cvt.f32.bf8": "llvm.amdgcn.cvt.f32.bf8", + "amdgcn.cvt.f32.fp8": "llvm.amdgcn.cvt.f32.fp8", + "amdgcn.cvt.pk.bf8.f32": "llvm.amdgcn.cvt.pk.bf8.f32", + "amdgcn.cvt.pk.f32.bf8": "llvm.amdgcn.cvt.pk.f32.bf8", + "amdgcn.cvt.pk.f32.fp8": "llvm.amdgcn.cvt.pk.f32.fp8", + "amdgcn.cvt.pk.fp8.f32": "llvm.amdgcn.cvt.pk.fp8.f32", + "amdgcn.cvt.scalef32.pk.f32.bf8": "llvm.amdgcn.cvt.scalef32.pk.f32.bf8", + "amdgcn.cvt.scalef32.pk.f32.fp8": "llvm.amdgcn.cvt.scalef32.pk.f32.fp8", + "amdgcn.ds.swizzle": "llvm.amdgcn.ds.swizzle", + "amdgcn.exp2.f32": "llvm.amdgcn.exp2.f32", + "amdgcn.perm": "llvm.amdgcn.perm", + "amdgcn.permlane16": "llvm.amdgcn.permlane16.i32", + "amdgcn.permlane32.swap": "llvm.amdgcn.permlane32.swap", + "amdgcn.permlane64": "llvm.amdgcn.permlane64.i32", + "amdgcn.permlanex16": "llvm.amdgcn.permlanex16.i32", + "amdgcn.s.wqm.i32": "llvm.amdgcn.s.wqm.i32.i32", + "amdgcn.s.wqm.i64": "llvm.amdgcn.s.wqm.i64.i64", + "asyncmark": "llvm.amdgcn.asyncmark", + "av.load.b128.p0": "llvm.amdgcn.av.load.b128.p0", + "av.load.b128.p1": "llvm.amdgcn.av.load.b128.p1", + "av.store.b128.p0": "llvm.amdgcn.av.store.b128.p0", + "av.store.b128.p1": "llvm.amdgcn.av.store.b128.p1", + "ballot.i64": "llvm.amdgcn.ballot.i64", + "ds.bpermute": "llvm.amdgcn.ds.bpermute", + "ds.load.tr16.b128.v8bf16": "llvm.amdgcn.ds.load.tr16.b128.v8bf16", + "ds.load.tr16.b128.v8f16": "llvm.amdgcn.ds.load.tr16.b128.v8f16", + "ds.read.tr16.b64": "llvm.amdgcn.ds.read.tr16.b64.v4i16", + "exp2.f32": "llvm.exp2.f32", + "fabs.bf16": "llvm.fabs.bf16", + "fabs.f16": "llvm.fabs.f16", + "fabs.f32": "llvm.fabs.f32", + "fmuladd.bf16": "llvm.fmuladd.bf16", + "fmuladd.f16": "llvm.fmuladd.f16", + "fmuladd.f32": "llvm.fmuladd.f32", + "fmuladd.v16f32": "llvm.fmuladd.v16f32", + "fmuladd.v2bf16": "llvm.fmuladd.v2bf16", + "fmuladd.v2f16": "llvm.fmuladd.v2f16", + "fmuladd.v2f32": "llvm.fmuladd.v2f32", + "fmuladd.v4bf16": "llvm.fmuladd.v4bf16", + "fmuladd.v4f16": "llvm.fmuladd.v4f16", + "fmuladd.v4f32": "llvm.fmuladd.v4f32", + "fmuladd.v8bf16": "llvm.fmuladd.v8bf16", + "fmuladd.v8f16": "llvm.fmuladd.v8f16", + "fmuladd.v8f32": "llvm.fmuladd.v8f32", + "global.atomic.fadd.v2f16": "(auto-upgraded)", + "global.load.async.to.lds.b128": "llvm.amdgcn.global.load.async.to.lds.b128", + "global.load.async.to.lds.b32": "llvm.amdgcn.global.load.async.to.lds.b32", + "global.load.async.to.lds.b64": "llvm.amdgcn.global.load.async.to.lds.b64", + "global.load.async.to.lds.b8": "llvm.amdgcn.global.load.async.to.lds.b8", + "global.load.lds": "llvm.amdgcn.global.load.lds", + "global.load.tr.b128.v8bf16": "llvm.amdgcn.global.load.tr.b128.v8bf16", + "global.load.tr.b128.v8f16": "llvm.amdgcn.global.load.tr.b128.v8f16", + "global.load.tr.b128.v8i16": "llvm.amdgcn.global.load.tr.b128.v8i16", + "global.store.async.from.lds.b128": "llvm.amdgcn.global.store.async.from.lds.b128", + "global.store.async.from.lds.b32": "llvm.amdgcn.global.store.async.from.lds.b32", + "global.store.async.from.lds.b64": "llvm.amdgcn.global.store.async.from.lds.b64", + "global.store.async.from.lds.b8": "llvm.amdgcn.global.store.async.from.lds.b8", + "iglp.opt": "llvm.amdgcn.iglp.opt", + "log2.f32": "llvm.log2.f32", + "make.buffer.rsrc.p1": "llvm.amdgcn.make.buffer.rsrc.p8.p1", + "maxnum.bf16": "llvm.maxnum.bf16", + "maxnum.f16": "llvm.maxnum.f16", + "maxnum.f32": "llvm.maxnum.f32", + "mbcnt.hi": "llvm.amdgcn.mbcnt.hi", + "mbcnt.lo": "llvm.amdgcn.mbcnt.lo", + "mfma.f32.16x16x128.fp8.hero": "llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4.v8i32.v8i32", + "mfma.f32.16x16x16bf16.1k": "llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "mfma.f32.16x16x16f16": "llvm.amdgcn.mfma.f32.16x16x16f16", + "mfma.f32.16x16x32.bf16": "llvm.amdgcn.mfma.f32.16x16x32.bf16", + "mfma.f32.16x16x32.bf8.bf8": "llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "mfma.f32.16x16x32.f16": "llvm.amdgcn.mfma.f32.16x16x32.f16", + "mfma.f32.16x16x32.fp8.fp8": "llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "mfma.f32.16x16x4f32": "llvm.amdgcn.mfma.f32.16x16x4f32", + "mfma.f32.16x16x8.xf32": "llvm.amdgcn.mfma.f32.16x16x8.xf32", + "mfma.f32.32x32x16.bf16": "llvm.amdgcn.mfma.f32.32x32x16.bf16", + "mfma.f32.32x32x16.bf8.bf8": "llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "mfma.f32.32x32x16.f16": "llvm.amdgcn.mfma.f32.32x32x16.f16", + "mfma.f32.32x32x16.fp8.fp8": "llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "mfma.f32.32x32x2f32": "llvm.amdgcn.mfma.f32.32x32x2f32", + "mfma.f32.32x32x4.xf32": "llvm.amdgcn.mfma.f32.32x32x4.xf32", + "mfma.f32.32x32x8bf16.1k": "llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "mfma.f32.32x32x8f16": "llvm.amdgcn.mfma.f32.32x32x8f16", + "mfma.f32.4x4x4f16": "llvm.amdgcn.mfma.f32.4x4x4f16", + "mfma.scale.f32.16x16x128.f8f6f4": "llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4.v8i32.v8i32", + "minnum.bf16": "llvm.minnum.bf16", + "minnum.f16": "llvm.minnum.f16", + "minnum.f32": "llvm.minnum.f32", + "mov.dpp8.f32": "llvm.amdgcn.mov.dpp8.f32", + "mov.dpp8.i32": "llvm.amdgcn.mov.dpp8.i32", + "raw.ptr.buffer.load.async.lds": "llvm.amdgcn.raw.ptr.buffer.load.async.lds", + "raw.ptr.buffer.load.i16": "llvm.amdgcn.raw.ptr.buffer.load.i16", + "raw.ptr.buffer.load.i32": "llvm.amdgcn.raw.ptr.buffer.load.i32", + "raw.ptr.buffer.load.lds": "llvm.amdgcn.raw.ptr.buffer.load.lds", + "raw.ptr.buffer.load.v2i32": "llvm.amdgcn.raw.ptr.buffer.load.v2i32", + "raw.ptr.buffer.load.v4i32": "llvm.amdgcn.raw.ptr.buffer.load.v4i32", + "raw.ptr.buffer.store.i16": "llvm.amdgcn.raw.ptr.buffer.store.i16", + "raw.ptr.buffer.store.i32": "llvm.amdgcn.raw.ptr.buffer.store.i32", + "raw.ptr.buffer.store.v2i32": "llvm.amdgcn.raw.ptr.buffer.store.v2i32", + "raw.ptr.buffer.store.v4i32": "llvm.amdgcn.raw.ptr.buffer.store.v4i32", + "rcp.f32": "llvm.amdgcn.rcp.f32", + "readfirstlane.i32": "llvm.amdgcn.readfirstlane.i32", + "readfirstlane.i64": "llvm.amdgcn.readfirstlane.i64", + "readlane.f32": "llvm.amdgcn.readlane.f32", + "readlane.i32": "llvm.amdgcn.readlane.i32", + "rint.f32": "llvm.rint.f32", + "rsqrt.f32": "llvm.amdgcn.rsq.f32", + "s.alloc.vgpr": "llvm.amdgcn.s.alloc.vgpr", + "s.barrier": "llvm.amdgcn.s.barrier", + "s.barrier.init": "llvm.amdgcn.s.barrier.init", + "s.barrier.join": "llvm.amdgcn.s.barrier.join", + "s.barrier.leave": "llvm.amdgcn.s.barrier.leave", + "s.barrier.signal": "llvm.amdgcn.s.barrier.signal", + "s.barrier.signal.var": "llvm.amdgcn.s.barrier.signal.var", + "s.barrier.wait": "llvm.amdgcn.s.barrier.wait", + "s.prefetch.inst.p0": "llvm.amdgcn.s.prefetch.inst.p0", + "s.prefetch.inst.p1": "llvm.amdgcn.s.prefetch.inst.p1", + "s.prefetch.inst.p4": "llvm.amdgcn.s.prefetch.inst.p4", + "s.setprio": "llvm.amdgcn.s.setprio", + "s.wait.asynccnt": "llvm.amdgcn.s.wait.asynccnt", + "s.wait.dscnt": "llvm.amdgcn.s.wait.dscnt", + "s.wait.event": "llvm.amdgcn.s.wait.event", + "s.wait.expcnt": "llvm.amdgcn.s.wait.expcnt", + "s.wait.kmcnt": "llvm.amdgcn.s.wait.kmcnt", + "s.wait.loadcnt": "llvm.amdgcn.s.wait.loadcnt", + "s.wait.storecnt": "llvm.amdgcn.s.wait.storecnt", + "s.wait.tensorcnt": "llvm.amdgcn.s.wait.tensorcnt", + "s.waitcnt": "llvm.amdgcn.s.waitcnt", + "s.wakeup.barrier": "llvm.amdgcn.s.wakeup.barrier", + "sched.barrier": "llvm.amdgcn.sched.barrier", + "sched.group.barrier": "llvm.amdgcn.sched.group.barrier", + "smax.i32": "llvm.smax.i32", + "smin.i32": "llvm.smin.i32", + "sqrt.f32": "llvm.sqrt.f32", + "tensor.load.to.lds": "llvm.amdgcn.tensor.load.to.lds", + "tensor.store.from.lds": "llvm.amdgcn.tensor.store.from.lds", + "update.dpp.i32": "llvm.amdgcn.update.dpp.i32", + "wait.asyncmark": "llvm.amdgcn.wait.asyncmark", + "wave.reduce.add.i32": "llvm.amdgcn.wave.reduce.add.i32", + "wave.reduce.fadd.f32": "llvm.amdgcn.wave.reduce.fadd.f32", + "wave.reduce.fmax.f32": "llvm.amdgcn.wave.reduce.fmax.f32", + "wave.reduce.max.i32": "llvm.amdgcn.wave.reduce.max.i32", + "wave.reduce.min.i32": "llvm.amdgcn.wave.reduce.min.i32", + "wmma.f32.16x16x16.bf16": "llvm.amdgcn.wmma.f32.16x16x16.bf16.v8f32.v16i16", + "wmma.f32.16x16x16.f16": "llvm.amdgcn.wmma.f32.16x16x16.f16.v8f32.v16f16", + "wmma.gfx12.f32.16x16x16.bf16": "llvm.amdgcn.wmma.f32.16x16x16.bf16.v8f32.v8i16", + "wmma.gfx12.f32.16x16x16.f16": "llvm.amdgcn.wmma.f32.16x16x16.f16.v8f32.v8f16", + "wmma.gfx1250.f32.16x16x32.bf16": "(auto-upgraded)", + "wmma.gfx1250.f32.16x16x32.f16": "(auto-upgraded)", + "wmma.gfx1250.f32.16x16x64.bf8.bf8": "llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8.v8f32.v8i32", + "wmma.gfx1250.f32.16x16x64.bf8.fp8": "llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8.v8f32.v8i32", + "wmma.gfx1250.f32.16x16x64.fp8.bf8": "llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8.v8f32.v8i32", + "wmma.gfx1250.f32.16x16x64.fp8.fp8": "llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8.v8f32.v8i32", + "wmma.i32.16x16x16.iu4": "llvm.amdgcn.wmma.i32.16x16x16.iu4.v8i32.v2i32", + "wmma.i32.16x16x16.iu8": "llvm.amdgcn.wmma.i32.16x16x16.iu8.v8i32.v4i32", + "wmma.scale.block16.gfx1250.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32": "llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32", + "wmma.scale.block32.gfx1250.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32": "llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32", + "workgroup.x": "llvm.amdgcn.workgroup.id.x", + "workgroup.y": "llvm.amdgcn.workgroup.id.y", + "workgroup.z": "llvm.amdgcn.workgroup.id.z", + "workitem.x": "llvm.amdgcn.workitem.id.x", + "workitem.y": "llvm.amdgcn.workitem.id.y", + "workitem.z": "llvm.amdgcn.workitem.id.z", + "writelane.f32": "llvm.amdgcn.writelane.f32", + "writelane.i32": "llvm.amdgcn.writelane.i32" + }, + "keys": { + "amdgcn.alignbyte": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.cvt.f32.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.cvt.f32.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.cvt.pk.bf8.f32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.bf8.f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.bf8.f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.bf8.f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.cvt.pk.f32.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.cvt.pk.f32.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.f32.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.cvt.pk.fp8.f32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.fp8.f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.fp8.f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.cvt.pk.fp8.f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.cvt.scalef32.pk.f32.bf8": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.cvt.scalef32.pk.f32.fp8": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.ds.swizzle": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.exp2.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.perm": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.permlane16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "error: :0:0: in function probe void (ptr addrspace(1), ptr, i32, i32, i32, i32): intrinsic not supported on subtarget", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "error: :0:0: in function probe void (ptr addrspace(1), ptr, i32, i32, i32, i32): intrinsic not supported on subtarget", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "error: :0:0: in function probe void (ptr addrspace(1), ptr, i32, i32, i32, i32): intrinsic not supported on subtarget", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "amdgcn.permlane32.swap": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.permlane32.swap", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.permlane64": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.permlanex16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "error: :0:0: in function probe void (ptr addrspace(1), ptr, i32, i32, i32, i32): intrinsic not supported on subtarget", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "error: :0:0: in function probe void (ptr addrspace(1), ptr, i32, i32, i32, i32): intrinsic not supported on subtarget", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "error: :0:0: in function probe void (ptr addrspace(1), ptr, i32, i32, i32, i32): intrinsic not supported on subtarget", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "amdgcn.s.wqm.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "amdgcn.s.wqm.i64": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "asyncmark": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.asyncmark", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.asyncmark", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.asyncmark", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "av.load.b128.p0": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "av.load.b128.p1": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "av.store.b128.p0": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "av.store.b128.p1": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "ballot.i64": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "ds.bpermute": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "ds.load.tr16.b128.v8bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "ds.load.tr16.b128.v8f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.load.tr16.b128", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "ds.read.tr16.b128": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + } + }, + "ds.read.tr16.b64": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.ds.read.tr16.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "exp2.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fabs.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fabs.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fabs.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.v16f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.v2bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.v2f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.v2f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.v4bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.v4f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.v4f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.v8bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.v8f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "fmuladd.v8f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "global.atomic.fadd.v2f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "global.load.async.to.lds.b128": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b128", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "global.load.async.to.lds.b32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b32", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "global.load.async.to.lds.b64": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b64", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "global.load.async.to.lds.b8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.async.to.lds.b8", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "global.load.lds": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.lds", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.lds", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.lds", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.lds", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "probe_imm": 1, + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "probe_imm": 1, + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "probe_imm": 1, + "status": "ok", + "verified_on": "llvm23" + } + }, + "global.load.tr.b128.v8bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "global.load.tr.b128.v8f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "global.load.tr.b128.v8i16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.load.tr.b128", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "global.store.async.from.lds.b128": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b128", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b128", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "global.store.async.from.lds.b32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b32", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "global.store.async.from.lds.b64": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b64", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b64", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "global.store.async.from.lds.b8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.global.store.async.from.lds.b8", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "iglp.opt": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "log2.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "make.buffer.rsrc.p1": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "maxnum.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "maxnum.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "maxnum.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mbcnt.hi": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mbcnt.lo": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.16x16x128.fp4": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + } + }, + "mfma.f32.16x16x128.fp8.hero": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.16x16x16bf16.1k": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16bf16.1k", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.16x16x16f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x16f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.16x16x32.bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.16x16x32.bf8.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.16x16x32.f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.16x16x32.fp8.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.16x16x4f32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x4f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x4f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x4f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x4f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.16x16x8.xf32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.16x16x8.xf32", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "mfma.f32.16x16x96.fp6": { + "gfx11-generic": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "not an intrinsic in llvm23", + "status": "name_absent", + "verified_on": "llvm23" + } + }, + "mfma.f32.32x32x16.bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.32x32x16.bf8.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.32x32x16.f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.32x32x16.fp8.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.32x32x2f32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x2f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x2f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x2f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x2f32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.32x32x4.xf32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x4.xf32", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "mfma.f32.32x32x8bf16.1k": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8bf16.1k", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.32x32x8f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.32x32x8f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.f32.4x4x4f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.4x4x4f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.4x4x4f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.4x4x4f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.f32.4x4x4f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mfma.scale.f32.16x16x128.f8f6f4": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "minnum.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "minnum.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "minnum.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "mov.dpp8.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "error: :0:0: in function probe void (ptr addrspace(1), ptr, float): intrinsic not supported on subtarget", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "error: :0:0: in function probe void (ptr addrspace(1), ptr, float): intrinsic not supported on subtarget", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "error: :0:0: in function probe void (ptr addrspace(1), ptr, float): intrinsic not supported on subtarget", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "mov.dpp8.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "error: :0:0: in function probe void (ptr addrspace(1), ptr, i32): intrinsic not supported on subtarget", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "error: :0:0: in function probe void (ptr addrspace(1), ptr, i32): intrinsic not supported on subtarget", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "error: :0:0: in function probe void (ptr addrspace(1), ptr, i32): intrinsic not supported on subtarget", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "raw.ptr.buffer.load.async.lds": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "raw.ptr.buffer.load.i16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "raw.ptr.buffer.load.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "raw.ptr.buffer.load.lds": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Do not know how to expand this operator's operand!", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "raw.ptr.buffer.load.v2i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "raw.ptr.buffer.load.v4i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "raw.ptr.buffer.store.i16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "raw.ptr.buffer.store.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "raw.ptr.buffer.store.v2i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "raw.ptr.buffer.store.v4i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "rcp.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "readfirstlane.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "readfirstlane.i64": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "readlane.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "readlane.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "rint.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "rsqrt.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "s.alloc.vgpr": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.alloc.vgpr", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.alloc.vgpr", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.alloc.vgpr", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.alloc.vgpr", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.alloc.vgpr", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.barrier": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "s.barrier.init": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + } + }, + "s.barrier.join": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + } + }, + "s.barrier.leave": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.barrier.leave", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.barrier.leave", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.barrier.leave", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.barrier.leave", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.barrier.leave", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.barrier.signal": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + } + }, + "s.barrier.signal.var": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + } + }, + "s.barrier.wait": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + } + }, + "s.prefetch.inst.p0": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.prefetch.inst.p1": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.prefetch.inst.p4": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.prefetch.inst", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.setprio": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "s.wait.asynccnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.asynccnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.asynccnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.asynccnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.asynccnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.asynccnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.asynccnt", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.wait.dscnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.dscnt", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.wait.event": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.event", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.event", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.event", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.event", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.wait.expcnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.expcnt", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.wait.kmcnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.kmcnt", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.wait.loadcnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.loadcnt", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.wait.storecnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.storecnt", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.wait.tensorcnt": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.tensorcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.tensorcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.tensorcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.tensorcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.tensorcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wait.tensorcnt", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "s.waitcnt": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.waitcnt", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "s.wakeup.barrier": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wakeup.barrier", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wakeup.barrier", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wakeup.barrier", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wakeup.barrier", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wakeup.barrier", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.s.wakeup.barrier", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "sched.barrier": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "sched.group.barrier": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "smax.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "smin.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "sqrt.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "tensor.load.to.lds": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + } + }, + "tensor.store.from.lds": { + "gfx11-generic": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "Segmentation fault", + "status": "toolchain_crash", + "verified_on": "llvm23" + } + }, + "update.dpp.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "wait.asyncmark": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wait.asyncmark", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wait.asyncmark", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wait.asyncmark", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "wave.reduce.add.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "wave.reduce.fadd.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "wave.reduce.fmax.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "wave.reduce.max.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "wave.reduce.min.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "wmma.f32.16x16x16.bf16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.f32.16x16x16.f16": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.gfx12.f32.16x16x16.bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.gfx12.f32.16x16x16.f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x16.f16", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.gfx1250.f32.16x16x32.bf16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.bf16", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.gfx1250.f32.16x16x32.f16": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x32.f16", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.gfx1250.f32.16x16x64.bf8.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.gfx1250.f32.16x16x64.bf8.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.bf8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.gfx1250.f32.16x16x64.fp8.bf8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.bf8", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.gfx1250.f32.16x16x64.fp8.fp8": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.f32.16x16x64.fp8.fp8", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.i32.16x16x16.iu4": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu4", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.i32.16x16x16.iu8": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.i32.16x16x16.iu8", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.scale.block16.gfx1250.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale16.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "wmma.scale.block32.gfx1250.f32.16x16x128.f8f6f4.v8f32.v16i32.v16i32": { + "gfx11-generic": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1151": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1201": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx942": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + }, + "gfx950": { + "evidence": "fatal error: error in backend: Cannot select: intrinsic %llvm.amdgcn.wmma.scale.f32.16x16x128.f8f6f4", + "status": "arch_absent", + "verified_on": "llvm23" + } + }, + "workgroup.x": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "workgroup.y": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "workgroup.z": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "workitem.x": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "workitem.y": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "workitem.z": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "writelane.f32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + }, + "writelane.i32": { + "gfx11-generic": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1151": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1201": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx1250": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx90a": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx942": { + "status": "ok", + "verified_on": "llvm23" + }, + "gfx950": { + "status": "ok", + "verified_on": "llvm23" + } + } + }, + "schema": "rocke.intrinsic_arch_domain/v1", + "toolchain": { + "arches": [ + "gfx11-generic", + "gfx1151", + "gfx1201", + "gfx1250", + "gfx90a", + "gfx942", + "gfx950" + ], + "clang": "AMD clang version 23.0.0git (https://github.com/ROCm/llvm-project.git 8f497e0992fb7513f7f78a6f6b6f1056c375e961)", + "flavor": "llvm23", + "generator": 4, + "probe_cflags": [ + "-O0", + "-nogpulib" + ], + "probe_timeout_s": 60 + } +} diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/lower_llvm.py b/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/lower_llvm.py index ea3b0b47c9ee..b50cfb9dd173 100644 --- a/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/lower_llvm.py +++ b/dnn-providers/hip-kernel-provider/rocke/platform/python/rocke/core/lower_llvm.py @@ -720,14 +720,6 @@ def _resolve_llvm_flavor() -> str: "declare i32 @llvm.amdgcn.update.dpp.i32(" "i32, i32, i32 immarg, i32 immarg, i32 immarg, i1 immarg)" ), - # Packed bf16 atomic add (gfx940+). Two bf16 lanes per atomic transaction. - # Used by FMHA-bwd's dQ accumulate path when the caller wants to - # land bf16 directly in HBM rather than running a separate f32 -> bf16 - # cast pass on the workspace. - "global.atomic.fadd.v2bf16": ( - "declare <2 x bfloat> @llvm.amdgcn.global.atomic.fadd.v2bf16.p1(" - "ptr addrspace(1), <2 x bfloat>)" - ), # Packed fp16 atomic add (gfx940+). Two fp16 lanes per atomic transaction. "global.atomic.fadd.v2f16": ( "declare <2 x half> @llvm.amdgcn.global.atomic.fadd.v2f16.p1(" @@ -868,17 +860,6 @@ def _resolve_llvm_flavor() -> str: "amdgcn.cvt.scalef32.pk.f32.bf8": ( "declare <2 x float> @llvm.amdgcn.cvt.scalef32.pk.f32.bf8(i32, float, i1)" ), - # Reverse direction: <2 x f32> + scale -> 2 fp8 bytes packed into i32. - # First call (i1=false) fills bytes 0,1; second call (i1=true with - # the first call's i32 result as the accumulator) fills bytes 2,3. - # Saves the host-side rescale + cvt_pk_fp8 + bitshift dance for - # output FP8 quantisation paths. - "amdgcn.cvt.scalef32.pk.fp8.f32": ( - "declare i32 @llvm.amdgcn.cvt.scalef32.pk.fp8.f32(i32, <2 x float>, float, i1)" - ), - "amdgcn.cvt.scalef32.pk.bf8.f32": ( - "declare i32 @llvm.amdgcn.cvt.scalef32.pk.bf8.f32(i32, <2 x float>, float, i1)" - ), # gfx950 ``ds_swizzle_b32`` — single-instruction intra-32-lane # permute. We use it for the softmax XOR-butterfly reduction; the # FFT-mode offset is encoded as an immediate and the LDS unit diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/tests/core/test_arch_domain_artifact.py b/dnn-providers/hip-kernel-provider/rocke/platform/tests/core/test_arch_domain_artifact.py new file mode 100644 index 000000000000..3a7ff3e19487 --- /dev/null +++ b/dnn-providers/hip-kernel-provider/rocke/platform/tests/core/test_arch_domain_artifact.py @@ -0,0 +1,708 @@ +# Copyright (c) Advanced Micro Devices, Inc., or its affiliates. +# SPDX-License-Identifier: MIT + +"""Gate the generated intrinsic arch-domain artifacts against drift. + +``tools/gen_arch_domain.py`` measures, per LLVM flavor, which intrinsic +declarations actually link for which gfx target, and commits the answer as +``python/rocke/core/arch/data/intrinsic_arch_domain..json``. A generated +artifact that is not gated drifts from its generator, and a stale availability +table is worse than none because it is trusted. + +Two gates, because they fail for different reasons and are available in +different places: + +* **Structure** runs everywhere — no LLVM, no GPU, no built C++ engine. It reads + the committed JSON and checks it against the decl table it claims to describe. + This is the gate that catches the realistic drift: someone adds, renames or + removes an intrinsic key and the artifact silently stops covering it. The + artifact would still be internally consistent, still parse, and still look + authoritative, while saying nothing about the new key. + +* **Regeneration** re-probes the toolchain and asserts the committed column for + *this host's* flavor comes back byte-identical. It is the only check that can + catch a wrong measurement rather than a missing one. A full sweep is ~150 keys + x 7 targets and finishes in seconds, so it is a test rather than a nightly. + +A host can only ever measure its own LLVM, so a flavor with no matching +toolchain is skipped, never failed — "we did not get an answer" must not be +recorded as "the answer is no". Same reason the artifact distinguishes +``arch_absent`` (the target genuinely cannot lower it) from ``target_unsupported``, +``toolchain_crash`` and ``toolchain_timeout`` (no data). + +This file is a **source-tree** gate and is excluded from the installed test +tree by `CMakeLists.txt`. It has to be: it imports the generator out of +`tools/`, which is not installed, and an uninstallable import in an installed +test is not one skipped test but a collection error that takes the whole +pytest session down with it. The exclusion is the contract; keep the two in +step if this file is ever renamed. +""" + +from __future__ import annotations + +import json +import shutil +import subprocess +import sys +import tempfile +import unittest +from importlib.resources import files as resource_files +from pathlib import Path + +from rocke.core.isa.backend import wired_arches +from rocke.core.lower_llvm import _resolve_llvm_flavor + +_HERE = Path(__file__).resolve().parent +_ROCKE = _HERE.parents[1] # tests/core -> platform +_TOOL = _ROCKE / "tools" / "gen_arch_domain.py" + +# Through the package, not through the checkout layout. The artifacts are +# package data (`pyproject.toml` ships `rocke/**/*.json`, CMake installs the +# whole `python/rocke` tree), so resolving them by walking up from this file +# would check a directory that exists only in a source tree while the copy +# everything else imports sits elsewhere. +_DATA = Path(str(resource_files("rocke.core.arch") / "data")) + +# Import the generator for its constants and its decl-table merge rule, so the +# gate cannot disagree with the tool about what "the decl table for a flavor" +# means. Re-deriving the merge here would just create a second place to forget +# a rung when flavor resolution gains one. +# +# `_hostcaps` rides along on the same path entry. It is shared with +# `tools/check_byte_identity.py`, so the pool-sizing test below is covering +# both callers, not just this one. +if str(_ROCKE / "tools") not in sys.path: + sys.path.insert(0, str(_ROCKE / "tools")) +import gen_arch_domain as G +from _hostcaps import available_cpus + +_STATUSES = { + G.STATUS_OK, + G.STATUS_NAME_ABSENT, + G.STATUS_ARCH_ABSENT, + G.STATUS_TARGET_UNSUPPORTED, + G.STATUS_TOOLCHAIN_CRASH, + G.STATUS_TOOLCHAIN_TIMEOUT, + G.STATUS_PROBE_ERROR, +} + +# Every status except `ok` is a claim about something that went wrong, and a +# claim with no diagnostic behind it cannot be acted on by whoever hits it. +_NEEDS_EVIDENCE = _STATUSES - {G.STATUS_OK} + + +def _columns() -> list[tuple[str, Path]]: + """Committed artifacts as ``(flavor, path)``, flavor taken from the name.""" + out = [] + for path in sorted(_DATA.glob("intrinsic_arch_domain.*.json")): + out.append((path.name.split(".")[1], path)) + return out + + +class ArchDomainArtifactStructureTest(unittest.TestCase): + """Checks that need no toolchain, so they run on every host.""" + + def test_at_least_one_column_is_committed(self): + self.assertTrue(_columns(), f"no arch-domain artifact under {_DATA}") + + def test_columns_are_well_formed(self): + for flavor, path in _columns(): + with self.subTest(flavor=flavor): + doc = json.loads(path.read_text()) + self.assertEqual(doc.get("schema"), G.SCHEMA) + + # Provenance must agree with the filename. An artifact filed + # under the wrong LLVM vintage is worse than a missing one: the + # measurement is real, just attributed to a toolchain that never + # produced it, and nothing downstream can tell. + tc = doc.get("toolchain", {}) + self.assertEqual(tc.get("flavor"), flavor) + clang_flavor = G.flavor_of_clang(tc.get("clang", "")) + if clang_flavor is not None: + self.assertEqual(clang_flavor, flavor, tc.get("clang")) + + self.assertEqual(sorted(tc.get("arches", [])), sorted(wired_arches())) + + def test_every_decl_key_is_covered_on_every_wired_arch(self): + """The drift this file exists to catch. + + The artifact answers a question *about the decl table*. Add a key and + the artifact does not grow a row; it just quietly has no opinion on the + one intrinsic nobody has measured yet. Nothing else in the tree notices, + because the JSON is still valid and every row it does have is still + right. + + Enforced asymmetrically, for the same reason the artifact separates + ``arch_absent`` from ``target_unsupported``: + + * a **stale** key -- in the artifact, gone from the decl table -- is + always a defect, and is caught on every column from any host. Nothing + about it needs a toolchain to fix. + * an **unmeasured** key can only be answered on a host running that + flavor's toolchain. Failing every column here would mean one new decl + key reds the build on every machine until someone has run all three + toolchains -- "we did not get an answer" recorded as "the answer is + no", which is exactly what the design forbids. So full coverage is + required of this host's flavor, and reported as a named skip for the + rest. + """ + host = _resolve_llvm_flavor() + arches = sorted(wired_arches()) + for flavor, path in _columns(): + with self.subTest(flavor=flavor): + doc = json.loads(path.read_text()) + expected = set(G._decl_table(flavor)) + got = set(doc["keys"]) + for key, row in doc["keys"].items(): + self.assertEqual(sorted(row), arches, key) + self.assertEqual( + sorted(got - expected), + [], + f"{path.name} measures keys the decl table no longer has " + "-- re-run tools/gen_arch_domain.py and commit the result", + ) + missing = sorted(expected - got) + if not missing: + continue + why = ( + f"{path.name} has no answer for {len(missing)} decl " + f"key(s): {missing} -- re-run tools/gen_arch_domain.py on " + f"a {flavor} toolchain and commit the result" + ) + # Both of these are raised *inside* `subTest`, whose executor + # records the failure or skip against this column and does not + # re-raise. Every later column is still checked -- which is the + # point, since a stale key is a defect on any column and must + # not be masked by an earlier column's missing measurement. + if flavor == host: + self.fail(why) + self.skipTest(why) + + def test_every_cell_carries_an_actionable_answer(self): + for flavor, path in _columns(): + doc = json.loads(path.read_text()) + for key, row in doc["keys"].items(): + for arch, cell in row.items(): + with self.subTest(flavor=flavor, key=key, arch=arch): + status = cell.get("status") + self.assertIn(status, _STATUSES) + # `probe_error` means our own probe module was + # malformed -- the one status that is a defect in the + # generator rather than a fact about the toolchain, and + # so must never survive into a committed column. + self.assertNotEqual(status, G.STATUS_PROBE_ERROR) + self.assertEqual(cell.get("verified_on"), flavor) + if status in _NEEDS_EVIDENCE: + self.assertTrue(cell.get("evidence"), "no diagnostic") + + def test_every_column_records_how_it_was_measured(self): + """`clang` says which compiler answered, not which question it was asked. + + Those are different facts, and the difference is not academic: the same + toolchain build reports ``ok`` or fails to terminate for the same key + depending on the optimisation level the probe used, because -O3 can + delete the call being probed. A column that carries only the compiler + identity cannot be told apart from one measured the wrong way, which is + how a false ``ok`` survived in the llvm20 column long enough to be + committed. + + Asserted on the committed artifact rather than on a fresh run, because + this is exactly the check a host with no toolchain can still make. + """ + for flavor, path in _columns(): + with self.subTest(flavor=flavor): + tc = json.loads(path.read_text())["toolchain"] + self.assertIsInstance(tc.get("generator"), int) + self.assertGreaterEqual(tc["generator"], G.GENERATOR) + self.assertIn( + "-O0", + tc.get("probe_cflags", []), + "column measured without -O0: the IR pipeline can delete " + "the probed call, so its `ok` cells prove nothing", + ) + self.assertGreater(tc.get("probe_timeout_s", 0), 0) + + +class AvailableCpusTest(unittest.TestCase): + """The worker cap must reflect this process's share, not the host's size. + + `os.cpu_count()` reports the machine. On a scheduler-pinned host or in a + container it overstates by orders of magnitude -- observed at 384 against + an affinity of 2 -- and the sweep sized itself accordingly. Oversubscribing + is not just slow here: the probes already run near the resource limits the + cap exists to stay under, and a `probe_error` that depends on load makes + the artifact nondeterministic and `--check` flaky. + """ + + def _root(self, files: dict[str, str]) -> Path: + root = Path(tempfile.mkdtemp()) + self.addCleanup(shutil.rmtree, root, True) + for rel, text in files.items(): + path = root / rel + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(text) + return root + + def test_a_cpu_quota_caps_the_worker_count(self): + # Asserted as "<= 1", not "== 1": affinity also feeds the minimum, so + # the guarantee is that a quota can only ever lower the answer. + for label, files in ( + ("v2", {"cpu.max": "100000 100000"}), + ( + "v1", + {"cpu/cpu.cfs_quota_us": "100000", "cpu/cpu.cfs_period_us": "100000"}, + ), + ): + with self.subTest(cgroup=label): + self.assertLessEqual(available_cpus(self._root(files)), 1) + + def test_a_fractional_quota_still_leaves_one_worker(self): + """Half a CPU is a *rate*, not half a process. Rounding down gives a + zero-worker pool, which is a hang rather than a slow sweep.""" + root = self._root({"cpu.max": "50000 100000"}) + self.assertEqual(available_cpus(root), 1) + + def test_no_quota_does_not_lower_the_answer(self): + """`max` and a negative v1 quota both mean unlimited -- neither is a + cap of zero, which is what parsing them as numbers would produce.""" + for label, files in ( + ("v2-max", {"cpu.max": "max 100000"}), + ( + "v1-negative", + {"cpu/cpu.cfs_quota_us": "-1", "cpu/cpu.cfs_period_us": "100000"}, + ), + ("absent", {}), + ): + with self.subTest(cgroup=label): + root = self._root(files) + self.assertEqual(available_cpus(root), available_cpus(root / "nope")) + + def test_the_answer_is_always_a_usable_worker_count(self): + for files in ({}, {"cpu.max": "garbage"}, {"cpu.max": "0 0"}): + with self.subTest(files=sorted(files)): + self.assertGreaterEqual(available_cpus(self._root(files)), 1) + + +class DriftTest(unittest.TestCase): + """What `--check` forgives, and what it must not. + + The column embeds the exact ROCm build that measured it, so a byte + comparison fails on any host whose patch level differs from the one that + blessed the artifact -- which is most of them, and none of them for a + reason anyone can act on. But the fields saying *how* the probe was posed + are ours, not the host's, and forgiving those would forgive the class of + defect they were added to expose. + """ + + def _doc(self, **toolchain) -> str: + tc = { + "flavor": "llvm22", + "clang": "AMD clang version 22.0.0git (... roc-7.2.4 26084 abc)", + "arches": ["gfx942"], + "generator": G.GENERATOR, + "probe_cflags": ["-O0", "-nogpulib"], + "probe_timeout_s": 60, + } + tc.update(toolchain) + return json.dumps( + { + "schema": G.SCHEMA, + "toolchain": tc, + "keys": {"a.b": {"gfx942": {"status": G.STATUS_OK}}}, + "canonical": {}, + } + ) + + def test_a_different_compiler_build_is_not_drift(self): + other = "AMD clang version 22.0.0git (... roc-7.2.0 26014 def)" + self.assertIsNone(G._drift(self._doc(), self._doc(clang=other))) + + def test_a_changed_measurement_is_drift_and_says_which(self): + fresh = json.loads(self._doc()) + fresh["keys"]["a.b"]["gfx942"]["status"] = G.STATUS_ARCH_ABSENT + why = G._drift(self._doc(), json.dumps(fresh)) + self.assertIsNotNone(why) + self.assertIn("a.b/gfx942", why) + self.assertIn(G.STATUS_ARCH_ABSENT, why) + + def test_a_changed_probe_method_is_drift_even_with_identical_cells(self): + """The `-O0` case. Same clang, same cells, different question -- and + the cells are identical only because nobody re-ran them yet.""" + for field, value in ( + ("probe_cflags", ["-nogpulib"]), + ("probe_timeout_s", 5), + ("generator", G.GENERATOR + 1), + ): + with self.subTest(field=field): + why = G._drift(self._doc(), self._doc(**{field: value})) + self.assertIsNotNone(why, field) + self.assertIn("toolchain", why) + + def test_an_unreadable_column_is_drift_not_a_crash(self): + self.assertIn("not valid JSON", G._drift("{oops", self._doc())) + + +class ClassifyTest(unittest.TestCase): + """A diagnostic this tool does not recognise becomes `probe_error`. + + That is the safe default -- guessing would bake a false negative into the + artifact -- but it is not an answer, and it must never reach a committed + column. Each new LLVM vintage words its diagnostics differently, so the + wordings we have had to learn are pinned here: they are the difference + between a measurement and a blank. + """ + + def test_a_target_that_says_so_in_words_is_arch_absent(self): + """llvm23 states it outright where llvm20 and llvm22 only fail. + + Left unrecognised, twelve cells across `permlane16`, `permlanex16` and + `mov.dpp8` recorded `probe_error` -- the generator reporting itself + broken for targets that had answered the question clearly. + """ + status, evidence = G._classify( + 1, + "error: :0:0: in function probe void (ptr, i32): " + "intrinsic not supported on subtarget", + ) + self.assertEqual(status, G.STATUS_ARCH_ABSENT) + self.assertTrue(evidence) + + def test_an_illegal_transfer_size_asks_for_a_re_probe(self): + """The same complaint as the other two, caught earlier. + + llvm23 rejects an out-of-range load-to-LDS size in the verifier, before + codegen. The message is about our module, not the target, so it must + route to the operand rescue rather than be recorded as an answer. + """ + diag = ( + "error: invalid LLVM IR input: invalid data size for load-to-LDS " + "intrinsic; must be 1, 2, 4, 12, or 16" + ) + status, evidence = G._classify(1, diag) + self.assertEqual(status, G.STATUS_PROBE_ERROR) + self.assertTrue(G._wants_literals(status, evidence)) + + def test_the_sizes_llvm23_names_are_the_ones_we_try(self): + """The candidate list is not a guess; llvm23 enumerates the domain.""" + self.assertEqual(G._IMMARG_PROBE_VALUES, (1, 2, 4, 12, 16)) + + +class ImmargSweepTest(unittest.TestCase): + """A negative must survive being asked with a legal operand value. + + The probe passes 0 for every `immarg`, and 0 is not legal everywhere: it is + not a transfer size. When it is rejected, ISel says `Cannot select` -- which + is also what a genuinely unsupported target says, so the diagnostic cannot + separate the two and the generator recorded three CDNA targets as incapable + of an instruction that ships in production. Asking again with a different + value is the only discriminator. + + Both directions matter. A sweep that only manufactures more `ok` cells has + broken the table in the direction that is harder to notice: a false + `arch_absent` breaks a build loudly, a false `ok` admits a kernel that + cannot run. + """ + + _IMM_DECL = "declare void @llvm.probe.imm(ptr addrspace(1) nocapture, i32 immarg)" + + def test_an_immarg_defaults_to_zero_and_the_sweep_moves_it(self): + base, _ = G._probe_module(self._IMM_DECL, "e-p:64:64-i64:64") + self.assertIn("i32 0)", base) + for imm in G._IMMARG_PROBE_VALUES: + with self.subTest(imm=imm): + text, why = G._probe_module( + self._IMM_DECL, "e-p:64:64-i64:64", imm_int=imm + ) + self.assertEqual(why, "") + self.assertIn(f"i32 {imm})", text) + + def test_a_declare_with_no_immarg_has_nothing_to_sweep(self): + """The generator decides what is sweepable by comparing module text. + + So a declare the sweep cannot vary must produce an identical module -- + otherwise every key would get four extra probes on every negative, for + candidates that change nothing. + """ + decl = "declare i32 @llvm.probe.plain(ptr addrspace(1) nocapture, i32)" + base, _ = G._probe_module(decl, "e-p:64:64-i64:64") + for imm in G._IMMARG_PROBE_VALUES: + text, _ = G._probe_module(decl, "e-p:64:64-i64:64", imm_int=imm) + self.assertEqual(text, base, f"imm_int={imm} varied a non-immarg decl") + + def test_a_rescued_cell_says_which_value_answered(self): + """Without it, a first-try `ok` and a fourth-candidate `ok` look alike. + + That is not bookkeeping: the value is the evidence that the cell was + measured with a legal operand, and re-deriving it by hand is exactly + what nobody did for two committed columns. + """ + for flavor, path in _columns(): + doc = json.loads(path.read_text()) + for key, row in doc["keys"].items(): + for arch, cell in row.items(): + if "probe_imm" not in cell: + continue + with self.subTest(flavor=flavor, key=key, arch=arch): + self.assertIn(cell["probe_imm"], G._IMMARG_PROBE_VALUES) + # The sweep only ever returns early on a win, so a + # recorded value on a negative cell would mean the + # value is being reported for a probe it did not + # decide. + self.assertEqual(cell["status"], G.STATUS_OK) + + def test_global_load_lds_is_available_on_cdna_and_not_on_rdna(self): + """The case that motivated the sweep, pinned in both directions. + + The intrinsic takes a per-lane transfer size, legal at 1/2/4 on CDNA + and at 16 additionally on gfx950. It has a builder entry point, a + lowering handler in both engines and a production instance, so an + all-`arch_absent` row is a false negative on a live path. The RDNA half + is the other direction: those targets really cannot lower it, and they + must still say so after the full sweep. + """ + for flavor, path in _columns(): + row = json.loads(path.read_text())["keys"].get("global.load.lds") + if row is None: + continue + for arch, cell in sorted(row.items()): + if cell["status"] in ( + G.STATUS_TARGET_UNSUPPORTED, + G.STATUS_TOOLCHAIN_CRASH, + G.STATUS_TOOLCHAIN_TIMEOUT, + ): + continue # no data, not an answer + expect = ( + G.STATUS_OK if arch.startswith("gfx9") else G.STATUS_ARCH_ABSENT + ) + with self.subTest(flavor=flavor, arch=arch): + self.assertEqual(cell["status"], expect) + + +class RefusalTest(unittest.TestCase): + """What the generator must refuse to write. + + Both cases here produced a committed-looking artifact and exit 0 before. + That is the worst failure mode this tool has: the artifact carries its own + provenance and reads as authoritative, so a column written without the + measurement behind it is not caught downstream by anything. Refusing at the + point of generation puts the stop in front of the only person who can still + fix it. + + Driven through `main()` with stub tools rather than a real sweep: the + policy being tested is "what do we do when the toolchain does not answer", + and a real toolchain that does answer cannot exercise it. + """ + + def _stub(self, name: str, body: str) -> str: + root = Path(tempfile.mkdtemp()) + self.addCleanup(shutil.rmtree, root, True) + path = root / name + path.write_text("#!/usr/bin/env python3\n" + body) + path.chmod(0o755) + return str(path) + + # Answers `--version` as an unrecognised vintage -- `flavor_of_clang` + # returns None, so the flavor-mismatch exit does not fire and the run + # reaches the stage under test. + _CLANG_REJECTS = """ +import sys +if "--version" in sys.argv: + print("stub clang") + sys.exit(0) +sys.stderr.write("error: something this tool has never seen before\\n") +sys.exit(1) +""" + + # Echoes the declare back with an attribute group, which is how + # `_name_exists` recognises a resolved intrinsic. + _OPT_RESOLVES = """ +import sys +src = sys.argv[-1] +for line in open(src): + if line.startswith("declare "): + print(line.rstrip() + " #0") +""" + + def _run(self, tools: dict[str, str | None], out: Path) -> int: + from unittest import mock + + import check_ir_validity as V + + argv = [str(_TOOL), "--out", str(out), "--arch", "gfx942", "--only", "fabs"] + with ( + mock.patch.object(V, "_llvm_tool", lambda n: tools.get(n)), + mock.patch.object(sys, "argv", argv), + ): + return G.main() + + def test_a_missing_opt_writes_nothing_and_fails(self): + """No name check, no column. + + `opt` owns the flavor axis. Without it nothing separates "this LLVM has + no such intrinsic" from "this target cannot lower it", and the sweep + used to substitute "the name exists" for "we did not ask" -- which can + record a `name_absent` key as `ok`, because an unresolved `llvm.*` name + is an ordinary external call that a link may happen to accept. + + It fails rather than reporting itself unvalidated, unlike the no-clang + path: a host with no compiler is honestly not a probing host, but no + complete LLVM install ships clang without `opt`, so finding one and not + the other means the environment is pointed at a partial toolchain. That + is a broken invocation, and exiting 0 would let the caller believe a + sweep had happened. + """ + out = Path(tempfile.mkdtemp()) / "column.json" + self.addCleanup(shutil.rmtree, out.parent, True) + clang = self._stub("clang", self._CLANG_REJECTS) + rc = self._run({"clang": clang, "opt": None}, out) + self.assertEqual(rc, 1, "a partial toolchain is a broken env, not a no-op") + self.assertFalse(out.exists(), "wrote a column with no name check behind it") + + def test_an_unclassified_probe_writes_nothing_and_fails(self): + """`probe_error` is this tool reporting itself broken. + + It is not a fact about the toolchain, and the artifact gate forbids it + in a committed column -- so a generator that emits one produces a file + its own test rejects, with nothing but habit between that and a commit. + """ + out = Path(tempfile.mkdtemp()) / "column.json" + self.addCleanup(shutil.rmtree, out.parent, True) + tools = { + "clang": self._stub("clang", self._CLANG_REJECTS), + "opt": self._stub("opt", self._OPT_RESOLVES), + } + rc = self._run(tools, out) + self.assertEqual(rc, 1) + self.assertFalse(out.exists(), "committed our own defect as a measurement") + + +class ValidityGateTest(unittest.TestCase): + """`tools/check_ir_validity.py` -- the sibling gate, same two rules.""" + + def test_both_gates_ask_the_question_at_O0(self): + """The one flag that decides whether either gate proves anything. + + At `-O3` the IR pipeline can fold or delete the construct being asked + about, and the module then links because the suspect instruction is no + longer in it. The arch-domain generator has probed at `-O0` since the + false `ok` that taught us; the validity gate did not, and its link + oracle was chosen precisely to avoid that class of false positive. + Pinned together so the two cannot drift apart again. + """ + import check_ir_validity as V + + self.assertIn("-O0", V.COMPILE_CFLAGS) + self.assertIn("-O0", G.PROBE_CFLAGS) + argv = V._compile_argv("clang", Path("m.ll"), "gfx942", Path("m.hsaco")) + self.assertIn("-O0", argv) + self.assertNotIn("-O3", argv) + + def test_a_target_this_clang_cannot_build_is_not_an_emission_failure(self): + """rocke wires arches ahead of the toolchains that can build for them. + + gfx1250 against the LLVM 20 in ROCm 7.1 is rejected in the driver, + before clang reads an instruction -- so blaming the lowerer for it + blames it for a module nobody compiled, and since this gate now runs by + default it would red every host whose ROCm predates the newest wired + arch. Same line the generator already draws with `target_unsupported`. + """ + import check_ir_validity as V + + self.assertTrue( + V._target_unsupported("clang: error: invalid target ID 'gfx1250'") + ) + # The same wording routes to `target_unsupported` in the generator. + self.assertEqual( + G._classify(1, "clang: error: invalid target ID 'gfx1250'")[0], + G.STATUS_TARGET_UNSUPPORTED, + ) + # A real emission defect must keep its verdict. + for diag in ( + "LLVM ERROR: Cannot select: intrinsic %llvm.amdgcn.foo", + "ld.lld: error: undefined symbol: llvm.amdgcn.made.up", + "error: invalid use of a non-immediate operand", + ): + with self.subTest(diag=diag): + self.assertFalse(V._target_unsupported(diag)) + + def test_an_instance_gated_on_a_newer_llvm_is_not_a_lowering_failure(self): + """The corpus is flavor-wide; a host is not. + + Four gfx1250 `wmma_scale` cases decline to lower on anything older than + llvm23, and that refusal is the emitter working. It used to abort the + whole run with FATAL before a single module was compiled, which reds + the now-default `run_all.py` gate on every llvm22 host. + + Matched on the gate's wording rather than the exception type, because + a `NotImplementedError` from anywhere else in the lowerer is still the + validity failure this gate exists to catch. + """ + import check_ir_validity as V + + self.assertTrue( + V._requires_newer_flavor( + NotImplementedError( + "tile.wmma_gfx1250_f32_16x16x128_fp8_fp8_scale_e8m0_e8m0_k32 " + "requires llvm23 (ROCm 7.13+), got llvm22" + ) + ) + ) + for exc in ( + NotImplementedError("no handler for op 'tile.frobnicate'"), + NotImplementedError("unsupported dtype combination"), + ): + with self.subTest(exc=str(exc)): + self.assertFalse(V._requires_newer_flavor(exc)) + + def test_both_gates_read_a_clang_banner_the_same_way(self): + """The two tools act on a vintage mismatch differently on purpose -- + the generator refuses, this gate reports UNVALIDATED -- but they must + not disagree about what a mismatch *is*. They share `_llvm_identity` + for exactly that reason; this pins the sharing. + + An unrecognised banner must read as "unknown", never as "mismatch": a + vendor rewording that line would otherwise red every gate at once. + """ + import _llvm_identity as I + import check_ir_validity as V + + self.assertIs(V.flavor_of_clang, I.flavor_of_clang) + self.assertIs(G.flavor_of_clang, I.flavor_of_clang) + self.assertEqual( + I.flavor_of_clang( + "AMD clang version 22.0.0git " + "(https://github.com/RadeonOpenCompute/llvm-project roc-7.2.0 26014)" + ), + "llvm22", + ) + for banner in ("(unknown)", "", "AMD clang, the good one"): + with self.subTest(banner=banner): + self.assertIsNone(I.flavor_of_clang(banner)) + + +class ArchDomainRegenerationTest(unittest.TestCase): + """Re-probe this host's flavor and require the committed column to match.""" + + def test_regenerating_this_hosts_column_is_a_no_op(self): + proc = subprocess.run( + [sys.executable, str(_TOOL), "--check"], + capture_output=True, + text=True, + check=False, + timeout=1800, + ) + out = proc.stdout + proc.stderr + + # Three distinct kinds of "we cannot answer here", all skips. Failing + # any of them would red every CI machine whose ROCm differs from the one + # that blessed the artifact, which is most of them. + if "UNVALIDATED" in out: + self.skipTest(out.strip().splitlines()[-1]) + if proc.returncode == 2 and "clang reports" in out: + self.skipTest("toolchain flavor disagrees with the resolved flavor") + + self.assertEqual(proc.returncode, 0, out) + + +if __name__ == "__main__": + unittest.main() diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/tests/run_all.py b/dnn-providers/hip-kernel-provider/rocke/platform/tests/run_all.py index e39834b58a34..ac0dac47d8af 100644 --- a/dnn-providers/hip-kernel-provider/rocke/platform/tests/run_all.py +++ b/dnn-providers/hip-kernel-provider/rocke/platform/tests/run_all.py @@ -11,7 +11,19 @@ # # Usage: # python rocke/platform/tests/run_all.py [--no-guard] [--no-gate] [--no-pytest] -# [--no-both] [--only SUBSTR] [--build-root DIR] [--config CONFIG] +# [--no-both] [--only SUBSTR] [--only-ir SUBSTR] [--build-root DIR] +# [--config CONFIG] +# +# The two filters are deliberately separate. `--only` selects *families* for the +# byte-identity gate; `--only-ir` selects *case ids* for the emitted-IR validity +# gate, and a case id is `family/arch/variant`, so the two vocabularies overlap +# without being the same. Forwarding one substring to both was a real trap: a +# word can be a legal family while matching no corpus case, and the two tools +# read an empty selection oppositely -- run_diff runs zero families and reports +# green, check_ir_validity calls it FATAL -- so a partial run could go red for a +# filter that was valid where the user aimed it. Filtering is also kept separate +# from skipping: an unfiltered gate still runs in full; use `--no-gate` / +# `--no-ir-validity` to opt out of one. from __future__ import annotations @@ -214,6 +226,11 @@ def main() -> int: ap.add_argument("--no-guard", action="store_true") ap.add_argument("--no-gate", action="store_true") ap.add_argument("--no-pytest", action="store_true") + ap.add_argument( + "--no-ir-validity", + action="store_true", + help="skip the emitted-IR validity gate (compile+link every corpus case)", + ) ap.add_argument( "--no-both", action="store_true", @@ -222,7 +239,14 @@ def main() -> int: ap.add_argument( "--only", default="", - help="restrict byte-identity gate to families containing SUBSTR", + help="restrict byte-identity gate to families containing SUBSTR " + "(comma-separated); does not affect the emitted-IR validity gate", + ) + ap.add_argument( + "--only-ir", + default="", + help="restrict emitted-IR validity gate to case ids containing SUBSTR " + "(comma-separated); a case id is family/arch/variant", ) ap.add_argument( "--build-root", default=str(Path(tempfile.gettempdir()) / "rocke_verify") @@ -249,6 +273,21 @@ def main() -> int: gate += ["--only", args.only] status |= subprocess.run(gate).returncode + if not args.no_ir_validity: + # Complements the gate above rather than duplicating it: byte-identity + # proves the two engines agree, this proves what they agree on is legal + # IR the AMDGPU toolchain accepts. Self-skips (green, loudly) on a host + # with no LLVM tools -- pass --strict there to make that a failure. + print("\n== emitted-IR validity gate ==") + ir_gate = [sys.executable, str(TOOLS / "check_ir_validity.py")] + # `--only-ir`, never `--only`: see the module header. An empty selection + # is FATAL in that tool and that stays correct here, because reaching it + # now means the user aimed a case-id filter at the case-id gate and hit + # nothing -- a typo, which is worth a red. + if args.only_ir: + ir_gate += ["--only", args.only_ir] + status |= subprocess.run(ir_gate).returncode + if not args.no_pytest: try: pytest_env = native_pytest_env(Path(args.build_root).resolve(), args.config) diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/tests/tools/test_run_all.py b/dnn-providers/hip-kernel-provider/rocke/platform/tests/tools/test_run_all.py index 650dcd6b8626..eff54a05fb1b 100644 --- a/dnn-providers/hip-kernel-provider/rocke/platform/tests/tools/test_run_all.py +++ b/dnn-providers/hip-kernel-provider/rocke/platform/tests/tools/test_run_all.py @@ -1,6 +1,11 @@ # Copyright (c) Advanced Micro Devices, Inc., or its affiliates. # SPDX-License-Identifier: MIT -"""The standard runner must supply native fixture coverage to both pytest passes.""" +"""The standard runner must supply native fixture coverage to both pytest passes. + +Each test drives ``main()`` against a fake ``subprocess.run`` and isolates the +native pytest/ctest plumbing by opting out of every other step, so a new +default-on step needs its ``--no-...`` flag added to the argv lists below. +""" import importlib.util import json @@ -53,6 +58,7 @@ def run(command, **kwargs): "run_all.py", "--no-guard", "--no-gate", + "--no-ir-validity", "--build-root", str(tmp_path), "--config", @@ -112,6 +118,7 @@ def run(command, **kwargs): "run_all.py", "--no-guard", "--no-gate", + "--no-ir-validity", "--no-pytest", "--build-root", str(tmp_path), @@ -140,6 +147,7 @@ def run(command, **kwargs): "run_all.py", "--no-guard", "--no-gate", + "--no-ir-validity", "--no-pytest", "--build-root", str(tmp_path), @@ -195,7 +203,14 @@ def run(command, **kwargs): monkeypatch.setattr( runner.sys, "argv", - ["run_all.py", "--no-guard", "--no-gate", "--build-root", str(tmp_path)], + [ + "run_all.py", + "--no-guard", + "--no-gate", + "--no-ir-validity", + "--build-root", + str(tmp_path), + ], ) assert runner.main() == 1 assert all(command[0] != runner.sys.executable for command in calls) diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/tools/_hostcaps.py b/dnn-providers/hip-kernel-provider/rocke/platform/tools/_hostcaps.py new file mode 100644 index 000000000000..437ba5100ea0 --- /dev/null +++ b/dnn-providers/hip-kernel-provider/rocke/platform/tools/_hostcaps.py @@ -0,0 +1,65 @@ +# Copyright (c) Advanced Micro Devices, Inc., or its affiliates. +# SPDX-License-Identifier: MIT +# +# What this host will actually let us have, as opposed to what it looks like it +# has. Shared by the tools under this directory that size a worker pool. +# +# Not a CLI entry point -- hence the leading underscore, since every other +# module here is a script. + +from __future__ import annotations + +import os +from pathlib import Path + + +def available_cpus(cgroup_root: Path = Path("/sys/fs/cgroup")) -> int: + """CPUs this process may actually use, not the CPUs the host has. + + `os.cpu_count()` reports the machine, and on the hosts this tree is built + on that is the wrong number by orders of magnitude -- a scheduler-pinned + node reports 384 against an affinity of 2, and a container on a large host + reports the host. Pools sized from it oversubscribe by the same factor. + + Three sources, narrowest first. Affinity covers cpuset pinning and + scheduler placement; `cpu.max` covers a CFS quota (cgroup v2, then v1) -- + a quota is a *rate*, so a fractional share rounds up to one whole worker + rather than down to zero, which would be a hang rather than a slow run. + + `cgroup_root` is a parameter so the quota branch is reachable from a test. + Neither the build hosts nor the probe containers impose a quota, so left + hardcoded it would be the one path nothing ever executes. + """ + counts = [] + + getaffinity = getattr(os, "sched_getaffinity", None) + if getaffinity is not None: + try: + counts.append(len(getaffinity(0))) + except OSError: + pass + + for quota_path, period_path in ( + (cgroup_root / "cpu.max", None), + ( + cgroup_root / "cpu" / "cpu.cfs_quota_us", + cgroup_root / "cpu" / "cpu.cfs_period_us", + ), + ): + try: + if period_path is None: + quota_s, period_s = quota_path.read_text().split()[:2] + else: + quota_s = quota_path.read_text().strip() + period_s = period_path.read_text().strip() + # "max" (v2) and a negative quota (v1) both mean unlimited. + if quota_s == "max": + continue + quota, period = int(quota_s), int(period_s) + if quota > 0 and period > 0: + counts.append(max(1, -(-quota // period))) + except (OSError, ValueError): + continue + + counts.append(os.cpu_count() or 4) + return max(1, min(counts)) diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/tools/_llvm_identity.py b/dnn-providers/hip-kernel-provider/rocke/platform/tools/_llvm_identity.py new file mode 100644 index 000000000000..31ea3f4773a6 --- /dev/null +++ b/dnn-providers/hip-kernel-provider/rocke/platform/tools/_llvm_identity.py @@ -0,0 +1,48 @@ +# Copyright (c) Advanced Micro Devices, Inc., or its affiliates. +# SPDX-License-Identifier: MIT +# +# Who is this clang, really? Both tools that compile probe modules have to ask, +# because neither `ROCKE_LLVM_BIN` nor PATH is obliged to point at the LLVM that +# rocke itself resolved, and an answer measured by one vintage and filed under +# another is worse than no answer. +# +# Shared rather than duplicated: the two callers act on a mismatch differently +# -- the generator refuses, because it would otherwise commit a permanently +# mis-attributed artifact; the validity gate reports UNVALIDATED, because it +# writes nothing and "we could not ask" is not "the answer is no" -- but they +# must agree on what the mismatch *is*. Two copies of this regex would drift the +# moment a vendor changed its version banner. +# +# Not a CLI entry point -- hence the leading underscore, as with _hostcaps.py. + +from __future__ import annotations + +import re +import subprocess + + +def clang_identity(clang: str) -> str: + """The first line of `clang --version`, or `(unknown)`. + + Never raises: a tool that cannot introduce itself is a fact to record, not + a reason to abort a sweep that has not started yet. + """ + try: + proc = subprocess.run( + [clang, "--version"], capture_output=True, text=True, check=False + ) + return (proc.stdout or "").strip().splitlines()[0][:200] + except (OSError, IndexError): + return "(unknown)" + + +def flavor_of_clang(identity: str) -> str | None: + """Best-effort LLVM major from a `clang --version` line, as a flavor string. + + `None` means the banner did not carry a version we recognise -- which must + read as "unknown", never as "mismatch". A vendor is free to reword this + line, and a caller that treated an unparseable banner as disagreement would + turn a cosmetic change upstream into a red gate everywhere. + """ + m = re.search(r"clang version (\d+)", identity) + return f"llvm{m.group(1)}" if m else None diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/tools/check_byte_identity.py b/dnn-providers/hip-kernel-provider/rocke/platform/tools/check_byte_identity.py index 6eb6ceacb092..6772653a2087 100644 --- a/dnn-providers/hip-kernel-provider/rocke/platform/tools/check_byte_identity.py +++ b/dnn-providers/hip-kernel-provider/rocke/platform/tools/check_byte_identity.py @@ -23,6 +23,8 @@ import tempfile from pathlib import Path +from _hostcaps import available_cpus + HERE = Path(__file__).resolve().parent ROCKE = HERE.parents[0] if HERE.name != "tools" else HERE.parent # tools -> rocKE RUN_DIFF = ROCKE / "tests" / "instances" / "differential" / "run_diff.py" @@ -78,8 +80,12 @@ def main() -> int: str(build_root), "--target", "rocke_core", + # This process's share, not the machine's size. `os.cpu_count()` + # reports the host, so on a scheduler-pinned node it asked ninja + # for 384 compile jobs against an affinity of 2 -- which is how a + # gate that should take a couple of minutes turns into a thrash. "-j", - str(os.cpu_count() or 1), + str(available_cpus()), ], check=True, stdout=subprocess.DEVNULL, diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/tools/check_ir_validity.py b/dnn-providers/hip-kernel-provider/rocke/platform/tools/check_ir_validity.py new file mode 100644 index 000000000000..d5724e871082 --- /dev/null +++ b/dnn-providers/hip-kernel-provider/rocke/platform/tools/check_ir_validity.py @@ -0,0 +1,553 @@ +#!/usr/bin/env python3 +# Copyright (c) Advanced Micro Devices, Inc., or its affiliates. +# SPDX-License-Identifier: MIT +# +# check_ir_validity.py -- prove the IR the lowerer emits is actually legal. +# +# The byte-identity gate proves the two engines emit the SAME bytes. It says +# nothing about whether those bytes are valid LLVM IR for the target. This tool +# answers that second question: lower every case in the representative corpus +# and push each module all the way through the AMDGPU toolchain. +# +# Why the oracle is a LINK and not a verify or a codegen +# ----------------------------------------------------- +# A declare for an intrinsic that does not exist (e.g. the fictional +# llvm.amdgcn.mfma.f32.16x16x128.fp4 in the decl table) is accepted by +# `opt -passes=verify`, and is accepted by `clang -S` as well -- the backend +# quietly treats the unknown llvm.* name as an ordinary external function and +# emits a GOT-relative call to it. The undefined symbol only surfaces when the +# relocatable is linked into an executable. So: +# +# L0 opt -passes=verify type / arity / structural errors (cheap, optional) +# L1 clang -> hsaco everything above + nonexistent (the gate) +# intrinsics, ISel failures, backend +# fatal errors, bad inline asm +# +# Why every compile runs in a subprocess +# -------------------------------------- +# A backend failure is a report_fatal_error, not an exception: it takes the +# whole process down with it ("LLVM ERROR: ..." then exit). Running the compile +# in-process -- via comgr's build_hsaco_from_llvm_ir, which is otherwise faster +# -- means one bad module kills the run and no report is produced. Process +# isolation is a correctness requirement here, not a performance choice, and it +# is also what makes the per-module diagnostic free (clang's stderr). +# +# Only the flavor the host toolchain implements can be validated. Modules can be +# lowered at any flavor, but there is no local compiler for the others, so they +# are reported UNVALIDATED rather than green. The same applies one level down: +# rocke wires arches ahead of the toolchains that can build for them, and a +# clang that rejects `-mcpu=` in the driver never read the module, so +# those cases are UNVALIDATED too -- neither a pass nor an emission failure. +# +# All paths are derived relative to this file; LLVM tools are located via the +# ROCm install rocke already resolves, never a hardcoded prefix. +# +# Usage: +# python rocke/platform/tools/check_ir_validity.py +# python rocke/platform/tools/check_ir_validity.py --only attention --verbose +# python rocke/platform/tools/check_ir_validity.py --arch gfx942 --keep-ir DIR + +from __future__ import annotations + +import argparse +import concurrent.futures as cf +import os +import re +import subprocess +import sys +import tempfile +from pathlib import Path + +from _llvm_identity import clang_identity, flavor_of_clang + +HERE = Path(__file__).resolve().parent +ROCKE = HERE.parent # tools -> rocke/platform + + +def _bootstrap_sys_path() -> None: + """Same layout probing as tests/conftest.py, so this runs from a checkout + without an external PYTHONPATH. The corpus lives in the test tree and its + attention/KDA families are the one sanctioned platform -> library reach, so + `kernels`/`builders` must resolve too.""" + for path in (ROCKE / "python", ROCKE / "tests" / "instances"): + if str(path) not in sys.path: + sys.path.insert(0, str(path)) + for lib_root in (ROCKE / "tests" / "library", ROCKE.parent / "library"): + if (lib_root / "kernels").is_dir(): + if str(lib_root) not in sys.path: + sys.path.insert(0, str(lib_root)) + break + + +# Cases that do not yet compile, each with the reason and the work that owns the +# fix. Mirrors the KNOWN_VIOLATIONS convention in +# library/tests/test_library_layering.py, and carries the same rule: this list +# only ever SHRINKS. An entry that starts passing is itself a failure (see +# STALE below) so a fix cannot silently leave dead weight behind. +KNOWN_BAD: dict[str, str] = { + "attention/gfx942/3d_bf16_d128_b64": ( + "LLVM23 backend fatal: 'Do not know how to expand this operator's " + "operand'; attention 3d on gfx942 only" + ), + "attention/gfx942/3d_fp16_d128_b64": ( + "LLVM23 backend fatal: 'Do not know how to expand this operator's " + "operand'; attention 3d on gfx942 only" + ), +} + + +def _llvm_tool(name: str) -> str | None: + """Locate an LLVM tool, preferring the ROCm install rocke itself loads. + + PATH is checked LAST on purpose. A ROCm install ships opt/clang under + /llvm/bin but does not necessarily put them on PATH -- and the tool + that IS on PATH may belong to a different LLVM vintage than the comgr rocke + lowers against, which would validate the wrong toolchain and pass. Note also + that the set of shipped tools varies by release (llc is absent from recent + ROCm), so callers must tolerate a None. + """ + exe = name + (".exe" if os.name == "nt" else "") + roots: list[Path] = [] + + def _is_file(path: Path) -> bool: + # A candidate prefix can be anything the environment names, including a + # directory the caller cannot stat. An unreadable candidate is simply + # not the tool -- it must not abort the search. + try: + return path.is_file() + except OSError: + return False + + # ROCKE_LLVM_BIN is authoritative when set: found there or not found at all. + # Falling through on a miss is what makes a partial prefix dangerous rather + # than merely wrong -- clang resolves from the named directory while `opt` + # quietly comes from whatever ROCm is installed, and the two can be + # different vintages. The sweep would then measure the flavor axis with one + # compiler and the arch axis with another and record the pair as a single + # toolchain, since the provenance block names only clang. A caller who + # names a directory is asserting "this is the toolchain"; honour it, and let + # the missing tool surface as the missing tool. + raw = os.environ.get("ROCKE_LLVM_BIN") + if raw: + cand = Path(raw) / exe + return str(cand) if _is_file(cand) else None + + # The ROCm root under the comgr rocke resolved. The lib may sit at + # /lib or at a versioned /core-X.Y/lib, so walk a few ancestors. + try: + from rocke.runtime.comgr import resolved_lib_path + + lib = resolved_lib_path() + except Exception: + lib = None + if lib: + libp = Path(lib).resolve() + roots.extend(libp.parents[i] for i in range(min(4, len(libp.parents)))) + + for env_var in ("ROCM_PATH", "ROCM_HOME"): + raw = os.environ.get(env_var) + if raw: + roots.append(Path(raw)) + + for root in roots: + cand = root / "llvm" / "bin" / exe + if _is_file(cand): + return str(cand) + + import shutil + + return shutil.which(name) + + +def _requires_newer_flavor(exc: BaseException) -> bool: + """Did the instance decline to lower because this LLVM is too old? + + The corpus is flavor-wide but a host is not. An instance gated on a newer + vintage says so and refuses -- `tile.wmma_gfx1250_..._scale_e8m0_e8m0_k32` + raises `requires llvm23 (ROCm 7.13+), got llvm22` -- and that refusal is + the emitter working correctly, on a case this host was never going to be + able to validate. + + It has to be separated from every other lowering error, because those are + still a validity failure of exactly the kind this gate exists to catch. So + the match is on the gate's own wording rather than on the exception type: + a bare `NotImplementedError` from anywhere else in the lowerer stays fatal. + """ + return bool(re.search(r"requires llvm\d+", str(exc))) + + +def _dump_corpus( + out_dir: Path, flavor: str, keep: list +) -> tuple[dict[str, tuple[Path, str]], dict[str, tuple[str, str]]]: + """Lower every selected case to a .ll on disk. + + Returns (case_id -> (path, arch), case_id -> (verdict, diagnostic)) -- the + second being the cases this flavor cannot lower at all. They are reported + UNVALIDATED for the same reason an untargetable arch is: nothing was + measured, so neither a pass nor a failure is an honest verdict. Previously + the first such case aborted the whole run with FATAL, which on an llvm22 + host reds the default `run_all.py` gate over one llvm23-gated instance. + """ + from rocke_ir_parity_harness import lower_case, safe + + modules: dict[str, tuple[Path, str]] = {} + skipped: dict[str, tuple[str, str]] = {} + for case in keep: + cid = case["case_id"] + try: + _rec, llvm = lower_case(case, flavor) + except NotImplementedError as exc: + if not _requires_newer_flavor(exc): + raise + skipped[cid] = ("UNVALIDATED", f"{type(exc).__name__}: {exc}") + continue + path = out_dir / safe(cid) + path.write_text(llvm) + modules[cid] = (path, case["arch"]) + return modules, skipped + + +def _verify(opt: str, path: Path) -> tuple[bool, str]: + proc = subprocess.run( + [opt, "-passes=verify", "-disable-output", str(path)], + capture_output=True, + text=True, + ) + return proc.returncode == 0, (proc.stderr or proc.stdout).strip() + + +# `-O0` for the same reason `tools/gen_arch_domain.py` probes at `-O0`: this +# gate's whole value is that the questionable construct reaches the backend and +# then the linker. At `-O3` the IR pipeline is free to fold or delete the call +# being asked about, and a module that links because the suspect instruction was +# optimised away reports OK without having proven anything -- the exact +# false-positive the link oracle was chosen to avoid, reintroduced one flag +# later. Codegen quality is not being measured here; reachability is. +# +# `-nogpulib` for the same reason the generator passes it: neither tool is +# asking anything about the device libraries, and without it clang resolves +# ROCm's device bitcode from whatever install it finds. That makes the answer +# depend on the surrounding ROCm rather than on the module under test, which is +# the one variable a validity gate must not have. Verified a no-op on llvm22 -- +# identical verdicts for all 154 cases with and without it. +COMPILE_CFLAGS = ("-O0", "-nogpulib") + + +def _compile_argv(clang: str, path: Path, arch: str, out: Path) -> list[str]: + """The one place the compile is spelled out, so a test can read it.""" + return [ + clang, + "-x", + "ir", + *COMPILE_CFLAGS, + "-target", + "amdgcn-amd-amdhsa", + f"-mcpu={arch}", + "-o", + str(out), + str(path), + ] + + +def _compile(clang: str, path: Path, arch: str, out: Path) -> tuple[bool, str]: + """Compile AND LINK to a loadable hsaco. The link is the point -- see the + module docstring for why stopping at -S would let a nonexistent intrinsic + through.""" + proc = subprocess.run( + _compile_argv(clang, path, arch, out), + capture_output=True, + text=True, + ) + return proc.returncode == 0, (proc.stderr or proc.stdout).strip() + + +def _target_unsupported(diag: str) -> bool: + """Did this clang refuse the *target*, rather than the module? + + The two are not the same finding and must not share a verdict. rocke wires + arches ahead of the toolchains that can build for them -- gfx1250 against + the LLVM 20 that ships in ROCm 7.1 is the live case -- and that clang + rejects `-mcpu=gfx1250` in the driver, before it has looked at a single + instruction. Counting that as an emission failure blames the lowerer for a + module the compiler never read, and now that this gate runs by default in + `tests/run_all.py` it would red every host whose ROCm predates the newest + wired arch, for a reason nobody can act on. + + `tools/gen_arch_domain.py` already draws this line -- `target_unsupported` + is a separate status there precisely so "we could not ask" is never filed + as "the answer is no" -- and the wording matched is the same one. + """ + return "invalid target id" in diag.lower() + + +def _first_diagnostic(text: str) -> str: + """The one line worth printing in the summary table.""" + for line in text.splitlines(): + s = line.strip() + if not s: + continue + low = s.lower() + if "error" in low or "llvm error" in low or "undefined symbol" in low: + return s + return text.splitlines()[0].strip() if text.strip() else "(no diagnostic)" + + +def main() -> int: + ap = argparse.ArgumentParser(description="rocKE emitted-IR validity gate") + ap.add_argument( + "--only", default="", help="restrict to case ids containing SUBSTR (comma-sep)" + ) + ap.add_argument("--arch", default="", help="restrict to arches (comma-separated)") + ap.add_argument( + "--flavor", + default="", + help="llvm flavor to lower at (default: the host's own). A non-native " + "flavor has no local compiler and needs --force.", + ) + ap.add_argument( + "--force", + action="store_true", + help="lower at a non-native --flavor, or compile with a clang whose " + "version disagrees with it, anyway (diagnostic; the result says " + "nothing about that flavor's real toolchain)", + ) + ap.add_argument("--jobs", type=int, default=0, help="parallel compiles") + ap.add_argument( + "--no-verify", action="store_true", help="skip the L0 opt -passes=verify lane" + ) + ap.add_argument( + "--strict", + action="store_true", + help="treat a missing toolchain as a failure instead of a skip (CI)", + ) + ap.add_argument("--keep-ir", default="", help="write the lowered .ll files here") + ap.add_argument( + "--verbose", action="store_true", help="full diagnostic per failure" + ) + ap.add_argument("--list", action="store_true", help="list the corpus and exit") + args = ap.parse_args() + + _bootstrap_sys_path() + from rocke_ir_parity_harness import cases, current_flavor + + native = current_flavor() + flavor = args.flavor or native + + keep = list(cases()) + if args.only: + wanted = [s for s in args.only.split(",") if s] + keep = [c for c in keep if any(w in c["case_id"] for w in wanted)] + if args.arch: + arches = {s for s in args.arch.split(",") if s} + keep = [c for c in keep if c["arch"] in arches] + + if args.list: + for case in keep: + print(f"{case['arch']:<16}{case['family']:<22}{case['case_id']}") + print(f"\n{len(keep)} cases") + return 0 + + if not keep: + print("FATAL: selection matched no cases", file=sys.stderr) + return 1 + + print("== rocKE emitted-IR validity ==") + print(f" cases : {len(keep)}") + print(f" flavor : {flavor}" + ("" if flavor == native else f" (host: {native})")) + + if flavor != native and not args.force: + print( + f"\nRESULT: UNVALIDATED - this host's toolchain implements {native}, " + f"so there is no compiler here that can rule on {flavor}. Re-run on a " + f"{flavor} host, or pass --force to lower anyway (diagnostic only)." + ) + return 1 if args.strict else 0 + + clang = _llvm_tool("clang") + opt = None if args.no_verify else _llvm_tool("opt") + print(f" clang : {clang or '(not found)'}") + if not args.no_verify: + print(f" opt : {opt or '(not found, L0 skipped)'}") + + if clang is None: + msg = ( + "\nRESULT: UNVALIDATED - no clang found under the resolved ROCm " + "install or on PATH; nothing was compiled. Set ROCKE_LLVM_BIN or " + "ROCM_PATH." + ) + print(msg) + return 1 if args.strict else 0 + + # Who actually answered. Printed unconditionally, and before any verdict, + # because the path alone does not say which vintage lives there -- and a + # green recorded against the wrong compiler is not distinguishable after + # the fact without this line. + identity = clang_identity(clang) + print(f" version: {identity}") + + # The `flavor != native` test above compares two rocke-side values and so + # cannot catch this: nothing there asks the binary what it is. Neither + # ROCKE_LLVM_BIN nor PATH is obliged to agree with the ROCm rocke resolved, + # so a complete LLVM 20 install on an llvm22 host passes every earlier + # check -- internally consistent, attributed to the wrong vintage -- and + # would report GREEN under a header reading `flavor : llvm22`. + # + # UNVALIDATED rather than the generator's hard refusal, and the asymmetry + # is deliberate. The generator writes a committed artifact, where a + # mis-attributed run is a permanent false record. This gate writes nothing, + # so the honest report is that nothing was measured for the flavor asked + # about -- the same line already drawn for an arch this clang cannot target + # (`_target_unsupported`). Failing closed here would also newly red every + # host whose PATH clang disagrees with its comgr, on a gate this change + # turns on by default, for something the developer did not do wrong. + # `--strict` is the CI-side opt-in to treating that as a failure. + clang_flavor = flavor_of_clang(identity) + if clang_flavor and clang_flavor != flavor and not args.force: + print( + f"\nRESULT: UNVALIDATED - this clang reports {clang_flavor} but the " + f"corpus was lowered at {flavor}, so a verdict from it would be " + f"attributed to the wrong LLVM vintage; nothing was compiled. Point " + f"ROCKE_LLVM_BIN at the bin/ of the {flavor} toolchain, set " + f"ROCKE_LLVM_FLAVOR={clang_flavor} if this compiler is the one you " + f"meant, or pass --force to compile anyway (diagnostic only)." + ) + return 1 if args.strict else 0 + + tmp = tempfile.TemporaryDirectory(prefix="rocke_ir_validity_") + ir_dir = Path(args.keep_ir) if args.keep_ir else Path(tmp.name) + ir_dir.mkdir(parents=True, exist_ok=True) + + print(f"\n== lowering {len(keep)} cases ==") + try: + modules, not_lowerable = _dump_corpus(ir_dir, flavor, keep) + except Exception as exc: # a lowering failure is a validity failure too + print(f"FATAL: lowering raised {type(exc).__name__}: {exc}", file=sys.stderr) + return 1 + print(f" wrote {len(modules)} modules to {ir_dir}") + if not_lowerable: + print(f" {len(not_lowerable)} case(s) need a newer LLVM than {flavor}") + + jobs = args.jobs or min(32, (os.cpu_count() or 1)) + out_dir = Path(tmp.name) / "out" + out_dir.mkdir(exist_ok=True) + + def check(item: tuple[str, tuple[Path, str]]) -> tuple[str, str, str]: + cid, (path, arch) = item + if opt is not None: + ok, diag = _verify(opt, path) + if not ok: + return cid, "L0-VERIFY", diag + ok, diag = _compile(clang, path, arch, out_dir / (path.stem + f".{arch}.hsaco")) + if ok: + return cid, "OK", diag + return cid, ("UNVALIDATED" if _target_unsupported(diag) else "L1-COMPILE"), diag + + print(f"\n== compiling (link to hsaco, {jobs} jobs) ==") + results: dict[str, tuple[str, str]] = {} + # Threads, not processes: every unit of work is already its own subprocess, + # so the fatal-error isolation is provided by the child and the parent is + # pure I/O wait. + with cf.ThreadPoolExecutor(jobs) as pool: + for cid, verdict, diag in pool.map(check, sorted(modules.items())): + results[cid] = (verdict, diag) + results.update(not_lowerable) + + # From the corpus entry, not from `modules`: a case that never lowered has + # no module to read the arch back off, and it is the one we most want named. + arch_of = {c["case_id"]: c["arch"] for c in keep} + + def _arch_of(cid: str) -> str: + return arch_of.get(cid, "-") + + # A case this host could not validate -- because the instance needs a newer + # LLVM, or because this clang cannot target its arch -- was never measured + # either way, so it is excluded from the pass count as well as the failure + # count. Folding it into OK would be the mirror-image lie. It also cannot + # settle a KNOWN_BAD entry: "did not compile here" is not evidence the + # emission was fixed, so a KNOWN_BAD case that went unvalidated must not + # read as stale. + unvalidated = {c: v for c, v in results.items() if v[0] == "UNVALIDATED"} + failed = {c: v for c, v in results.items() if v[0] not in ("OK", "UNVALIDATED")} + new_bad = {c: v for c, v in failed.items() if c not in KNOWN_BAD} + stale = [ + c + for c in KNOWN_BAD + if c in results and c not in failed and c not in unvalidated + ] + selected_known = [c for c in KNOWN_BAD if c in results] + + print() + print(f" OK : {len(results) - len(failed) - len(unvalidated)}") + print( + f" known-bad : {len(failed) - len(new_bad)} / {len(selected_known)} selected" + ) + if unvalidated: + print( + f" UNVALIDATED : {len(unvalidated)} " + f"({len(not_lowerable)} need a newer LLVM, " + f"{len(unvalidated) - len(not_lowerable)} an untargetable arch)" + ) + print(f" NEW failures: {len(new_bad)}") + + if new_bad: + print("\n== NEW failures ==") + for cid in sorted(new_bad): + verdict, diag = new_bad[cid] + arch = _arch_of(cid) + print(f"\n {verdict} {cid} [{arch}]") + print(f" {_first_diagnostic(diag)}") + if args.verbose: + for line in diag.splitlines(): + print(f" | {line}") + + if stale: + print("\n== STALE KNOWN_BAD entries (these now compile) ==") + for cid in sorted(stale): + print(f" {cid}\n reason on file: {KNOWN_BAD[cid]}") + print( + "\n KNOWN_BAD only shrinks. Delete these entries in the change that " + "fixed them." + ) + + if unvalidated: + print("\n== UNVALIDATED (nothing was measured here) ==") + for cid in sorted(unvalidated): + why = ( + "needs a newer LLVM" if cid in not_lowerable else "arch not targetable" + ) + print(f" {cid} [{_arch_of(cid)}] {why}") + print("\n Re-run on a newer ROCm to cover these.") + + print() + if new_bad: + print( + f"RESULT: RED - {len(new_bad)} case(s) emit IR the toolchain rejects. " + "Fix the emission; do not add to KNOWN_BAD." + ) + return 1 + if stale: + print("RESULT: RED - KNOWN_BAD is stale; remove the entries listed above.") + return 1 + # --strict already means "an unmeasured lane is a failure here" for the + # no-toolchain and wrong-flavor exits above; an untargetable arch is the + # same gap at a finer grain, so it answers to the same flag. Without it the + # default gate stays green on a host that simply predates the arch. + if unvalidated and args.strict: + print( + f"RESULT: RED - {len(unvalidated)} case(s) unvalidated under " + "--strict; this clang cannot target their arch." + ) + return 1 + tail = f" ({len(unvalidated)} unvalidated)" if unvalidated else "" + if failed: + print( + f"RESULT: GREEN - every case compiles except the {len(failed)} " + f"documented in KNOWN_BAD{tail}." + ) + else: + print(f"RESULT: GREEN - every emitted module compiles and links{tail}.") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/dnn-providers/hip-kernel-provider/rocke/platform/tools/gen_arch_domain.py b/dnn-providers/hip-kernel-provider/rocke/platform/tools/gen_arch_domain.py new file mode 100755 index 000000000000..1e7484c0dbd1 --- /dev/null +++ b/dnn-providers/hip-kernel-provider/rocke/platform/tools/gen_arch_domain.py @@ -0,0 +1,1105 @@ +#!/usr/bin/env python3 +"""Generate the intrinsic availability table (the "arch domain") by probing the +installed toolchain. + +# Why this exists + +rocke resolves an intrinsic `declare` on ONE axis: the LLVM flavor. The target +arch is consumed only to pick an ISA backend (`lower_llvm.py`, `backend_for(arch +or "gfx950")`) and never reaches the decl table -- so "is this intrinsic +available on this GPU" is checked nowhere at build time. See +`dsl_docs/development/arch_axis_proposal.md`. + +This tool measures the missing axis instead of hand-maintaining it, and commits +the result as a data file. Nothing consumes the artifact yet; landing the data +first is deliberate (it cannot break anything, and it surfaces the defects that +justify the rest). + +# Two stages, because the two axes are answered by different tools + +Stage A -- the flavor axis -- asks whether this LLVM knows the name at all. It +is arch-free, so it runs once per key rather than once per (key, arch), and it +uses `opt -S`: LLVM resolves a recognised `llvm.*` declare on parse, attaching +the intrinsic's attributes and remangling overloads, while an unrecognised name +round-trips verbatim as an ordinary external function. See `_name_exists`. + +Stage B -- the arch axis -- compiles AND LINKS a probe module per (key, arch), +for names that survived stage A. It is a link for the same reason +`check_ir_validity.py` is: a `declare` for a nonexistent intrinsic is accepted +by `opt -passes=verify` AND by `clang -S` -- to the backend it is an ordinary +external call, emitted as a GOT-relative `s_swappc_b64` -- and only the link +forces the symbol to resolve. It runs in a subprocess because an intrinsic that +exists but is unsupported on the target reaches `report_fatal_error`, which +kills the process. + +The split is what makes this cheap: we do not need a hand-written compatibility +matrix, we can read each answer off its own oracle. + + stage A resolves -> continue to stage B + stage A verbatim -> "name_absent" this SPELLING is not an intrinsic + in this LLVM (flavor axis) + link OK -> "ok" available here + Cannot select / fatal -> "arch_absent" the name is real, this target + cannot lower it (arch axis) + +Three more buckets exist so that a non-answer is never recorded as a negative: + + invalid target ID -> "target_unsupported" this clang cannot target this + arch at all; it has no opinion + clang crashed -> "toolchain_crash" asking the question killed the + compiler; we did not get an + answer, only a bug report + anything else -> "probe_error" OUR module was malformed + +`name_absent` deserves care when reading results: it means the exact mangled +string rocke emits is not a known intrinsic. A genuinely nonexistent operation +and a merely mis-mangled overload suffix are indistinguishable here -- both are +bugs in the decl table, but they are different bugs. + +# Provenance is not optional + +A result is only meaningful against the toolchain that produced it, and a host +can only ever validate its own flavor. The artifact therefore records the clang +identity and the flavor rocke resolved, and the generator refuses to run when +those two disagree -- an artifact labelled with the wrong LLVM vintage is worse +than no artifact, because it looks authoritative. + +Usage: + python rocke/platform/tools/gen_arch_domain.py # write the artifact + python rocke/platform/tools/gen_arch_domain.py --check # CI: regen is a no-op + python rocke/platform/tools/gen_arch_domain.py --only mfma --verbose + python rocke/platform/tools/gen_arch_domain.py --keep-ir DIR +""" + +from __future__ import annotations + +import argparse +import concurrent.futures as cf +import json +import re +import subprocess +import sys +import tempfile +from pathlib import Path + +from _hostcaps import available_cpus +from _llvm_identity import clang_identity, flavor_of_clang + +HERE = Path(__file__).resolve().parent +ROCKE = HERE.parent # tools -> rocke/platform + +SCHEMA = "rocke.intrinsic_arch_domain/v1" +DATA_DIR = ROCKE / "python" / "rocke" / "core" / "arch" / "data" + + +def default_out(flavor: str) -> Path: + """One artifact per flavor, named after it. + + A single shared file would be wrong, not merely inconvenient: a host can + only ever measure its own LLVM, so whichever flavor ran last would silently + overwrite the others and `--check` would fail on every machine whose + toolchain differs from the one that blessed the file. Naming the flavor + makes each column independently ownable and independently checkable. + """ + return DATA_DIR / f"intrinsic_arch_domain.{flavor}.json" + + +STATUS_OK = "ok" +STATUS_NAME_ABSENT = "name_absent" +STATUS_ARCH_ABSENT = "arch_absent" +STATUS_TARGET_UNSUPPORTED = "target_unsupported" +STATUS_TOOLCHAIN_CRASH = "toolchain_crash" +STATUS_TOOLCHAIN_TIMEOUT = "toolchain_timeout" +STATUS_PROBE_ERROR = "probe_error" + +# Bumped when the probe *semantics* change -- not when this file is merely +# edited -- and recorded into every column so a committed answer can be told +# apart from one an older generator measured. +# +# The need is not hypothetical. The llvm20 column blessed before `-O0` became +# mandatory records `ok` for six arches on +# `llvm.amdgcn.raw.ptr.buffer.load.async.lds`, and the current generator cannot +# reproduce that on the same toolchain build because the probe does not +# terminate at all: at -O3 the call was deleted before it could hang, and the +# empty module linked. Nothing in the artifact said which generator wrote it, +# so the only way to find that out was to re-measure and notice the +# contradiction. +# +# 1 -- initial, probes at -O3 +# 2 -- probes at -O0, per-probe timeout, provenance recorded +# 3 -- immarg values swept on a negative, winning value recorded +# 4 -- llvm23 diagnostics understood; the sweep also runs on probe_error +GENERATOR = 4 + +# Hoisted out of `_probe` so the artifact can record the flags that actually +# ran rather than a hand-copied list that drifts from them. `-O0` is the one +# that decides correctness (see `_probe`), which is exactly why a column must +# carry proof it was used. +PROBE_CFLAGS = ("-O0", "-nogpulib") + +# A probe that has not answered in this long is not going to. A probe module is +# a single declare and a single call, and the normal cost is tens of +# milliseconds, so this is roughly three orders of magnitude of headroom. +# +# The budget exists to bound the *sweep*, not to hurry any one probe. Without +# it a single non-terminating probe hangs the whole run, `--check` never +# returns, and the drift gate's own subprocess timeout fires 30 minutes later +# as an error rather than a verdict -- one unlucky key takes down the gate for +# every host running that flavor. +PROBE_TIMEOUT_S = 60 + + +def _bootstrap_sys_path() -> None: + """Import rocke from the checkout without an external PYTHONPATH, matching + tests/conftest.py. Unlike check_ir_validity this needs no library/ reach -- + the decl table lives entirely in platform.""" + path = ROCKE / "python" + if str(path) not in sys.path: + sys.path.insert(0, str(path)) + + +# -------------------------------------------------------------------------- +# Probe module synthesis +# -------------------------------------------------------------------------- + +# Parameter attributes that may appear between the type and the comma. They are +# legal on a declare but carry no meaning for us, and `immarg` is the only one +# that changes what we must pass at the call site. +_PARAM_ATTRS = ("nocapture", "readnone", "readonly", "writeonly", "immarg") + + +def _split_params(params: str) -> list[str]: + """Split a declare's parameter list on top-level commas. + + Aggregate types contain commas of their own (`{ i32, i32 }`), so a plain + `.split(",")` corrupts them. + """ + out: list[str] = [] + depth = 0 + cur = "" + for ch in params: + if ch in "<{[(": + depth += 1 + elif ch in ">}])": + depth -= 1 + if ch == "," and depth == 0: + out.append(cur.strip()) + cur = "" + else: + cur += ch + if cur.strip(): + out.append(cur.strip()) + return out + + +def _param_type(param: str) -> tuple[str, bool]: + """Strip parameter attributes, returning (type, is_immarg).""" + is_imm = "immarg" in param + ty = param + for attr in _PARAM_ATTRS: + ty = ty.replace(attr, "") + return " ".join(ty.split()), is_imm + + +_DECL_RE = re.compile(r"^declare\s+(.+?)\s+@([\w.]+)\((.*)\)\s*$") + +# `Segmentation fault (core dumped)` vs `Segmentation fault` is a property of +# the host's core-dump settings, not of the crash. See `_crash_reason`. +_CORE_DUMPED_RE = re.compile(r"\s*\(core dumped\)\s*$") + +# The buffer fat pointer is not a legal kernel-argument type and cannot be +# produced by an addrspacecast, so it is the one operand we still pass poison +# for. That is safe here: the gfx942 control above lowers fine with a poison +# resource as long as the *integer* operands are real values. +_FAT_PTR = "ptr addrspace(8)" + +# Literal values the immediate-operand rescue tries, in order. See +# `_probe_module`'s `literal_ints` and `_wants_literals`. +_LITERAL_PROBE_VALUES = (0, 4) + +# Values the `immarg` sweep tries, in order, when the default 0 produced a +# negative. See `_probe_module`'s `imm_int` and the sweep in `run`. +# +# Chosen to cover the operand kinds that actually appear in this decl table +# rather than to be exhaustive: these are exactly the byte counts a +# load-to-LDS transfer size accepts, as llvm23's verifier enumerates them. A +# selector operand (an MFMA cbsz/blgp, say) is legal at 0 and so never reaches +# the sweep at all. The list is ordered smallest-first so the recorded winner +# is the least surprising legal value rather than whichever we happened to try +# first. +_IMMARG_PROBE_VALUES = (1, 2, 4, 12, 16) + +# The ways LLVM reports "that operand had to be an immediate, and not that +# one". llvm22 rejects the call in the verifier; llvm20 has no such check and +# instead dies during type legalisation, which is why the same decl-table gap +# reads as a frontend error on one vintage and a backend error on the other. +# +# llvm23 added the third: a verifier check on the load-to-LDS transfer size +# that names the legal values outright. It is the same complaint as the first +# two -- the operand we synthesised is not an acceptable constant -- and it is +# the only one of the three that says what would have been acceptable. +_IMMEDIATE_OPERAND_DIAGS = ( + "immarg operand has non-immediate parameter", + "do not know how to expand this operator's operand", + "invalid data size for load-to-lds intrinsic", +) + + +def _wants_literals(status: str, evidence: str) -> bool: + """True when a failure looks like our probe passed a variable where the + intrinsic demands a constant, rather than a real arch answer.""" + if status not in (STATUS_ARCH_ABSENT, STATUS_PROBE_ERROR): + return False + low = evidence.lower() + return any(d in low for d in _IMMEDIATE_OPERAND_DIAGS) + + +def _probe_module( + decl: str, + datalayout: str, + literal_ints: int | None = None, + imm_int: int | None = None, +) -> tuple[str, str]: + """Build a minimal module that declares an intrinsic and calls it. + + Returns (module_text, ""), or ("", reason) when the declare cannot be + parsed -- an unparseable row is a probe_error, never a negative result. + + Every non-constant operand is a real SSA value, not `poison`. `poison` is a + valid constant of every first-class type and so looks like the obvious + generic choice, but it makes the probe lie: a poison `i32` operand sends + `raw.ptr.buffer.load.lds` into "Do not know how to expand this operator's + operand!" on gfx942, where the same call with concrete integers lowers + cleanly -- a false arch_absent. Integers, floats, vectors and aggregates + therefore arrive as kernel arguments, and non-generic pointers as an + addrspacecast of one. + + `literal_ints`, when set, replaces every integer kernel argument with that + literal value. Some operands must be immediates even though the declare + does not mark them `immarg`: rocke's decl table is hand-written and records + `immarg` only where an author happened to add it, while LLVM checks the + real intrinsic signature. `raw.ptr.buffer.load.lds`'s size operand is the + example, and the two vintages report the mismatch differently -- llvm20 + fails to legalise (on *every* arch, reading as a universal arch_absent when + the truth is "CDNA yes, RDNA no"), llvm22 rejects it up front with "immarg + operand has non-immediate parameter". This variant exists to rescue both, + and only those two diagnostics. + + `imm_int`, when set, is the value given to every `immarg` operand in place + of the default 0. A parameter that is already marked `immarg` is never + touched by `literal_ints` -- it is a constant either way, so the rescue + above has nothing to substitute -- but the *value* can still be illegal, + and an illegal immediate is indistinguishable from an unsupported target + from the diagnostic alone: both say `Cannot select`. `global.load.lds` + takes a per-lane transfer size whose legal values are 1, 2 and 4, so 0 + recorded every CDNA target as incapable of an instruction they run in + production. The only way to tell the two apart is to ask again with a + different value. + + All `immarg` operands move together, as `literal_ints` does. A declare + whose immediates have disjoint legal domains would need a cross product, + and nothing in this table does; if one appears, it reads as `arch_absent` + (conservative, and the direction that gets noticed) rather than as a wrong + `ok`. + + The result is stored `volatile` so the call survives -O3; without it, DCE + would drop the reference and the link would succeed spuriously. + """ + m = _DECL_RE.match(decl.strip()) + if not m: + return "", f"cannot parse declare: {decl!r}" + ret, name, params = m.groups() + ret = ret.strip() + + kargs: list[str] = [] + prologue: list[str] = [] + args: list[str] = [] + for i, param in enumerate(_split_params(params)): + ty, is_imm = _param_type(param) + if ty == "metadata": + # Not a first-class type. rocke's only metadata operands are the + # av.* scope lists, which want a real scope node, not an empty one. + args.append("metadata !0") + elif is_imm: + imm = 0 if imm_int is None else imm_int + args.append(f"{ty} {('true' if imm else 'false') if ty == 'i1' else imm}") + elif ty == _FAT_PTR: + args.append(f"{ty} poison") + elif literal_ints is not None and re.fullmatch(r"i\d+", ty): + lit = literal_ints + args.append(f"{ty} {('true' if lit else 'false') if ty == 'i1' else lit}") + elif ty == "ptr": + args.append("ptr %base") + elif re.fullmatch(r"ptr addrspace\(\d+\)", ty): + prologue.append(f" %p{i} = addrspacecast ptr %base to {ty}") + args.append(f"{ty} %p{i}") + else: + kargs.append(f"{ty} %a{i}") + args.append(f"{ty} %a{i}") + + call = f"call {ret} @{name}({', '.join(args)})" + if ret == "void": + tail = f" {call}\n" + else: + tail = f" %r = {call}\n store volatile {ret} %r, ptr addrspace(1) %out\n" + + signature = ", ".join(["ptr addrspace(1) %out", "ptr %base", *kargs]) + text = ( + f'target datalayout = "{datalayout}"\n' + 'target triple = "amdgcn-amd-amdhsa"\n\n' + f"{decl.strip()}\n\n" + f"define amdgpu_kernel void @probe({signature}) {{\n" + "entry:\n" + "".join(f"{line}\n" for line in prologue) + tail + " ret void\n" + "}\n\n" + '!0 = !{!"agent"}\n' + ) + return text, "" + + +def _name_exists(opt: str, decl: str, scratch: Path) -> tuple[bool, str]: + """Ask this LLVM whether it recognises the declare's name as an intrinsic. + + This is the *flavor* axis, and it is worth answering separately because it + is arch-free: a name either exists in this LLVM or it does not, and asking + once per key replaces one link probe per arch. + + The oracle is that LLVM resolves a recognised `llvm.*` declare on parse -- + it attaches the intrinsic's attribute set and, for overloaded intrinsics, + remangles the name (`ds.read.tr16.b64` prints back as `...b64.v4i16`). An + unrecognised `llvm.*` name is just an external function and round-trips + verbatim. No codegen is involved, so this also answers the cases where + codegen crashes outright: an `llvm.*` name with a `metadata` operand that + LLVM does not know is lowered as an ordinary call, and computing the + alignment of a metadata argument segfaults the backend. + """ + src = scratch / "name.ll" + src.write_text(decl.strip() + "\n", encoding="utf-8") + proc = subprocess.run( + [opt, "-S", "-o", "-", str(src)], + capture_output=True, + text=True, + check=False, + ) + if proc.returncode != 0: + return False, f"opt rejected the declare: {_first_error(proc.stderr)}" + for line in proc.stdout.splitlines(): + if line.startswith("declare "): + attributed = re.search(r"#\d+\s*$", line) is not None + m = _DECL_RE.match(re.sub(r"\s*#\d+\s*$", "", line)) + canonical = m.group(2) if m else "" + if attributed: + return True, canonical + # Remangled but attribute-free: still a resolved intrinsic. + original = _DECL_RE.match(decl.strip()) + if original and canonical and canonical != original.group(2): + return True, canonical + return False, "" + # The declare did not survive the round-trip at all. An unrecognised + # `llvm.*` name is an ordinary external function and is printed back + # verbatim even when unused, so a vanished declare means AutoUpgrade + # consumed it -- `amdgcn.global.atomic.fadd` becoming a plain `atomicrmw` + # is the live example. That still links, so the name counts as present. + return True, "(auto-upgraded)" + + +# -------------------------------------------------------------------------- +# Probe execution + classification +# -------------------------------------------------------------------------- + + +def _classify(rc: int, diag: str) -> tuple[str, str]: + """Map a clang invocation to (status, evidence). + + Order matters: "invalid target ID" is a frontend rejection that can coexist + with nothing else, and must be checked before the backend diagnostics. + """ + if rc == 0: + return STATUS_OK, "" + low = diag.lower() + if "invalid target id" in low: + return STATUS_TARGET_UNSUPPORTED, "invalid target ID" + if "undefined symbol" in low: + return STATUS_NAME_ABSENT, _first_error(diag) + # Three ways the backend says "this target cannot lower that": instruction + # selection has no pattern, type legalisation cannot break the operand + # down, and the generic lowering wants a runtime libcall the device does + # not have. All three are reached only *after* the name resolved, so the + # flavor axis is already settled by _name_exists() and cannot be confused + # with them here. + # A fourth, added in llvm23: the backend says so in words rather than by + # failing. It is the clearest of the four and the only one that cannot be + # confused with a malformed probe, so it is worth matching on its own + # rather than waiting for the selection failure it replaces. + if ( + "cannot select" in low + or "do not know how to expand this operator's operand" in low + or "no libcall available for" in low + or "intrinsic not supported on subtarget" in low + ): + return STATUS_ARCH_ABSENT, _first_error(diag) + # The compiler died rather than answered. This is NOT arch_absent: we did + # not learn that the target cannot lower the intrinsic, only that asking + # crashes LLVM. It gets its own status because folding it into either + # neighbour loses a finding -- `permlane64` on the wave64 targets segfaults + # instruction selection on llvm20 -- and because a crash is reproducible, + # so it stays stable under `--check` the way a resource failure would not. + if "please submit a bug report" in low or "stack dump:" in low: + return STATUS_TOOLCHAIN_CRASH, _crash_reason(diag) + # Unrecognised failure. Attributing it to the arch would be a guess, and a + # wrong guess here silently bakes a false negative into the artifact. + return STATUS_PROBE_ERROR, _first_error(diag) + + +def _crash_reason(diag: str) -> str: + """Summarise a clang crash without embedding host-specific paths. + + The crash dump leads with the full `-cc1` command line, which carries temp + directories and the resource-dir path. Committing that would make the + artifact differ between hosts for no informational gain, so keep only the + pass name and the signal. + + The signal name needs the same treatment for a less obvious reason: the + driver appends `(core dumped)` only when the kernel actually wrote one, + which depends on the host's `ulimit -c` and core_pattern rather than on + anything about the compiler. Leaving it in makes the committed evidence + differ between two machines that observed the identical crash, so `--check` + reports drift where there is none -- the one failure mode a drift gate + cannot afford. + """ + parts = [] + for line in diag.splitlines(): + s = line.strip() + if s.startswith("Running pass"): + parts.append(s.rstrip(".")) + elif "unable to execute command:" in s: + reason = s.split("unable to execute command:")[-1].strip() + parts.append(_CORE_DUMPED_RE.sub("", reason).strip()) + return "; ".join(parts[-2:])[:200] or "clang crashed" + + +def _first_error(text: str) -> str: + for line in text.splitlines(): + s = line.strip() + if not s: + continue + low = s.lower() + if "error" in low or "undefined symbol" in low or "cannot select" in low: + return s[:200] + return (text.strip().splitlines() or ["(no diagnostic)"])[0][:200] + + +def _probe( + clang: str, + path: Path, + arch: str, + out: Path, + timeout: float = PROBE_TIMEOUT_S, +) -> tuple[str, str]: + """Compile AND LINK one probe module for one arch. + + `-nogpulib` is required, not an optimisation: without it clang links the + ROCm device bitcode, which on a multi-install host can come from a DIFFERENT + ROCm than the one rocke resolved (observed: a 7.1 bitcode set pulled into a + probe, with datalayout-mismatch warnings). The probe must measure the + compiler, not the device libraries. + + `-O0` is also required, and for a subtler reason: at -O3 the IR pipeline can + delete the very call we are asking about, and a module with nothing left to + select links happily. llvm.amdgcn.permlane64 on gfx942 is the case that + found this -- a kernel argument is wave-uniform, permlane64 of a uniform + value folds to the identity, and LLVM 22's InstCombine folds it away. The + object contained no permlane64 at all, the link succeeded, and the probe + reported ok for a target where the instruction does not exist. Nine keys + were foldable this way when that was measured. -O0 keeps the call alive to + ISel, which is the only place that can answer the question. + + Keeping the call alive also exposes probes that never terminate -- llvm20 + spins indefinitely on `raw.ptr.buffer.load.async.lds` for every arch that + can target it -- so the timeout is part of the same bargain rather than a + defensive extra. A probe that runs out of budget is reported as + `toolchain_timeout` and never as `arch_absent`: not finishing is not an + answer about the target. + """ + argv = [ + clang, + "-x", + "ir", + *PROBE_CFLAGS, + "-target", + "amdgcn-amd-amdhsa", + f"-mcpu={arch}", + "-o", + str(out), + str(path), + ] + try: + proc = subprocess.run( + argv, + capture_output=True, + text=True, + check=False, + timeout=timeout, + # Run from the scratch directory, not from wherever the sweep was + # invoked. Probing is *expected* to crash clang -- that is what + # `toolchain_crash` records -- and a crash on a host with core dumps + # enabled drops a multi-megabyte `core` next to the caller. Run the + # sweep from a checkout and those land in the worktree. + cwd=str(out.parent), + ) + except subprocess.TimeoutExpired: + return ( + STATUS_TOOLCHAIN_TIMEOUT, + f"clang did not terminate within {timeout:g}s", + ) + return _classify(proc.returncode, (proc.stderr or proc.stdout).strip()) + + +# -------------------------------------------------------------------------- +# Inputs: the decl table, the arch list, the toolchain identity +# -------------------------------------------------------------------------- + + +def _decl_table(flavor: str) -> dict[str, str]: + """The decls a _Lowerer would resolve for this flavor. + + Mirrors `_Lowerer.__init__` exactly -- base table, then the per-flavor + override dict. Duplicating the merge here rather than importing a private + helper keeps the tool honest about what it measured, but it is a mirror and + must be updated if the resolution rule gains a rung. + """ + from rocke.core import lower_llvm as L + + decls = dict(L._INTRINSIC_DECLS) + if flavor == L.LLVM_FLAVOR_LLVM22: + decls.update(L._INTRINSIC_DECLS_LLVM22_OVERRIDES) + elif flavor == L.LLVM_FLAVOR_LLVM23: + decls.update(L._INTRINSIC_DECLS_LLVM23_OVERRIDES) + return decls + + +def _drift(committed: str, fresh: str) -> str | None: + """Describe how a committed column differs from a fresh run, or None. + + None means "differs only in which compiler build answered" -- every cell + agrees, and so does every field describing how the probe was posed. That is + not staleness and must not fail: `toolchain.clang` records the exact ROCm + build, so a byte comparison reds on any host whose patch level differs from + the one that blessed the column, which is most of them. This check exists to + catch a *wrong measurement*, and a column this host reproduces cell for cell + is not one. + + Everything else is drift, including the rest of `toolchain`. Those fields + are our own settings rather than properties of the host: `generator`, + `probe_cflags` and `probe_timeout_s` say how the question was asked, and a + change to any of them means the committed answers were obtained by a method + we no longer use. `probe_cflags` is the concrete example -- the same clang + reports `ok` or hangs for the same key depending on whether it carries + `-O0` -- so forgiving a difference there would forgive precisely the defect + that field was added to make visible. + """ + try: + a, b = json.loads(committed), json.loads(fresh) + except json.JSONDecodeError as exc: + return f"committed column is not valid JSON: {exc}" + + if a.get("keys") != b.get("keys"): + changed = [ + f"{k}/{arch}: {a['keys'][k][arch]['status']} -> {cell['status']}" + for k, row in b.get("keys", {}).items() + for arch, cell in row.items() + if arch in a.get("keys", {}).get(k, {}) + and a["keys"][k][arch]["status"] != cell["status"] + ] + head = "; ".join(changed[:5]) or "cell evidence or coverage differs" + more = f" (+{len(changed) - 5} more)" if len(changed) > 5 else "" + return f"measurements changed -- {head}{more}" + + for doc in (a, b): + doc.get("toolchain", {}).pop("clang", None) + if a != b: + fields = sorted(k for k in set(a) | set(b) if a.get(k) != b.get(k)) + return f"differs in {', '.join(fields)}, not in the measurements" + return None + + +def _prune() -> int: + """Drop rows for decl keys that no longer exist, on every committed column. + + The one repair that needs no toolchain, and the one the sweep cannot do. + A host can only regenerate its own flavor, so when a key is renamed or + deleted -- a rebase onto a develop that did it is the realistic route, and + is how `tanh.f32` and the two pre-rename `wmma.scale` keys went stale in + all three columns at once -- every other column keeps measuring something + the tree no longer emits, and stays red on every machine until someone + finds three toolchains. Nobody has three toolchains. + + Deleting is safe in a way that writing never is: the answer being removed + was measured, is still true of the LLVM that produced it, and is simply no + longer a question rocke asks. Nothing is invented, so the column keeps its + provenance and the remaining cells keep their meaning. Adding the *new* + key still needs that flavor's compiler, and until someone runs it the + artifact test reports a named skip -- which is the honest state. + """ + from rocke.core import lower_llvm as L # noqa: F401 (loads the decl tables) + + changed = 0 + for path in sorted(DATA_DIR.glob("intrinsic_arch_domain.*.json")): + flavor = path.name.split(".")[1] + doc = json.loads(path.read_text()) + expected = set(_decl_table(flavor)) + stale = sorted(set(doc.get("keys", {})) - expected) + if not stale: + print(f" {path.name}: nothing to prune") + continue + for key in stale: + doc["keys"].pop(key, None) + doc.get("canonical", {}).pop(key, None) + path.write_text(json.dumps(doc, indent=2, sort_keys=True) + "\n") + changed += 1 + print(f" {path.name}: dropped {len(stale)} stale row(s): {', '.join(stale)}") + + if not changed: + print("\nOK: every column already covers exactly the current decl table.") + return 0 + print( + f"\nwrote {changed} column(s). Rows were only ever removed; a key the " + "decl table gained still needs a sweep on that flavor's toolchain." + ) + return 0 + + +def main() -> int: + ap = argparse.ArgumentParser(description="rocKE intrinsic arch-domain generator") + ap.add_argument( + "--check", action="store_true", help="regenerate and fail on any diff" + ) + ap.add_argument( + "--out", + type=Path, + default=None, + help="override the artifact path (default: one file per flavor)", + ) + ap.add_argument("--only", default=None, help="substring filter on decl keys") + ap.add_argument( + "--arch", action="append", default=None, help="limit to these arches" + ) + ap.add_argument( + "--keep-ir", type=Path, default=None, help="keep probe modules here" + ) + ap.add_argument( + "--prune", + action="store_true", + help="drop rows whose decl key is gone, on every column; needs no toolchain", + ) + ap.add_argument("--jobs", type=int, default=0) + ap.add_argument("--verbose", action="store_true") + args = ap.parse_args() + + _bootstrap_sys_path() + sys.path.insert(0, str(HERE)) + from check_ir_validity import _llvm_tool # same resolution order, one owner + from rocke.core import lower_llvm as L + from rocke.core.isa.backend import wired_arches + + # Before any toolchain resolution: pruning is a repair to columns this host + # cannot measure, so requiring a compiler for it would defeat the purpose. + if args.prune: + print("rocKE intrinsic arch-domain generator -- prune") + return _prune() + + flavor = L._resolve_llvm_flavor() + clang = _llvm_tool("clang") + opt = _llvm_tool("opt") + + print("rocKE intrinsic arch-domain generator") + print(f" flavor : {flavor}") + print(f" clang : {clang or '(not found)'}") + print(f" opt : {opt or '(not found)'}") + + if clang is None: + print( + "\nRESULT: UNVALIDATED - no clang found under the resolved ROCm " + "install or on PATH; nothing was probed. Set ROCKE_LLVM_BIN." + ) + return 0 + + # `opt` is not optional, despite being the cheap stage. It owns the flavor + # axis: without it nothing separates "this LLVM has no such intrinsic" from + # "this target cannot lower it", and the sweep would record `name_absent` + # keys as `arch_absent`, `toolchain_crash` or -- worst -- `ok`, because an + # unresolved `llvm.*` name is just an external call that a link may happen + # to accept. Substituting "the name exists" for "we did not ask" is the one + # inversion this artifact exists to prevent, and it would be committed as + # fact. No name check, no column. + # + # This exits 1 where the no-clang path above exits 0, and the asymmetry is + # the point. No clang at all is a legitimate state: the host is not a + # probing host, says so, and asks for nothing. Finding clang without `opt` + # is not a state any complete LLVM install produces -- every ROCm release + # that ships one ships the other -- so it means the environment is pointed + # somewhere partial, most often a distro clang on PATH while `opt` is only + # installed under a versioned name. That is a broken invocation, not a + # quiet no-op, and silence would leave the caller believing a sweep it + # never got. + if opt is None: + print( + "\nFAIL: clang was found but `opt` was not, and the flavor axis is " + "measured with `opt`; every key would be recorded as present " + "without being checked. Nothing was probed. Set ROCKE_LLVM_BIN to " + "a complete LLVM install (the one whose clang is above), or unset " + "it to fall back to the ROCm that rocke itself loads." + ) + return 1 + + identity = clang_identity(clang) + print(f" version: {identity}") + + # A probe result is only meaningful against the flavor it was measured on. + # Recording llvm20 results in an artifact stamped llvm23 would be actively + # misleading, so disagreement is fatal rather than a warning. + clang_flavor = flavor_of_clang(identity) + if clang_flavor and clang_flavor != flavor: + print( + f"\nERROR: clang reports {clang_flavor} but rocke resolved {flavor}. " + "The probe would be attributed to the wrong LLVM vintage. " + "Set ROCKE_LLVM_BIN to the matching toolchain, or ROCKE_LLVM_FLAVOR " + "if the override is intended." + ) + return 2 + + arches = sorted(args.arch) if args.arch else sorted(wired_arches()) + decls = _decl_table(flavor) + keys = sorted(k for k in decls if not args.only or args.only in k) + print(f" arches : {', '.join(arches)}") + print(f" keys : {len(keys)}") + + tmp = tempfile.TemporaryDirectory(prefix="rocke_arch_domain_") + ir_dir = args.keep_ir if args.keep_ir else Path(tmp.name) + ir_dir.mkdir(parents=True, exist_ok=True) + + datalayout = L._datalayout_for_flavor(flavor) + + # Build every probe module first; an unparseable declare is a probe_error + # for every arch rather than a crash mid-sweep. + modules: dict[str, tuple[Path | None, str]] = {} + literal_modules: dict[str, list[Path]] = {} + imm_modules: dict[str, list[tuple[int, Path]]] = {} + for key in keys: + stem = re.sub(r"[^A-Za-z0-9_.-]", "_", key) + text, why = _probe_module(decls[key], datalayout) + if why: + modules[key] = (None, why) + continue + path = ir_dir / f"{stem}.ll" + path.write_text(text) + modules[key] = (path, "") + # Two literal values, tried in order. Neither is safe alone: 0 is + # rejected where the operand is a byte count, and a nonzero value is + # out of range where the operand is a small enum (an MFMA cbsz/blgp + # selector, say). Trying both keeps the rescue from depending on which + # kind of operand we happened to hit. + variants = [] + for lit in _LITERAL_PROBE_VALUES: + lit_text, why_lit = _probe_module(decls[key], datalayout, literal_ints=lit) + if not why_lit and lit_text != text: + lit_path = ir_dir / f"{stem}.lit{lit}.ll" + lit_path.write_text(lit_text) + variants.append(lit_path) + if variants: + literal_modules[key] = variants + # The immarg sweep, built the same way. A declare with no integer + # immarg produces a module identical to the base one, so the `!=` + # test below is what decides which keys are sweepable -- no separate + # signature analysis to keep in step with `_probe_module`. + imm_variants = [] + for imm in _IMMARG_PROBE_VALUES: + imm_text, why_imm = _probe_module(decls[key], datalayout, imm_int=imm) + if not why_imm and imm_text != text: + imm_path = ir_dir / f"{stem}.imm{imm}.ll" + imm_path.write_text(imm_text) + imm_variants.append((imm, imm_path)) + if imm_variants: + imm_modules[key] = imm_variants + + # Stage A -- the flavor axis, once per key. Arch-free, so it costs one + # `opt` run instead of one link per arch, and it is the only stage that can + # answer a key whose codegen crashes. + canonical: dict[str, str] = {} + absent: set[str] = set() + for key in keys: + exists, note = _name_exists(opt, decls[key], Path(ir_dir)) + if exists: + canonical[key] = note + else: + absent.add(key) + print( + f" names : {len(keys) - len(absent)} present, {len(absent)} absent in {flavor}" + ) + + # Stage B -- the arch axis, only for names that exist. + work = [(k, a) for k in keys if k not in absent for a in arches] + + def run(item: tuple[str, str]) -> tuple[str, str, str, str, int | None]: + key, arch = item + path, why = modules[key] + if path is None: + return key, arch, STATUS_PROBE_ERROR, why, None + out = Path(ir_dir) / f"{path.stem}.{arch}.hsaco" + status, evidence = _probe(clang, path, arch, out) + # Rescue a suspected false negative. Both diagnostics below are the + # signature of "this operand had to be an immediate" -- llvm22 says so + # outright, llvm20 only fails to legalise -- so a literal-operand + # re-probe that lowers cleanly means the arch does support the + # intrinsic and our first probe was simply malformed. + # + # Scoped to those two diagnostics on purpose: literals give the backend + # strictly more information, so a blanket retry could constant-fold a + # genuinely unsupported intrinsic away and manufacture an `ok`. + if _wants_literals(status, evidence) and key in literal_modules: + # Try every literal value before giving up: a value that is out of + # range for one operand kind is in range for another, and stopping + # at the first non-OK answer would let an unlucky first choice + # masquerade as the arch's verdict. + settled: tuple[str, str] | None = None + last: tuple[str, str] | None = None + for i, lit_path in enumerate(literal_modules[key]): + lit_out = Path(ir_dir) / f"{path.stem}.lit{i}.{arch}.hsaco" + lit_status, lit_evidence = _probe(clang, lit_path, arch, lit_out) + if lit_status == STATUS_OK: + return key, arch, STATUS_OK, "", None + last = (lit_status, lit_evidence) + if settled is None and not _wants_literals(lit_status, lit_evidence): + settled = last + # Every variant still failed to legalise -- but with no variable + # integer operands left, that is no longer something our probe can + # fix, so it is the target speaking. gfx942 takes this call with a + # literal size and gfx1201 does not, on both llvm20 and llvm22. + # The verifier's immarg complaint is excluded on purpose: surviving + # the literal sweep means the non-immediate operand is not an + # integer, which really is our module's fault. + if settled is None and last and last[0] == STATUS_ARCH_ABSENT: + settled = last + status, evidence = settled or (status, evidence) + + # Sweep the immediates. Runs only on a negative, so the common case + # still costs one probe -- and only on the ~1 key in 6 whose declare + # has an integer immarg at all. + # + # Two statuses, and only these two. `arch_absent` is the one the sweep + # was built for: the backend could not select, and the operand value is + # one reason why. `probe_error` is the same defect caught earlier -- + # llvm23's verifier rejects an illegal transfer size before codegen + # runs, and "our module was malformed" is exactly what the sweep + # repairs. A crash, a timeout or an unsupported target say nothing + # about the operand value, and re-asking would just pay for the same + # answer five more times. + # + # Any legal value wins, because the question the artifact answers is + # "can this target lower this intrinsic", not "can it lower it with + # the operand our probe happened to pick". A 0 that is out of range is + # our defect, not the target's limit. + if status in (STATUS_ARCH_ABSENT, STATUS_PROBE_ERROR) and key in imm_modules: + settled_imm: tuple[str, str] | None = None + for imm, imm_path in imm_modules[key]: + imm_out = Path(ir_dir) / f"{path.stem}.imm{imm}.{arch}.hsaco" + imm_status, imm_evidence = _probe(clang, imm_path, arch, imm_out) + if imm_status == STATUS_OK: + return key, arch, STATUS_OK, "", imm + if settled_imm is None and imm_status != STATUS_PROBE_ERROR: + settled_imm = (imm_status, imm_evidence) + # Every candidate failed, so the operand value was not the + # obstacle. Where we started from `arch_absent` the original + # evidence already says so and is kept -- the cell should describe + # the probe as posed by default. + # + # Where we started from `probe_error` it does not. "Our module was + # malformed" was true of the default probe and is now known not to + # be the whole story, because a legal value fails too. Leaving it + # would commit a `probe_error` -- the one status that means the + # generator is broken -- for a target that simply cannot lower the + # intrinsic. So the first candidate that produced a real + # classification speaks instead. + if status == STATUS_PROBE_ERROR and settled_imm is not None: + status, evidence = settled_imm + + return key, arch, status, evidence, None + + # Threads, not processes: each unit of work is already its own subprocess. + # + # The cap is deliberately well under the core count. Each probe is a clang + # that itself spawns ld.lld, so the process fan-out is ~2x the worker count + # and saturating a big host hits RLIMIT_NPROC -- observed as `posix_spawn + # failed: Resource temporarily unavailable` and as std::system_error from + # clang's own thread pool. Those surface as probe_error, and a probe_error + # that depends on machine load would make the artifact nondeterministic and + # `--check` flaky. Staying cheap is worth more here than being fast. + jobs = args.jobs or min(8, available_cpus()) + results: dict[str, dict[str, dict[str, str]]] = {k: {} for k in keys} + + def record( + key: str, arch: str, status: str, evidence: str, imm: int | None = None + ) -> None: + cell: dict[str, object] = {"status": status, "verified_on": flavor} + if evidence and status != STATUS_OK: + cell["evidence"] = evidence + # Only on a cell the sweep rescued. Its absence therefore means "the + # default 0 answered", which is the common case and should not cost a + # field on 1100 cells. Present, it says which value made the intrinsic + # lower -- without it nobody can tell a first-try `ok` from one that + # needed the fourth candidate, and re-deriving that by hand is how the + # defect it exists to prevent stayed invisible for two columns. + if imm is not None: + cell["probe_imm"] = imm + results[key][arch] = cell + + for key in absent: + for arch in arches: + record(key, arch, STATUS_NAME_ABSENT, f"not an intrinsic in {flavor}") + + with cf.ThreadPoolExecutor(max_workers=jobs) as ex: + for key, arch, status, evidence, imm in ex.map(run, work): + record(key, arch, status, evidence, imm) + if args.verbose and status != STATUS_OK: + print(f" {key:44s} {arch:14s} {status}") + + # Second pass, serial: anything that failed in a way we could not classify, + # and anything that took the toolchain down with it, gets one more chance + # with no contention. A real result is stable under retry; a resource + # failure is not, and under -j the probes fork enough linkers to hit the + # process limit occasionally -- llvm.fabs.f32 on gfx11-generic aborted that + # way once in three runs and would otherwise have been recorded as a + # permanent compiler crash. A genuine crash (permlane64 on the wave64 + # targets) reproduces serially, so the retry separates the two. Cells that + # survive stay as they were, which is the honest answer. + # + # A timeout retries on the same budget rather than a larger one. The retry + # is there to remove contention, not to grant more time: if 60 uncontended + # seconds are not enough for a module this small, more seconds will not + # change the verdict, and raising the budget only to watch a known hang + # spin costs the whole sweep. A probe that was merely starved by a loaded + # host clears the same bar easily once it has the machine to itself. + unstable = (STATUS_PROBE_ERROR, STATUS_TOOLCHAIN_CRASH, STATUS_TOOLCHAIN_TIMEOUT) + retry = [(k, a) for k, a in work if results[k][a]["status"] in unstable] + if retry: + print(f" retrying {len(retry)} unclassified/crashed probe(s) serially...") + for key, arch in retry: + _k, _a, status, evidence, imm = run((key, arch)) + record(key, arch, status, evidence, imm) + + # `probe_error` is the generator reporting itself broken: a diagnostic + # `_classify` does not recognise, or a probe module it built wrong. It is + # not a fact about the toolchain, so it must never be written -- and until + # now nothing stopped it. The artifact test forbids it in a committed + # column, which means the tool could produce a file its own gate rejects + # and the only thing between that and a commit was remembering to run the + # test. Refusing here moves the stop one step earlier, to the person who + # can still act on it. + # + # The fix is almost always to teach `_classify` a wording a new LLVM + # vintage introduced -- llvm23's "intrinsic not supported on subtarget" was + # twelve such cells -- so the evidence is printed rather than summarised. + stuck = [ + (k, a, results[k][a].get("evidence", "")) + for k in keys + for a in arches + if results[k][a]["status"] == STATUS_PROBE_ERROR + ] + if stuck: + print(f"\n== {len(stuck)} unclassified probe(s) survived the serial retry ==") + for key, arch, evidence in stuck[:20]: + print(f" {key:44s} {arch:14s} {evidence or '(no diagnostic)'}") + if len(stuck) > 20: + print(f" ... and {len(stuck) - 20} more") + print( + f"\nFAIL: nothing written. `{STATUS_PROBE_ERROR}` means this tool " + "did not understand the answer, not that the target cannot lower " + "the intrinsic; committing it would record our defect as the " + "toolchain's. Teach `_classify` the wording above, then re-run." + ) + return 1 + + doc = { + "schema": SCHEMA, + "_comment": ( + "GENERATED by tools/gen_arch_domain.py -- do not hand-edit. " + "Which intrinsic declarations link for which gfx target, measured " + "by compiling AND LINKING a probe module per (key, arch). Only the " + "flavor named in toolchain.flavor was measured; every other flavor " + "is unvalidated on this host by construction. See " + "dsl_docs/development/arch_axis_proposal.md." + ), + # Provenance. `clang` alone identifies the compiler but not how it was + # asked, and the two questions have different answers: the same + # toolchain build reports `ok` or hangs for the same key depending on + # the optimisation level the probe used. A column that does not carry + # these fields was written by generator 1 and cannot be trusted where + # it says `ok`. + "toolchain": { + "flavor": flavor, + "clang": identity, + "arches": arches, + "generator": GENERATOR, + "probe_cflags": list(PROBE_CFLAGS), + "probe_timeout_s": PROBE_TIMEOUT_S, + }, + "keys": results, + # What this LLVM resolved each surviving declare to. Mostly identical + # to the declared name; the interesting rows are the overloaded + # intrinsics that remangle (`ds.read.tr16.b64` -> `...b64.v4i16`) and + # the legacy ones AutoUpgrade rewrites, because both are places where + # what rocke emits and what the toolchain executes differ. + "canonical": {k: v for k, v in sorted(canonical.items()) if v}, + } + text = json.dumps(doc, indent=2, sort_keys=True) + "\n" + + counts: dict[str, int] = {} + for key in keys: + for arch in arches: + s = results[key][arch]["status"] + counts[s] = counts.get(s, 0) + 1 + print("\n " + " ".join(f"{s}={n}" for s, n in sorted(counts.items()))) + + out = args.out or default_out(flavor) + + if args.check: + if not out.is_file(): + # Not a failure. A host can only measure its own flavor, so a + # flavor nobody has blessed yet simply has no column to check -- + # failing here would red every CI machine running a newer ROCm. + print( + f"\nUNVALIDATED: no committed column for {flavor} " + f"({out.name}); nothing to check. Run without --check to add one." + ) + return 0 + committed = out.read_text() + if committed == text: + print(f"\nOK: {out.name} is up to date.") + return 0 + why = _drift(committed, text) + if why is None: + # Reproduced cell for cell by a different build of the same + # flavor. That is a pass, and a stronger one than a byte match: + # two independent compiler builds agreeing is evidence the column + # describes the flavor rather than one machine. See `_drift`. + print( + f"\nOK: {out.name} is up to date -- every cell reproduces " + "here; only the compiler build differs.\n" + f" blessed by: {json.loads(committed)['toolchain']['clang']}\n" + f" this host : {identity}" + ) + return 0 + print( + f"\nFAIL: {out} is stale -- regenerating changed it.\n" + f" {why}\n" + " Re-run without --check and commit the result." + ) + return 1 + + out.parent.mkdir(parents=True, exist_ok=True) + out.write_text(text) + print(f"\nwrote {out}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())