--reset
--impl=ref # Intentionally test reference impl coverage
--check-ref-impl=

--match=.*conv_basic_2d.* # Use 2d problems only from shapes_basic
--mb=2
--alg=direct
--stag=any
--wtag=any
--dtag=any

# Training
## Forward
--dir=FWD_B
--dt=f32,bf16
--attr-post-ops=,linear:2:1,sum:1.5:2+relu
--batch=shapes_basic
## Backward
--dir=BWD_D,BWD_WB
--attr-post-ops=
--batch=shapes_basic

# Inference
--dir=FWD_I
--attr-post-ops=,linear:2:1

--dt=f16
--batch=shapes_basic

--dt=s8:s8:f32
--attr-zero-points=src:common:1
--attr-scales=src:common:0.25+wei:per_oc+dst:common:2
--batch=shapes_basic

--dt=u8:s8:s32
--attr-zero-points=
--attr-scales=src:common:0.25+wei:per_oc
--batch=shapes_basic

# fp8
--reset
--impl=ref # Intentionally test reference impl coverage
--match=.*conv_basic_2d.* # Use 2d problems only from shapes_basic
--dt=f8_e5m2,f8_e4m3
--mb=2,16
--dir=FWD_B
--attr-rounding-mode=dst:stochastic
--batch=shapes_basic

# mixed fp8
--reset
--impl=ref # Intentionally test reference impl coverage
--match=.*conv_basic_2d.* # Use 2d problems only from shapes_basic
--mb=1 --dt=f8_e5m2:f8_e5m2:bf16,f8_e4m3:f8_e4m3:bf16 --dir=fwd_d --batch=shapes_basic
--mb=1 --dt=f16:f8_e5m2:f8_e5m2,f32:f8_e4m3:f8_e4m3 --dir=bwd_d --batch=shapes_basic
--mb=1 --dt=f8_e5m2:f16:f8_e5m2,f8_e4m3:f32:f8_e4m3 --dir=bwd_w --batch=shapes_basic
--mb=1 --dt=f8_e5m2,f8_e4m3 --dir=fwd_d
--attr-scales=wei:per_oc:bf16+dst:per_oc:bf16,\
                      wei:common:2:bf16+src:common:2:bf16+dst:common:2:bf16,\
                      wei:per_oc:f32+dst:per_oc:f32,\
                      wei:common:2:f32+src:common:2:f32+dst:common:2:f32
--batch=shapes_ci_gpu


# strided conv
--reset
--impl=ref # Intentionally test reference impl coverage
--match=.*conv_basic_2d.* # Use 2d problems only from shapes_basic
--dt=u8:s8:u8,f16,f32
--mb=1,16
--dir=FWD_B,BWD_D
--batch=shapes_mem_strided

--reset
--impl=ref # Intentionally test reference impl coverage
--dt=bf16,f32
--mb=1,16
--dir=BWD_WB
--batch=shapes_mem_strided
