diff options
author | Francisco Jerez <[email protected]> | 2015-06-03 20:49:32 +0300 |
---|---|---|
committer | Francisco Jerez <[email protected]> | 2015-06-09 15:18:32 +0300 |
commit | 4af4cfba9ee1014baa4a777660fc9d53d57e4c82 (patch) | |
tree | 4032dd4b7469c6deb2f83740195a92ee96a94bf0 /src/mesa/drivers | |
parent | efa60e49f2e5dd56f1c81487e9aad9f89136d8b4 (diff) |
i965/fs: Migrate lower_integer_multiplication to the IR builder.
Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index ee7a5d50c06..e1b202b0637 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -3431,7 +3431,7 @@ fs_visitor::lower_integer_multiplication() inst->dst.type != BRW_REGISTER_TYPE_UD)) continue; -#define insert(instr) inst->insert_before(block, instr) + const fs_builder ibld = bld.at(block, inst); /* The MUL instruction isn't commutative. On Gen <= 6, only the low * 16-bits of src0 are read, and on Gen >= 7 only the low 16-bits of @@ -3445,10 +3445,10 @@ fs_visitor::lower_integer_multiplication() if (devinfo->gen < 7) { fs_reg imm(GRF, alloc.allocate(dispatch_width / 8), inst->dst.type, dispatch_width); - insert(MOV(imm, inst->src[1])); - insert(MUL(inst->dst, imm, inst->src[0])); + ibld.MOV(imm, inst->src[1]); + ibld.MUL(inst->dst, imm, inst->src[0]); } else { - insert(MUL(inst->dst, inst->src[0], inst->src[1])); + ibld.MUL(inst->dst, inst->src[0], inst->src[1]); } } else { /* Gen < 8 (and some Gen8+ low-power parts like Cherryview) cannot @@ -3519,8 +3519,8 @@ fs_visitor::lower_integer_multiplication() src1_1_w.stride = 2; src1_1_w.subreg_offset += type_sz(BRW_REGISTER_TYPE_UW); } - insert(MUL(low, inst->src[0], src1_0_w)); - insert(MUL(high, inst->src[0], src1_1_w)); + ibld.MUL(low, inst->src[0], src1_0_w); + ibld.MUL(high, inst->src[0], src1_1_w); } else { fs_reg src0_0_w = inst->src[0]; fs_reg src0_1_w = inst->src[0]; @@ -3532,8 +3532,8 @@ fs_visitor::lower_integer_multiplication() src0_1_w.stride = 2; src0_1_w.subreg_offset += type_sz(BRW_REGISTER_TYPE_UW); - insert(MUL(low, src0_0_w, inst->src[1])); - insert(MUL(high, src0_1_w, inst->src[1])); + ibld.MUL(low, src0_0_w, inst->src[1]); + ibld.MUL(high, src0_1_w, inst->src[1]); } fs_reg dst = inst->dst; @@ -3548,16 +3548,14 @@ fs_visitor::lower_integer_multiplication() low.subreg_offset = 2; low.stride = 2; - insert(ADD(dst, low, high)); + ibld.ADD(dst, low, high); if (inst->conditional_mod) { fs_reg null(retype(brw_null_reg(), inst->dst.type)); - fs_inst *mov = MOV(null, inst->dst); - mov->conditional_mod = inst->conditional_mod; - insert(mov); + set_condmod(inst->conditional_mod, + ibld.MOV(null, inst->dst)); } } -#undef insert inst->remove(block); progress = true; |