Closed P1K closed 4 years ago
Je suis pas sûr de voir comment faire ca avec un and et un masque ? Tu veux dire xorer d'abord puis sélectionner les bits qu'on veut ensuite ?
De toute manière, comme j'ai décalé le calcul de row1 au dessus, je ne suis pas sur que cela soit encore possible.
Si tu prends ta fenêtre sur les bits de poids faible (ce qui est pas pire), tu peux faire :
sigmask = 0xFFFFF; // par exemple
...
delta = (row1 ^ row2) & sigmask;
C'est compatible avec le fait de précharcher row1
dans un registre
(BTW par la suite si jamais on généralise à plusieurs fenêtres, le mieux est sans doute de prendre de la même façon les bits de poids faibles d'autres mots, plutôt que de les prendre contigües)
Ah d'accord, effectivement je n'avait pas vraiment de bonne raison de prendre ma fenêtre sur les MSBs.
https://github.com/Antoxyde/isd/blob/323c223f696c5916cb006f6697cca0731866819e/stern_sort.c#L145
Tu peux faire pareil avec un unique xor et un unique and avec un masque précalculé