diff --git a/src/freedreno/ir3/ir3_parser.y b/src/freedreno/ir3/ir3_parser.y index 6ef32f683a2..d7cc42b2189 100644 --- a/src/freedreno/ir3/ir3_parser.y +++ b/src/freedreno/ir3/ir3_parser.y @@ -953,6 +953,10 @@ cat6_atomic_l: cat6_atomic_opc cat6_typed cat6_dim cat6_type '.' cat6_immed cat6_atomic: cat6_atomic_g | cat6_atomic_l +cat6_ibo_opc_1src: T_OP_RESINFO { new_instr(OPC_RESINFO)->cat6.type = TYPE_U32; } + +cat6_ibo: cat6_ibo_opc_1src cat6_dim dst_reg ',' 'g' '[' cat6_reg_or_immed ']' + cat6_id_opc: T_OP_GETSPID { new_instr(OPC_GETSPID); } | T_OP_GETWID { new_instr(OPC_GETWID); } @@ -1009,6 +1013,7 @@ cat6_instr: cat6_load | cat6_storeib | cat6_prefetch | cat6_atomic +| cat6_ibo | cat6_id | cat6_bindless_ldc | cat6_bindless_ibo diff --git a/src/freedreno/ir3/tests/disasm.c b/src/freedreno/ir3/tests/disasm.c index 5cbc8cdcdd9..5f017887336 100644 --- a/src/freedreno/ir3/tests/disasm.c +++ b/src/freedreno/ir3/tests/disasm.c @@ -172,12 +172,21 @@ static const struct test { INSTR_6XX(c0260000_0063c000, "resinfo.b.untyped.1d.u32.1.imm r0.x, 0"), /* resinfo.u32.1d.mode0.base0 r0.x, 0 */ /* dEQP-VK.image.image_size.2d.readonly_12x34.txt */ INSTR_6XX(c0260000_0063c300, "resinfo.b.untyped.2d.u32.1.imm.base0 r0.x, 0"), /* resinfo.u32.2d.mode4.base0 r0.x, 0 */ - /* dEQP-GLES31.functional.image_load_store.buffer.image_size.readonly_writeonly_7 */ - INSTR_5XX(c3e60000_00000e00, "resinfo.4d r0.x, g[0]"), /* resinfo.u32.1dtype r0.x, 0 */ + /* dEQP-GLES31.functional.image_load_store.2d.image_size.readonly_writeonly_32x32.txt */ INSTR_5XX(c3e60000_00000200, "resinfo.2d r0.x, g[0]"), /* resinfo.u32.2d r0.x, 0 */ +#if 0 + /* TODO our encoding differs in b11 ('typed'), which seems to be a dontcare bit */ + /* dEQP-GLES31.functional.image_load_store.buffer.image_size.readonly_writeonly_7 */ + INSTR_5XX(c3e60000_00000e00, "resinfo.4d r0.x, g[0]"), /* resinfo.u32.1dtype r0.x, 0 */ /* dEQP-GLES31.functional.image_load_store.3d.image_size.readonly_writeonly_12x34x56 */ INSTR_5XX(c3e60000_00000c00, "resinfo.3d r0.x, g[0]"), /* resinfo.u32.3d r0.x, 0 */ +#else + /* dEQP-GLES31.functional.image_load_store.buffer.image_size.readonly_writeonly_7 */ + INSTR_5XX(c3e60000_00000600, "resinfo.4d r0.x, g[0]"), /* resinfo.u32.1dtype r0.x, 0 */ + /* dEQP-GLES31.functional.image_load_store.2d.image_size.readonly_writeonly_32x32.txt */ + INSTR_5XX(c3e60000_00000400, "resinfo.3d r0.x, g[0]"), /* resinfo.u32.3d r0.x, 0 */ +#endif /* ldgb */ /* dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_vec4 */