# Runtime M dimension and binary post-ops with per_oc broadcast.
--reset --dt=bf16,bf16:bf16:f32 --stag=ab --wtag=ab --dtag=ab --runtime_dims_masks=1:0 --attr-post-ops=add:bf16:per_oc,add:f32:per_oc 10x1:1x20_n"runtime_m_and_binary_po"
# Small shape with binary po and mask 13 broadcast.
--reset --dt=bf16 --stag=abcd --wtag=abcd --dtag=abcd --attr-post-ops=add:bf16:13:abcd 2x2x32x16:2x2x16x64_n"small_shape_with_binary_po_and_mask_13"
# Binary post-op with mask 6 to test broadcasting strategy per_oc_d for non-f32.
--reset --dt=bf16:bf16:f32 --stag=abcd --wtag=abdc --dtag=abcd --attr-post-ops=binary_sub:f32:6 1x16x384x64:1x16x64x384_n"binary_po_and_mask_6_and_bf16"
# xf16 binary post-op per-OC broadcasts must not read past the scalar RHS on N tails.
--reset --dt=f16 --attr-post-ops=max:bf16:per_oc 1x8x2:1x2x5_n"xf16_per_oc_bf16_n_tail"
--reset --dt=f16 --attr-post-ops=max:f16:per_oc 1x8x2:1x2x5_n"xf16_per_oc_f16_n_tail"
# Shape to reach parallel reduction.
--reset --dt=bf16:bf16:bf16 2x1280:1280x65_n"parallel_reduction"
# Shape to better test k tail.
--reset --dt=bf16:bf16:bf16 --stag=ab --wtag=ab --dtag=ab 8x2664:2664x256_n"k_tail"
# Test that cases when M == 1 are handled correctly.
--reset --dt=bf16 --stag=ba,ab --wtag=ab --dtag=ab 1x2:2x256
# 4D matrix A with acbd-like layout (second dimension = 1) crash.
--reset --dt=bf16:bf16:bf16 --stag=abcd,acbd --wtag=abdc --dtag=abcd 6x1x100x256:1x1x256x9_n"4d_matrix_a_acbd_layout"
# Test LDA initialization when the batch dimension are merged into M.
--reset --dt=bf16 --stag=abdc --wtag=abcd --dtag=abcd 64x4x1x256:1x1x256x32_n"merge_batch_dimensions_into_M"
--reset --dt=f32 --stag=ab,ba --wtag=ba --dtag=AB16b16a 11x13:13x16_n"zeropad_blocked_dtag"
--reset --dt=f32 --stag=ba --wtag=ab --dtag=ab 13x262144:262144x1_n"long_acc_chain"
# repeated sum with varying scale
--reset --attr-post-ops=sum+relu+sum:2 64x64:64x64_n"multisum"
# small shape with binary po and mask of 13 broadcast
--reset --dt=f32 --stag=abcd --wtag=abcd --dtag=abcd --attr-post-ops=add:f32:13:abcd 2x2x32x16:2x2x16x64_n"small_shape_with_binary_po_and_mask_13"
# test for K parallel_reduction with batched case
--reset --stag=acb --wtag=abc --dtag=abc 2x16x2048:2x2048x16_n"large_K_with_batch"
# test special tag that can be matched with adbc
--reset --stag=dabc --wtag=abx --dtag=abx 1x2x2x32:2x2x32x7
# test dst strides
--reset --strides=16x1::16x1 3x1:1x1_n"non_unit_dims_with_strides"
--reset --dt=f32 --attr-post-ops=add:f32:12 2x16x49x32:2x16x32x49_n"per_hw_binary_po"
# test a degenerate gemv case when K=1
--reset --stag=ab --wtag=ba --dtag=ab 1x1:1x200
# test gemv with sum post-op
--reset --dt=f32 --stag=ab --wtag=ba --dtag=ab --attr-post-ops=sum 1x3808:3808x246_n"gemv_with_sum_po"
# test shapes with b_buffer
--reset --dt=f16:f16:f16 --stag=ab --wtag=ba --dtag=ab --bia-dt=f16 327x256:256x256
# Test that cases when M == 1 are handled correctly.
--reset --dt=f16 --stag=ba,ab --wtag=ab --dtag=ab 1x2:2x256
# Binary post-op with explicit 2D format tag and transposed dst (swap_ab path)
--reset --dt=f16:f16:f16 --stag=ab,ba --wtag=ab,ba --dtag=ba --allow-enum-tags-only=0 --attr-post-ops=linear:1.2+add:f16:3:ab+linear:1,linear:1.2+add:f16:3:ba+linear:1 10x50:50x25
# Preserve f16 dst after input upconversion to f32
--reset --dt=f16:f16:f16 --stag=abcd --wtag=abcd --dtag=abcd --skip-impl=ref --strides=:: --attr-post-ops=sqrt 1x2x32x120:1x1x120x5
# Incorrect scratchpad allocation
--reset --dt=s8:s8:s8 97x2053:2053x997n"test_scratchpad_allocation_for_non_batched_case"
# batch size smaller than num_threads
--reset --dt=u8:s8:s32 --stag=abc --wtag=abc --bia-dt=f32 --bia_mask=4 2x20x30:2x30x4
--reset --dt=u8:s8:s32 --stag=abc --wtag=abc --bia-dt=f32 --bia_mask=4 2x20x30:1x30x4
# verify assertions
--reset --dt=s8:s8:s32,u8:s8:s32 --attr-zero-points=,src:common:1,wei:common:2,src:common:1+wei:common:2 1x1:1x1
--reset --dt=s8:s8:s32,u8:s8:s32 --stag=ab,ba --wtag=ab,ba --dtag=ab --attr-zero-points=src:common:1+wei:common:2 2x2:2x2
# verify zero-padding for blocked format tags
--reset --dt=s8:s8:s8 --stag=ab,ba --wtag=ba --dtag=AB16b16a 11x13:13x16
# verify transpose dst tag can be treated as plain
--reset --dt=s8:s8:f32 --stag=ab --wtag=ab --dtag=ba,ab 1x1:1x200
# Test that cases when M == 1 are handled correctly.
--reset --dt=s8:s8:f32 --stag=ba,ab --wtag=ab --dtag=ab 1x2:2x256
# s8 weights decompression with with s8 src
--reset --dt=s8:s8:f32 --stag=ab --dtag=ab --wtag=ab --attr-scales=wei:common:1.25:f32 --attr-zero-points=wei:common:2:s8 8x8:8x8
# dst scales + eltwise post-op injection
--reset --dt=s8:s8:f32 --stag=ab --wtag=ab --dtag=ab --attr-scales=dst:common:1 --attr-post-ops=gelu_erf 8x8:8x8
--reset --dt=f32:s4:f32 --stag=ab --wtag=ab --dtag=ba --attr-fpmath=strict:true 2x2:2x2_n"woq_with_transposed_dst"
--reset --dt=s8:u8:f16 --attr-scales=src:common:2:f16+wei:per_oc 3x6x1x2x4:1x6x7x4x1_n"non-f32_src_scale"
# int4 weights + dynamic quant with N=1: must not swap A/B into an unsupported swapped kernel (must dispatch to jit)
--reset --dt=s8:u4:f16 --stag=ab --wtag=ba --dtag=ab --attr-scales=wei:per_ocic:f16:64x1 --attr-zero-points=wei:per_ocic:u8:64x1 16x64:64x1
# wei scale mask with only batch bits set (no per-K/per-N bits)
--reset --dt=f32,bf16,f16,f8_e4m3,f8_e5m2 --stag=abcd --wtag=abcd --dtag=abcd --attr-scales=wei:3 2x16x128x128:2x16x128x64_n"wei_scale_pure_batch_mask"
# wei zero-point mask combining batch + per-K bits but no per-N bit
--reset --dt=u8:s8:f32 --stag=abc --wtag=abc --dtag=abc --attr-scales=wei:common:1.25:f32 --attr-zero-points=wei:3:s8:64x1 2x16x128:2x128x64_n"wei_zp_batch_and_per_k_mask"

