From 9feb4c23d2e36f3d8b5417a3802c69f94b29f749 Mon Sep 17 00:00:00 2001 From: "Field G. Van Zee" Date: Tue, 4 Jun 2013 14:57:46 -0500 Subject: [PATCH] Fixed unaligned handling in axpyf, dotxaxpyf. Details: - Fixed over-cautious handling of unaligned operands in vector instrinsic implementation of axpyf kernel. - Fixed over- and under-cautious handling of unaligned operands in vector intrinsic implementation of dotxaxpyf kernel. --- kernels/x86_64/1f/bli_axpyf_opt_var1.c | 2 -- kernels/x86_64/1f/bli_dotxaxpyf_opt_var1.c | 12 +++++------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/kernels/x86_64/1f/bli_axpyf_opt_var1.c b/kernels/x86_64/1f/bli_axpyf_opt_var1.c index 3767d6465..ec0f5fec3 100644 --- a/kernels/x86_64/1f/bli_axpyf_opt_var1.c +++ b/kernels/x86_64/1f/bli_axpyf_opt_var1.c @@ -217,13 +217,11 @@ void bli_dddaxpyf_opt_var1( use_ref = TRUE; } else if ( bli_is_unaligned_to( a, 16 ) || - bli_is_unaligned_to( x, 16 ) || bli_is_unaligned_to( y, 16 ) ) { use_ref = TRUE; if ( bli_is_unaligned_to( a, 16 ) && - bli_is_unaligned_to( x, 16 ) && bli_is_unaligned_to( y, 16 ) ) { use_ref = FALSE; diff --git a/kernels/x86_64/1f/bli_dotxaxpyf_opt_var1.c b/kernels/x86_64/1f/bli_dotxaxpyf_opt_var1.c index c59d73772..06b070277 100644 --- a/kernels/x86_64/1f/bli_dotxaxpyf_opt_var1.c +++ b/kernels/x86_64/1f/bli_dotxaxpyf_opt_var1.c @@ -192,18 +192,16 @@ void bli_ddddotxaxpyf_opt_var1( use_ref = TRUE; } else if ( bli_is_unaligned_to( a, 16 ) || - bli_is_unaligned_to( x, 16 ) || - bli_is_unaligned_to( x, 16 ) || - bli_is_unaligned_to( y, 16 ) || - bli_is_unaligned_to( z, 16 ) ) + bli_is_unaligned_to( w, 16 ) || + bli_is_unaligned_to( z, 16 ) || + bli_is_unaligned_to( y, 16 ) ) { use_ref = TRUE; if ( bli_is_unaligned_to( a, 16 ) && bli_is_unaligned_to( w, 16 ) && - bli_is_unaligned_to( x, 16 ) && - bli_is_unaligned_to( y, 16 ) && - bli_is_unaligned_to( z, 16 ) ) + bli_is_unaligned_to( z, 16 ) && + bli_is_aligned_to( y, 16 ) ) // Note: y is not affected by a, w, and z being unaligned. { use_ref = FALSE; m_pre = 1;