vkd3d-shader/msl: Implement VSIR_OP_COUNTBITS.

This commit is contained in:
Henri Verbeet
2025-10-17 09:01:33 +02:00
parent f431cddc9f
commit 08026880d6
Notes: Henri Verbeet 2025-11-04 15:55:42 +01:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1808
2 changed files with 4 additions and 1 deletions

View File

@@ -1444,6 +1444,9 @@ static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d
case VSIR_OP_COS: case VSIR_OP_COS:
msl_intrinsic(gen, ins, "cos"); msl_intrinsic(gen, ins, "cos");
break; break;
case VSIR_OP_COUNTBITS:
msl_intrinsic(gen, ins, "popcount");
break;
case VSIR_OP_DCL_INDEXABLE_TEMP: case VSIR_OP_DCL_INDEXABLE_TEMP:
msl_dcl_indexable_temp(gen, ins); msl_dcl_indexable_temp(gen, ins);
break; break;

View File

@@ -8,7 +8,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 uint4 0 0xffffffff 0xcccccccc 0x31415926 uniform 0 uint4 0 0xffffffff 0xcccccccc 0x31415926
todo(sm<4 | msl & sm>=6) draw quad todo(sm<4) draw quad
if(sm>=4) probe (0, 0) f32(0, 32, 16, 12) if(sm>=4) probe (0, 0) f32(0, 32, 16, 12)
if(sm<4) probe (0, 0) f32(0, 0, 0, 0) if(sm<4) probe (0, 0) f32(0, 0, 0, 0)