From a853f464a991bf404ea781172a24eb8c2748b197 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Tue, 2 Mar 2010 16:27:47 +0100 Subject: [PATCH] asma: use >=%xmm8 register --- asma/asma.s | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/asma/asma.s b/asma/asma.s index 4881e0b..2710172 100644 --- a/asma/asma.s +++ b/asma/asma.s @@ -4,48 +4,48 @@ .type asma, @function asma: .LFB2: - /*init %xmm1 mit "'Z' + 1 + min_t - 'A'" fuer jedes byte + /*init %xmm8 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, %xmm7 - movddup %xmm7, %xmm1 + movq %rbx, %xmm15 + movddup %xmm15, %xmm8 - //init %xmm2 mit "'a'-'A'= 97-65 = 32 = 0x20 + //init %xmm9 mit "'a'-'A'= 97-65 = 32 = 0x20 mov $0x2020202020202020, %rbx - movq %rbx, %xmm7 - movddup %xmm7, %xmm2 + movq %rbx, %xmm15 + movddup %xmm15, %xmm9 //speicheradresse des pointers zeigt auf 16*8 feld = 128bit - movdqu (%rdi), %xmm4 - movdqu (%rdi), %xmm5 + movdqu (%rdi), %xmm11 + movdqu (%rdi), %xmm12 - /*addiere in %xmm4 "min_t-'A'" + /*addiere in %xmm11 "min_t-'A'" * = -128 - 65 = 63 = 0x3f */ mov $0x3f3f3f3f3f3f3f3f, %rbx - movq %rbx, %xmm7 - movddup %xmm7, %xmm3 + movq %rbx, %xmm15 + movddup %xmm15, %xmm10 //c+min_t-'A' - paddb %xmm3, %xmm4 + paddb %xmm10, %xmm11 /*"Packed COMpare Greater Than (Byte)" * X = 'Z' + 1 + min_t - 'A' > c + min_t - 'A' ? 0xff : 0 * achtung beim intuitiven lesen des befehles. 'kleiner' * ist mit 'groesser' vertauscht und vice versa */ - pcmpgtb %xmm4, %xmm1 + pcmpgtb %xmm11, %xmm8 //Y = min(X, 'a' - 'A') - pminub %xmm2, %xmm1 + pminub %xmm9, %xmm8 //c += Y - paddb %xmm1, %xmm5 + paddb %xmm8, %xmm12 //retuniere an die richtige speicheradresse mov %rdi, %rax - movapd %xmm5, (%rax) + movapd %xmm12, (%rax) ret .LFE2: .size asma, .-asma -- 2.25.1