[Mesa-dev] [PATCH 2/2] intel/compiler: Use emit_emplace in the builders
Neil Roberts
bpeeluk at yahoo.co.uk
Fri Sep 22 15:09:40 UTC 2017
Replaces all calls of the form emit(instruction(…)) with
emit_emplace(…). This should avoid a redundant copy of the
stack-allocated temporary instruction. Although the temporary would
have been stack-allocated so it might not seem like a big deal, the
instructions do also have an internal allocation for the sources so we
also get to avoid an extra allocation.
I tested this with shader-db over four iterations and the average sum
of the time reported for all of the threads drops from 406 seconds to
366.
---
src/intel/compiler/brw_fs_builder.h | 32 ++++++++++++++++----------------
src/intel/compiler/brw_vec4_builder.h | 28 ++++++++++++++--------------
2 files changed, 30 insertions(+), 30 deletions(-)
diff --git a/src/intel/compiler/brw_fs_builder.h b/src/intel/compiler/brw_fs_builder.h
index 90d8285..9991dd7 100644
--- a/src/intel/compiler/brw_fs_builder.h
+++ b/src/intel/compiler/brw_fs_builder.h
@@ -275,7 +275,7 @@ namespace brw {
instruction *
emit(enum opcode opcode) const
{
- return emit(instruction(opcode, dispatch_width()));
+ return emit_emplace(opcode, dispatch_width());
}
/**
@@ -284,7 +284,7 @@ namespace brw {
instruction *
emit(enum opcode opcode, const dst_reg &dst) const
{
- return emit(instruction(opcode, dispatch_width(), dst));
+ return emit_emplace(opcode, dispatch_width(), dst);
}
/**
@@ -301,11 +301,11 @@ namespace brw {
case SHADER_OPCODE_LOG2:
case SHADER_OPCODE_SIN:
case SHADER_OPCODE_COS:
- return emit(instruction(opcode, dispatch_width(), dst,
- fix_math_operand(src0)));
+ return emit_emplace(opcode, dispatch_width(), dst,
+ fix_math_operand(src0));
default:
- return emit(instruction(opcode, dispatch_width(), dst, src0));
+ return emit_emplace(opcode, dispatch_width(), dst, src0);
}
}
@@ -320,12 +320,12 @@ namespace brw {
case SHADER_OPCODE_POW:
case SHADER_OPCODE_INT_QUOTIENT:
case SHADER_OPCODE_INT_REMAINDER:
- return emit(instruction(opcode, dispatch_width(), dst,
- fix_math_operand(src0),
- fix_math_operand(src1)));
+ return emit_emplace(opcode, dispatch_width(), dst,
+ fix_math_operand(src0),
+ fix_math_operand(src1));
default:
- return emit(instruction(opcode, dispatch_width(), dst, src0, src1));
+ return emit_emplace(opcode, dispatch_width(), dst, src0, src1);
}
}
@@ -342,14 +342,14 @@ namespace brw {
case BRW_OPCODE_BFI2:
case BRW_OPCODE_MAD:
case BRW_OPCODE_LRP:
- return emit(instruction(opcode, dispatch_width(), dst,
- fix_3src_operand(src0),
- fix_3src_operand(src1),
- fix_3src_operand(src2)));
+ return emit_emplace(opcode, dispatch_width(), dst,
+ fix_3src_operand(src0),
+ fix_3src_operand(src1),
+ fix_3src_operand(src2));
default:
- return emit(instruction(opcode, dispatch_width(), dst,
- src0, src1, src2));
+ return emit_emplace(opcode, dispatch_width(), dst,
+ src0, src1, src2);
}
}
@@ -361,7 +361,7 @@ namespace brw {
emit(enum opcode opcode, const dst_reg &dst, const src_reg srcs[],
unsigned n) const
{
- return emit(instruction(opcode, dispatch_width(), dst, srcs, n));
+ return emit_emplace(opcode, dispatch_width(), dst, srcs, n);
}
/**
diff --git a/src/intel/compiler/brw_vec4_builder.h b/src/intel/compiler/brw_vec4_builder.h
index 413b27c..d802990 100644
--- a/src/intel/compiler/brw_vec4_builder.h
+++ b/src/intel/compiler/brw_vec4_builder.h
@@ -240,7 +240,7 @@ namespace brw {
instruction *
emit(enum opcode opcode) const
{
- return emit(instruction(opcode));
+ return emit_emplace(opcode);
}
/**
@@ -249,7 +249,7 @@ namespace brw {
instruction *
emit(enum opcode opcode, const dst_reg &dst) const
{
- return emit(instruction(opcode, dst));
+ return emit_emplace(opcode, dst);
}
/**
@@ -267,11 +267,11 @@ namespace brw {
case SHADER_OPCODE_SIN:
case SHADER_OPCODE_COS:
return fix_math_instruction(
- emit(instruction(opcode, dst,
- fix_math_operand(src0))));
+ emit_emplace(opcode, dst,
+ fix_math_operand(src0)));
default:
- return emit(instruction(opcode, dst, src0));
+ return emit_emplace(opcode, dst, src0);
}
}
@@ -287,12 +287,12 @@ namespace brw {
case SHADER_OPCODE_INT_QUOTIENT:
case SHADER_OPCODE_INT_REMAINDER:
return fix_math_instruction(
- emit(instruction(opcode, dst,
- fix_math_operand(src0),
- fix_math_operand(src1))));
+ emit_emplace(opcode, dst,
+ fix_math_operand(src0),
+ fix_math_operand(src1)));
default:
- return emit(instruction(opcode, dst, src0, src1));
+ return emit_emplace(opcode, dst, src0, src1);
}
}
@@ -308,13 +308,13 @@ namespace brw {
case BRW_OPCODE_BFI2:
case BRW_OPCODE_MAD:
case BRW_OPCODE_LRP:
- return emit(instruction(opcode, dst,
- fix_3src_operand(src0),
- fix_3src_operand(src1),
- fix_3src_operand(src2)));
+ return emit_emplace(opcode, dst,
+ fix_3src_operand(src0),
+ fix_3src_operand(src1),
+ fix_3src_operand(src2));
default:
- return emit(instruction(opcode, dst, src0, src1, src2));
+ return emit_emplace(opcode, dst, src0, src1, src2);
}
}
--
2.9.5
.
More information about the mesa-dev
mailing list