Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com> --- src/glsl/nir/glsl_to_nir.cpp | 39 +++++++++++++-------------------------- 1 file changed, 13 insertions(+), 26 deletions(-)
diff --git a/src/glsl/nir/glsl_to_nir.cpp b/src/glsl/nir/glsl_to_nir.cpp index 7a20e1a..1267475 100644 --- a/src/glsl/nir/glsl_to_nir.cpp +++ b/src/glsl/nir/glsl_to_nir.cpp @@ -867,6 +867,11 @@ nir_visitor::emit(nir_op op, unsigned dest_size, nir_src src1, return emit(op, dest_size, srcs); } +#define OP_FLT_INT(type, suffix) \ + (type) == GLSL_TYPE_HALF ? nir_op_h ## suffix : \ + (type) == GLSL_TYPE_FLOAT ? nir_op_f ## suffix : \ + nir_op_i ## suffix + void nir_visitor::visit(ir_expression *ir) { @@ -1020,20 +1025,17 @@ nir_visitor::visit(ir_expression *ir) emit(supports_ints ? nir_op_inot : nir_op_fnot, dest_size, srcs); break; case ir_unop_neg: - instr = emit(types[0] == GLSL_TYPE_FLOAT ? nir_op_fneg : nir_op_ineg, - dest_size, srcs); + instr = emit(OP_FLT_INT(types[0], neg), dest_size, srcs); break; case ir_unop_abs: - instr = emit(types[0] == GLSL_TYPE_FLOAT ? nir_op_fabs : nir_op_iabs, - dest_size, srcs); + instr = emit(OP_FLT_INT(types[0], abs), dest_size, srcs); break; case ir_unop_saturate: assert(types[0] == GLSL_TYPE_FLOAT); instr = emit(nir_op_fsat, dest_size, srcs); break; case ir_unop_sign: - emit(types[0] == GLSL_TYPE_FLOAT ? nir_op_fsign : nir_op_isign, - dest_size, srcs); + instr = emit(OP_FLT_INT(types[0], sign), dest_size, srcs); break; case ir_unop_rcp: emit(nir_op_frcp, dest_size, srcs); break; case ir_unop_rsq: emit(nir_op_frsq, dest_size, srcs); break; @@ -1214,22 +1216,13 @@ nir_visitor::visit(ir_expression *ir) case ir_binop_rshift: switch (ir->operation) { case ir_binop_add: - if (out_type == GLSL_TYPE_FLOAT) - op = nir_op_fadd; - else - op = nir_op_iadd; + op = OP_FLT_INT(out_type, add); break; case ir_binop_sub: - if (out_type == GLSL_TYPE_FLOAT) - op = nir_op_fsub; - else - op = nir_op_isub; + op = OP_FLT_INT(out_type, sub); break; case ir_binop_mul: - if (out_type == GLSL_TYPE_FLOAT) - op = nir_op_fmul; - else - op = nir_op_imul; + op = OP_FLT_INT(out_type, mul); break; case ir_binop_div: if (out_type == GLSL_TYPE_FLOAT) @@ -1380,20 +1373,14 @@ nir_visitor::visit(ir_expression *ir) break; case ir_binop_equal: if (supports_ints) { - if (types[0] == GLSL_TYPE_FLOAT) - emit(nir_op_feq, dest_size, srcs); - else - emit(nir_op_ieq, dest_size, srcs); + instr = emit(OP_FLT_INT(types[0], eq), dest_size, srcs); } else { emit(nir_op_seq, dest_size, srcs); } break; case ir_binop_nequal: if (supports_ints) { - if (types[0] == GLSL_TYPE_FLOAT) - emit(nir_op_fne, dest_size, srcs); - else - emit(nir_op_ine, dest_size, srcs); + instr = emit(OP_FLT_INT(types[0], ne), dest_size, srcs); } else { emit(nir_op_sne, dest_size, srcs); } -- 1.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev