From bfaa80c3164ae757ef8541f00d30f8300dda5ae0 Mon Sep 17 00:00:00 2001 From: Xianyi Date: Fri, 18 Feb 2011 03:00:58 +0800 Subject: [PATCH] fixed #4 csrot & drot returned the wrong result when incx==incy==0 on i686 arch. --- kernel/x86/rot_sse2.S | 4 ++++ kernel/x86/zrot_sse.S | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/kernel/x86/rot_sse2.S b/kernel/x86/rot_sse2.S index 8ec1d44bb..e9c5ba1ef 100644 --- a/kernel/x86/rot_sse2.S +++ b/kernel/x86/rot_sse2.S @@ -859,6 +859,10 @@ .L50: movl N, I + cmpl $0, INCX + je .L56 + cmpl $0, INCY + je .L56 sarl $2, I jle .L55 ALIGN_3 diff --git a/kernel/x86/zrot_sse.S b/kernel/x86/zrot_sse.S index d8d01009e..d10183f73 100644 --- a/kernel/x86/zrot_sse.S +++ b/kernel/x86/zrot_sse.S @@ -1285,6 +1285,12 @@ .L50: movl N, I +//if incx ==0 || incy==0 jump to the tail + cmpl $0, INCX + je .L56 + cmpl $0, INCY + je .L56 + sarl $2, I jle .L55 ALIGN_3