From: Samuel Iglesias Gonsálvez Date: Wed, 14 Mar 2018 07:49:43 +0000 (+0100) Subject: spirv: update arguments for vtn_nir_alu_op_for_spirv_opcode() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=adf58e59d3d2639ee214087f94bf7a079f8cd9a8;p=mesa.git spirv: update arguments for vtn_nir_alu_op_for_spirv_opcode() We don't need anymore the source and destination's data type, just their bitsize. v2: - Use glsl_get_bit_size () instead (Jason). Signed-off-by: Samuel Iglesias Gonsálvez Reviewed-by: Jason Ekstrand --- diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index 42a559122a6..df01f4ff4a3 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -1725,8 +1725,8 @@ vtn_handle_constant(struct vtn_builder *b, SpvOp opcode, }; nir_op op = vtn_nir_alu_op_for_spirv_opcode(b, opcode, &swap, - src_alu_type, - dst_alu_type); + nir_alu_type_get_type_size(src_alu_type), + nir_alu_type_get_type_size(dst_alu_type)); nir_const_value src[4]; for (unsigned i = 0; i < count - 4; i++) { diff --git a/src/compiler/spirv/vtn_alu.c b/src/compiler/spirv/vtn_alu.c index f57a2332d7d..01be397e271 100644 --- a/src/compiler/spirv/vtn_alu.c +++ b/src/compiler/spirv/vtn_alu.c @@ -275,7 +275,7 @@ vtn_handle_bitcast(struct vtn_builder *b, struct vtn_ssa_value *dest, nir_op vtn_nir_alu_op_for_spirv_opcode(struct vtn_builder *b, SpvOp opcode, bool *swap, - nir_alu_type src, nir_alu_type dst) + unsigned src_bit_size, unsigned dst_bit_size) { /* Indicates that the first two arguments should be swapped. This is * used for implementing greater-than and less-than-or-equal. @@ -388,8 +388,8 @@ vtn_nir_alu_op_for_spirv_opcode(struct vtn_builder *b, default: unreachable("Invalid opcode"); } - src_type |= nir_alu_type_get_type_size(src); - dst_type |= nir_alu_type_get_type_size(dst); + src_type |= src_bit_size; + dst_type |= dst_bit_size; return nir_type_conversion_op(src_type, dst_type, nir_rounding_mode_undef); } /* Derivatives: */ @@ -575,10 +575,10 @@ vtn_handle_alu(struct vtn_builder *b, SpvOp opcode, case SpvOpFUnordLessThanEqual: case SpvOpFUnordGreaterThanEqual: { bool swap; - nir_alu_type src_alu_type = nir_get_nir_type_for_glsl_type(vtn_src[0]->type); - nir_alu_type dst_alu_type = nir_get_nir_type_for_glsl_type(type); + unsigned src_bit_size = glsl_get_bit_size(vtn_src[0]->type); + unsigned dst_bit_size = glsl_get_bit_size(type); nir_op op = vtn_nir_alu_op_for_spirv_opcode(b, opcode, &swap, - src_alu_type, dst_alu_type); + src_bit_size, dst_bit_size); if (swap) { nir_ssa_def *tmp = src[0]; @@ -602,10 +602,10 @@ vtn_handle_alu(struct vtn_builder *b, SpvOp opcode, case SpvOpFOrdLessThanEqual: case SpvOpFOrdGreaterThanEqual: { bool swap; - nir_alu_type src_alu_type = nir_get_nir_type_for_glsl_type(vtn_src[0]->type); - nir_alu_type dst_alu_type = nir_get_nir_type_for_glsl_type(type); + unsigned src_bit_size = glsl_get_bit_size(vtn_src[0]->type); + unsigned dst_bit_size = glsl_get_bit_size(type); nir_op op = vtn_nir_alu_op_for_spirv_opcode(b, opcode, &swap, - src_alu_type, dst_alu_type); + src_bit_size, dst_bit_size); if (swap) { nir_ssa_def *tmp = src[0]; @@ -640,10 +640,10 @@ vtn_handle_alu(struct vtn_builder *b, SpvOp opcode, default: { bool swap; - nir_alu_type src_alu_type = nir_get_nir_type_for_glsl_type(vtn_src[0]->type); - nir_alu_type dst_alu_type = nir_get_nir_type_for_glsl_type(type); + unsigned src_bit_size = glsl_get_bit_size(vtn_src[0]->type); + unsigned dst_bit_size = glsl_get_bit_size(type); nir_op op = vtn_nir_alu_op_for_spirv_opcode(b, opcode, &swap, - src_alu_type, dst_alu_type); + src_bit_size, dst_bit_size); if (swap) { nir_ssa_def *tmp = src[0]; diff --git a/src/compiler/spirv/vtn_private.h b/src/compiler/spirv/vtn_private.h index a8fa612384f..70f660fbd48 100644 --- a/src/compiler/spirv/vtn_private.h +++ b/src/compiler/spirv/vtn_private.h @@ -708,7 +708,7 @@ void vtn_foreach_execution_mode(struct vtn_builder *b, struct vtn_value *value, nir_op vtn_nir_alu_op_for_spirv_opcode(struct vtn_builder *b, SpvOp opcode, bool *swap, - nir_alu_type src, nir_alu_type dst); + unsigned src_bit_size, unsigned dst_bit_size); void vtn_handle_alu(struct vtn_builder *b, SpvOp opcode, const uint32_t *w, unsigned count);