From: Matt Turner Date: Fri, 2 Aug 2013 17:28:16 +0000 (-0700) Subject: i965/vs: Add support for translating ir_triop_fma into MAD. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4929be0b5fad98f6f7303a07dd24e4cf6f417467;p=mesa.git i965/vs: Add support for translating ir_triop_fma into MAD. Reviewed-by: Paul Berry Reviewed-by: Ian Romanick --- diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h index 6be15fe3fb8..e9701629340 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.h +++ b/src/mesa/drivers/dri/i965/brw_vec4.h @@ -440,6 +440,7 @@ public: vec4_instruction *FBH(dst_reg dst, src_reg value); vec4_instruction *FBL(dst_reg dst, src_reg value); vec4_instruction *CBIT(dst_reg dst, src_reg value); + vec4_instruction *MAD(dst_reg dst, src_reg c, src_reg b, src_reg a); int implied_mrf_writes(vec4_instruction *inst); diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp index d0959b7333f..68e0cb96972 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp @@ -144,6 +144,7 @@ ALU3(BFI2) ALU1(FBH) ALU1(FBL) ALU1(CBIT) +ALU3(MAD) /** Gen4 predicated IF. */ vec4_instruction * @@ -1711,6 +1712,16 @@ vec4_visitor::visit(ir_expression *ir) assert(!"should have been lowered by vec_index_to_cond_assign"); break; + case ir_triop_fma: + op[0] = fix_3src_operand(op[0]); + op[1] = fix_3src_operand(op[1]); + op[2] = fix_3src_operand(op[2]); + /* Note that the instruction's argument order is reversed from GLSL + * and the IR. + */ + emit(MAD(result_dst, op[2], op[1], op[0])); + break; + case ir_triop_lrp: op[0] = fix_3src_operand(op[0]); op[1] = fix_3src_operand(op[1]);