From eb237c82a053a7390e2ef39c650bf5addbf5af57 Mon Sep 17 00:00:00 2001 From: malc Date: Tue, 17 Feb 2009 02:43:57 +0300 Subject: [PATCH] Make FPU version run fast --- skin.c | 49 ++++++++++++++++++++----------------------------- tbs | 3 ++- 2 files changed, 22 insertions(+), 30 deletions(-) diff --git a/skin.c b/skin.c index f3e1cf6..8209e7e 100644 --- a/skin.c +++ b/skin.c @@ -321,37 +321,28 @@ static void translate (State *s, float *vdst, float *ndst) for (i = 0; i < s->num_vertices; ++i, vsrc += 3, nsrc += 3, vdst += 3, ndst += 3, ++skin) { - if (skin->num_bones == 1) { - b = &s->bones[skin->boneindices[0]]; + float v[3] = {0,0,0}, n[3] = {0,0,0}, v0[4], v1[4], w; - mapply_to_point (vdst, b->cm, vsrc); - mapply_to_vector (ndst, b->cm, nsrc); - } - else - { - float v[3] = {0,0,0}, n[3] = {0,0,0}, v0[4], v1[4], w; - - for (j = 0; j < skin->num_bones; ++j) { - w = skin->weights[j]; - b = &s->bones[skin->boneindices[j]]; - - mapply_to_point (v1, b->cm, vsrc); - v1[0] *= w; - v1[1] *= w; - v1[2] *= w; - - mapply_to_vector (v0, b->cm, nsrc); - v0[0] *= w; - v0[1] *= w; - v0[2] *= w; - - vaddto (v, v1); - vaddto (n, v0); - } - - vcopy (vdst, v); - vcopy (ndst, n); + for (j = 0; j < skin->num_bones; ++j) { + w = skin->weights[j]; + b = &s->bones[skin->boneindices[j]]; + + mapply_to_point (v1, b->cm, vsrc); + v1[0] *= w; + v1[1] *= w; + v1[2] *= w; + + mapply_to_vector (v0, b->cm, nsrc); + v0[0] *= w; + v0[1] *= w; + v0[2] *= w; + + vaddto (v, v1); + vaddto (n, v0); } + + vcopy (vdst, v); + vcopy (ndst, n); } #endif diff --git a/tbs b/tbs index 74be2f6..9fd9f24 100644 --- a/tbs +++ b/tbs @@ -27,9 +27,10 @@ ccopt="-O" test $(hostname) = "linmac" && { cc="$HOME/x/dev/gcc-4.3.0/bin/gcc"; ccopt="-Wall -Werror -Wextra -O3 -mabi=altivec -maltivec -Wno-unused-function"; - ccopt="$ccopt -fprefetch-loop-arrays -mtune=7450 -mcpu=7450 -funroll-all-loops" + ccopt="$ccopt -fprefetch-loop-arrays -mtune=power6 -mcpu=G4 -funroll-all-loops" ccopt="$ccopt -ftree-loop-linear -ftree-vectorize" # ccopt="$ccopt -DUSE_ALTIVEC" + ccopt="$ccopt -DTIMING" } targets="dormin" -- 2.11.4.GIT