asm/f64: Update guardIncVector to allow negative increments.

This commit is contained in:
Chad Kunde
2017-04-25 04:34:14 -07:00
parent 7f71a772b2
commit e24f90d852

View File

@@ -33,19 +33,17 @@ func isValidGuard(v []float64, g float64, g_ln int) bool {
return true return true
} }
func guardIncVector(vec []float64, guard_val float64, inc, guard_len int) (guarded []float64) { func guardIncVector(vec []float64, gdVal float64, inc, gdLen int) (guarded []float64) {
s_ln := len(vec) * inc if inc < 0 {
guarded = make([]float64, s_ln+guard_len*2) inc = -inc
for i, j := 0, 0; i < len(guarded); i++ { }
switch { inrLen := len(vec) * inc
case i < guard_len, guard_len+s_ln < i: guarded = make([]float64, inrLen+gdLen*2)
guarded[i] = guard_val for i := range guarded {
case (i-guard_len)%(inc) == 0 && j < len(vec): guarded[i] = gdVal
guarded[i] = vec[j] }
j++ for i, v := range vec {
default: guarded[gdLen+i*inc] = v
guarded[i] = guard_val
}
} }
return guarded return guarded
} }