wobei min_t der minimale Wert des Datentyps ist, den der Vergleich behandelt (bei pcmpgtb also -128). Zusätzlich zu dem oben genannten dürften die Befehle pminub, paddb, und psubb nützlich sein. */
pxor %xmm1, %xmm1
pxor %xmm2, %xmm2
+ pxor %xmm2, %xmm3
+ pxor %xmm2, %xmm4
+ pxor %xmm2, %xmm5
- #init %xmm2 mit "'Z' + 1" fuer jedes byte
- mov $0x5a5a5a5a5a5a5a5a, %rbx
+ #init %xmm2 mit "'Z' + 1 + min_t - 'A'" fuer jedes byte
+ #'Z' + 1 + min_t - 'A' = 90 + 1 - 128 - 65 = -102
+ #102 = 01100110
+ #~102 = 10011001
+ #(~102)+1 = 10011010 = 0x9A
+ mov $0x9a9a9a9a9a9a9a9a, %rbx
movq %rbx, %xmm2
pslldq $8, %xmm2
movq %rbx, %xmm2
movdqu (%rdi), %xmm1
movdqu (%rdi), %xmm3
+ #addiere in %xmm1 "min_t-'A'"
+ # = -128 - 65 = 63 = 0x3f
+ mov $0x3f3f3f3f3f3f3f3f, %rbx
+ movq %rbx, %xmm5
+ pslldq $8, %xmm5
+ movq %rbx, %xmm5
+
+ paddb %xmm5, %xmm1
+
#"Packed COMpare Greater Than (Byte)"
pcmpgtb %xmm2, %xmm1