Antoxyde / isd

Implementation of some information-set decoding algorithms
GNU General Public License v2.0
9 stars 3 forks source link

MR7 #7

Closed P1K closed 4 years ago

P1K commented 4 years ago

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é

Antoxyde commented 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.

P1K commented 4 years ago

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)

Antoxyde commented 4 years ago

Ah d'accord, effectivement je n'avait pas vraiment de bonne raison de prendre ma fenêtre sur les MSBs.