//hint: in %xmm15 ist differenz gespeichert (vgl .differenz)
//leider shiften nur mit immediate! :(
- cmp $8, %r11d
- jc .rechtsshift1
+ btr $3, %r11d
+ jnc .rechtsshift1
psrldq $8, %xmm15
- sub $8, %r11d
.rechtsshift1:
- cmp $4, %r11d
- jc .rechtsshift2
+ btr $2, %r11d
+ jnc .rechtsshift2
psrldq $4, %xmm15
- sub $4, %r11d
.rechtsshift2:
- cmp $2, %r11d
- jc .rechtsshift3
+ btr $1, %r11d
+ jnc .rechtsshift3
psrldq $2, %xmm15
- sub $2, %r11d
.rechtsshift3:
- cmp $1, %r11d
- jc .linksshift
+ btr $0, %r11d
+ jnc .linksshift
psrldq $1, %xmm15
- sub $1, %r11d
#==================
.linksshift:
- cmp $8, %ecx
- jc .linksshift1
+ btr $3, %ecx
+ jnc .linksshift1
pslldq $8, %xmm15
- sub $8, %ecx
.linksshift1:
- cmp $4, %ecx
- jc .linksshift2
+ btr $2, %ecx
+ jnc .linksshift2
pslldq $4, %xmm15
- sub $4, %ecx
.linksshift2:
- cmp $2, %ecx
- jc .linksshift3
+ btr $1, %ecx
+ jnc .linksshift3
pslldq $2, %xmm15
- sub $2, %ecx
.linksshift3:
- cmp $1, %ecx
- jc .endshift
+ btr $0, %ecx
+ jnc .endshift
pslldq $1, %xmm15
- sub $1, %ecx
.endshift:
//betreffende speicherstelle in %xmm11 laden