intel/compiler: Initial bits for SRND instruction

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36529>
This commit is contained in:
Sushma Venkatesh Reddy
2025-07-29 21:06:16 +00:00
committed by Marge Bot
parent e2b0dee91f
commit 51f4a2572a
5 changed files with 19 additions and 0 deletions
+1
View File
@@ -641,6 +641,7 @@ static const struct opcode_desc opcode_descs[] = {
{ BRW_OPCODE_SUBB, 79, "subb", 2, 1, GFX_ALL },
{ BRW_OPCODE_ADD3, 82, "add3", 3, 1, GFX_GE(GFX125) },
{ BRW_OPCODE_DP4, 84, "dp4", 2, 1, GFX_LT(GFX11) },
{ BRW_OPCODE_SRND, 84, "srnd", 2, 1, GFX_GE(XE2) },
{ BRW_OPCODE_DPH, 85, "dph", 2, 1, GFX_LT(GFX11) },
{ BRW_OPCODE_DP3, 86, "dp3", 2, 1, GFX_LT(GFX11) },
{ BRW_OPCODE_DP2, 87, "dp2", 2, 1, GFX_LT(GFX11) },
+3
View File
@@ -1539,6 +1539,9 @@ brw_eu_inst *brw_DPAS(struct brw_codegen *p, enum gfx12_systolic_depth sdepth,
unsigned rcount, struct brw_reg dest, struct brw_reg src0,
struct brw_reg src1, struct brw_reg src2);
brw_eu_inst *brw_SRND(struct brw_codegen *p, struct brw_reg dest,
struct brw_reg src0, struct brw_reg src1);
void
brw_broadcast(struct brw_codegen *p,
struct brw_reg dst,
+1
View File
@@ -218,6 +218,7 @@ enum ENUM_PACKED opcode {
BRW_OPCODE_SUBB,
BRW_OPCODE_ADD3, /* Gen12+ only */
BRW_OPCODE_DP4,
BRW_OPCODE_SRND, /* Xe2+ only */
BRW_OPCODE_DPH,
BRW_OPCODE_DP3,
BRW_OPCODE_DP2,
+9
View File
@@ -1020,6 +1020,15 @@ brw_DPAS(struct brw_codegen *p, enum gfx12_systolic_depth sdepth,
src1, src2);
}
brw_eu_inst *
brw_SRND(struct brw_codegen *p, struct brw_reg dest,
struct brw_reg src0, struct brw_reg src1)
{
assert(dest.type == BRW_TYPE_HF);
assert(src0.type == BRW_TYPE_F);
return brw_alu2(p, BRW_OPCODE_SRND, dest, src0, src1);
}
void brw_NOP(struct brw_codegen *p)
{
brw_eu_inst *insn = next_insn(p, BRW_OPCODE_NOP);
+5
View File
@@ -922,6 +922,11 @@ brw_generator::generate_code(const brw_shader &s,
brw_DP4A(p, dst, src[0], src[1], src[2]);
break;
case BRW_OPCODE_SRND:
assert(devinfo->ver >= 20);
brw_SRND(p, dst, src[0], src[1]);
break;
case BRW_OPCODE_LINE:
brw_LINE(p, dst, src[0], src[1]);
break;