Matteo Bruni (@Mystral) commented about dlls/dsound/mixer.c:
+ * invert it on every iteration of the outer loop. */ + "not " IPOS_NUM_REG "\n\t" + "mov " IPOS_NUM_STEP_ARG ", " IPOS_NUM_STEP_REG "\n\t" + + "movss " REM_INV_ARG ", " REM_INV_REG "\n\t" + "shufps $0, " REM_INV_REG ", " REM_INV_REG "\n\t" + "movss " REM_INV_STEP_ARG ", " REM_INV_STEP_REG "\n\t" + "shufps $0, " REM_INV_STEP_REG ", " REM_INV_STEP_REG "\n\t" + + /* Combine the upper half of ipos_num and the input pointer into a + * single value. */ + "mov " INPUT_ARG ", " INPUT_REG "\n\t" + /* Divide the input pointer by 4 to match the scale. We can do this + * because the pointer is at least 4-byte aligned. It will be scaled + * back during the access in the inner loop. */ + "shr $2, " INPUT_REG "\n\t" "Scale" in the sense of `sizeof(float)` I gather?
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/10716#note_137933