Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/hlsl_codegen.c:
if (!(slt = hlsl_new_binary_expr(ctx, HLSL_OP2_SLT, zero, mul)))return false;hlsl_block_add_instr(block, slt);negate = (expr->op == HLSL_OP2_EQUAL);break;}case HLSL_OP2_GEQUAL:case HLSL_OP2_LESS:{if (!(slt = hlsl_new_binary_expr(ctx, HLSL_OP2_SLT, arg1_cast, arg2_cast)))return false;hlsl_block_add_instr(block, slt);negate = (expr->op == HLSL_OP2_GEQUAL);
I think that's fine too (reproducing the native code opcode by opcode has never been a target of our HLSL compiler), but it seems that SGE also exists and FXC is willing to emit it for `vs_3_0`: https://shader-playground.timjones.io/27b940d613fd9365f083b11bb18139bf, just in case at some point this turns out to be relevant (in theory `<` and `>=` are not exactly one the opposite of the other, because of NaNs, but SM1-3 mostly pretend NaNs do not exist).