From e24f90d852f6548c0fd84b2eff34b1ca132ebee9 Mon Sep 17 00:00:00 2001 From: Chad Kunde Date: Tue, 25 Apr 2017 04:34:14 -0700 Subject: [PATCH] asm/f64: Update guardIncVector to allow negative increments. --- asm/f64/stubs_test.go | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/asm/f64/stubs_test.go b/asm/f64/stubs_test.go index 54712d17..5cf072db 100644 --- a/asm/f64/stubs_test.go +++ b/asm/f64/stubs_test.go @@ -33,19 +33,17 @@ func isValidGuard(v []float64, g float64, g_ln int) bool { return true } -func guardIncVector(vec []float64, guard_val float64, inc, guard_len int) (guarded []float64) { - s_ln := len(vec) * inc - guarded = make([]float64, s_ln+guard_len*2) - for i, j := 0, 0; i < len(guarded); i++ { - switch { - case i < guard_len, guard_len+s_ln < i: - guarded[i] = guard_val - case (i-guard_len)%(inc) == 0 && j < len(vec): - guarded[i] = vec[j] - j++ - default: - guarded[i] = guard_val - } +func guardIncVector(vec []float64, gdVal float64, inc, gdLen int) (guarded []float64) { + if inc < 0 { + inc = -inc + } + inrLen := len(vec) * inc + guarded = make([]float64, inrLen+gdLen*2) + for i := range guarded { + guarded[i] = gdVal + } + for i, v := range vec { + guarded[gdLen+i*inc] = v } return guarded }