vkd3d-shader/hlsl: Write SM4 bitwise AND instructions.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2022-03-08 17:58:16 -06:00 committed by Alexandre Julliard
parent 5251ecff89
commit ccb3326516

View File

@ -1412,6 +1412,20 @@ static void write_sm4_sample(struct hlsl_ctx *ctx, struct vkd3d_bytecode_buffer
write_sm4_instruction(buffer, &instr); write_sm4_instruction(buffer, &instr);
} }
static bool type_is_integer(const struct hlsl_type *type)
{
switch (type->base_type)
{
case HLSL_TYPE_BOOL:
case HLSL_TYPE_INT:
case HLSL_TYPE_UINT:
return true;
default:
return false;
}
}
static bool type_is_float(const struct hlsl_type *type) static bool type_is_float(const struct hlsl_type *type)
{ {
return type->base_type == HLSL_TYPE_FLOAT || type->base_type == HLSL_TYPE_HALF; return type->base_type == HLSL_TYPE_FLOAT || type->base_type == HLSL_TYPE_HALF;
@ -1613,6 +1627,11 @@ static void write_sm4_expr(struct hlsl_ctx *ctx,
} }
break; break;
case HLSL_OP2_BIT_AND:
assert(type_is_integer(dst_type));
write_sm4_binary_op(buffer, VKD3D_SM4_OP_AND, &expr->node, arg1, arg2);
break;
case HLSL_OP2_DIV: case HLSL_OP2_DIV:
switch (dst_type->base_type) switch (dst_type->base_type)
{ {