asma: ... offizielle testfaelle rennen jetzt auch durch
authorBernhard Urban <lewurm@gmail.com>
Tue, 9 Mar 2010 16:47:32 +0000 (17:47 +0100)
committerBernhard Urban <lewurm@gmail.com>
Tue, 9 Mar 2010 16:47:33 +0000 (17:47 +0100)
gab probleme bei unaligned speicherzugriff

asma/asma.s
asma/main.c

index e8ef5086f2593e41f4b446665e7a80f824d7d9e5..d1202ced60a193c1466f7ae3035f0d99abff2a5a 100644 (file)
@@ -48,8 +48,9 @@ asma:
        //retuniere an die richtige speicheradresse
        mov %rdi, %rax
        //c += Y
-       paddb (%rax), %xmm8
-       movapd %xmm8, (%rax)
+       psubb const3f, %xmm11
+       paddb %xmm11, %xmm8
+       movdqu %xmm8, (%rax)
 
        ret
 .LFE2:
index 4db42e6557a8fdbad8e2de973c00acb002a4531a..a228147f4133c39147f5a69341ab6fa84e6bce5f 100644 (file)
@@ -22,12 +22,13 @@ int main(int argc, char **argv) {
        char *input2;
        char *input3;
        int i, j;
+       int off[] = {2,0,0,0};
 
        for(i = 0; i < 4; i++) {
                input2 = strdup(input1[i]);
                input3 = strdup(input1[i]);
-               output1 = (char *)asma_ref((unsigned char *)(input2));
-               output2 = (char *)asma((unsigned char *)(input3));
+               output1 = (char *)asma_ref((unsigned char *)(input2 + off[i]));
+               output2 = (char *)asma((unsigned char *)(input3 + off[i]));
 
                output1[16]='\0';
                output2[16]='\0';