2010-02-16 H.J. Lu <hongjiu.lu@intel.com>
+ * sysdeps/i386/i686/multiarch/memcmp-sse4.S: Add alignnments.
+ Fix one unwind info problem.
+
* sysdeps/i386/i686/multiarch/memcmp-ssse3.S (less1bytes): Add CFI_POP.
* sysdeps/i386/i686/multiarch/strcmp-sse4.S: Simplify unwind info.
add %ecx, %edx
add %ecx, %eax
BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %ecx, 4)
-L(less8bytes):
+ ALIGN (4)
+L(less8bytes):
mov (%eax), %bl
cmpb (%edx), %bl
jne L(nonzero)
POP (%ebx)
xor %eax, %eax
ret
- CFI_PUSH (%ebx)
ALIGN (4)
L(less1bytes):
add %ecx, %edx
add %ecx, %eax
BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %ecx, 4)
+
+ ALIGN (4)
L(find_16diff):
sub $16, %ecx
L(find_32diff):
add %ecx, %edx
add %ecx, %eax
jmp L(16bytes)
- ALIGN (4)
+ ALIGN (4)
L(16bytes):
mov -16(%eax), %ecx
mov -16(%edx), %ebx
jne L(end)
RETURN
-
+ ALIGN (4)
L(52bytes):
movdqu -52(%eax), %xmm1
movdqu -52(%edx), %xmm2
jne L(find_diff)
RETURN
+ ALIGN (4)
L(53bytes):
movdqu -53(%eax), %xmm1
movdqu -53(%edx), %xmm2
jne L(end)
RETURN
+ ALIGN (4)
L(54bytes):
movdqu -54(%eax), %xmm1
movdqu -54(%edx), %xmm2
jne L(end)
RETURN
+ ALIGN (4)
L(55bytes):
movdqu -55(%eax), %xmm1
movdqu -55(%edx), %xmm2
jne L(end)
RETURN
+ ALIGN (4)
L(56bytes):
movdqu -56(%eax), %xmm1
movdqu -56(%edx), %xmm2
jne L(find_diff)
RETURN
+ ALIGN (4)
L(57bytes):
movdqu -57(%eax), %xmm1
movdqu -57(%edx), %xmm2
jne L(end)
RETURN
+ ALIGN (4)
L(58bytes):
movdqu -58(%eax), %xmm1
movdqu -58(%edx), %xmm2
jne L(end)
RETURN
+ ALIGN (4)
L(59bytes):
movdqu -59(%eax), %xmm1
movdqu -59(%edx), %xmm2
jne L(end)
RETURN
+ ALIGN (4)
L(60bytes):
movdqu -60(%eax), %xmm1
movdqu -60(%edx), %xmm2
jne L(find_diff)
RETURN
+ ALIGN (4)
L(61bytes):
movdqu -61(%eax), %xmm1
movdqu -61(%edx), %xmm2
jne L(end)
RETURN
+ ALIGN (4)
L(62bytes):
movdqu -62(%eax), %xmm1
movdqu -62(%edx), %xmm2
jne L(end)
RETURN
+ ALIGN (4)
L(63bytes):
movdqu -63(%eax), %xmm1
movdqu -63(%edx), %xmm2
jne L(end)
RETURN
+ ALIGN (4)
L(64bytes):
movdqu -64(%eax), %xmm1
movdqu -64(%edx), %xmm2
jne L(find_diff)
RETURN
+ ALIGN (4)
L(less16bytes):
add %ebx, %eax
add %ebx, %edx
neg %eax
L(bigger):
ret
+END (MEMCMP)
+ .section .rodata.sse4.2,"a",@progbits
ALIGN (2)
+ .type L(table_64bytes), @object
L(table_64bytes):
.int JMPTBL (L(0bytes), L(table_64bytes))
.int JMPTBL (L(1bytes), L(table_64bytes))
.int JMPTBL (L(62bytes), L(table_64bytes))
.int JMPTBL (L(63bytes), L(table_64bytes))
.int JMPTBL (L(64bytes), L(table_64bytes))
-
-END (MEMCMP)
-
+ .size L(table_64bytes), .-L(table_64bytes)
#endif