Commit e4136fe9 authored by Evan Shaw's avatar Evan Shaw Committed by Russ Cox

big: eliminate redundant array lookups

This gives about a 6% performance improvement to pidigits.
Thanks to Russ for the suggestion.

R=rsc, gri
CC=golang-dev
https://golang.org/cl/957041
parent 4f445d27
......@@ -544,13 +544,16 @@ func shiftLeft(dst, src []Word, n uint) {
}
ñ := _W - n
x := src[len(src)-1]
if len(dst) > len(src) {
dst[len(src)] |= src[len(src)-1] >> ñ
dst[len(src)] = x >> ñ
}
for i := len(src) - 1; i >= 1; i-- {
dst[i] = src[i]<<n | src[i-1]>>ñ
y := src[i-1]
dst[i] = x<<n | y>>ñ
x = y
}
dst[0] = src[0] << n
dst[0] = x << n
}
......@@ -560,10 +563,13 @@ func shiftRight(dst, src []Word, n uint) {
}
ñ := _W - n
x := src[0]
for i := 0; i < len(src)-1; i++ {
dst[i] = src[i]>>n | src[i+1]<<ñ
y := src[i+1]
dst[i] = x>>n | y<<ñ
x = y
}
dst[len(src)-1] = src[len(src)-1] >> n
dst[len(src)-1] = x >> n
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment