summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/gallivm/soabuiltins.c
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2008-03-16 12:49:46 +1100
committerBen Skeggs <skeggsb@gmail.com>2008-03-16 12:49:46 +1100
commitc4354f84603cabb0e33ea3f586cc89bfdc27f79b (patch)
tree01585e52a3cca102c212630d8bac345058e150f6 /src/gallium/auxiliary/gallivm/soabuiltins.c
parent5e17088ee3d0ddfa8871d92d262bb5242bdd92bd (diff)
parentcb98f71d42e4c714dfb0c3e29d28d8418a1ee86b (diff)
Merge remote branch 'upstream/gallium-0.1' into nouveau-gallium-0.1
Diffstat (limited to 'src/gallium/auxiliary/gallivm/soabuiltins.c')
-rw-r--r--src/gallium/auxiliary/gallivm/soabuiltins.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/gallivm/soabuiltins.c b/src/gallium/auxiliary/gallivm/soabuiltins.c
index 24c14e1b69..4d658be520 100644
--- a/src/gallium/auxiliary/gallivm/soabuiltins.c
+++ b/src/gallium/auxiliary/gallivm/soabuiltins.c
@@ -60,6 +60,24 @@ void dp4(float4 *res,
res[3] = dot;
}
+extern float powf(float num, float p);
+
+void pow(float4 *res,
+ float4 tmp0x, float4 tmp0y, float4 tmp0z, float4 tmp0w,
+ float4 tmp1x, float4 tmp1y, float4 tmp1z, float4 tmp1w)
+{
+ float4 p;
+ p.x = powf(tmp0x.x, tmp1x.x);
+ p.y = powf(tmp0x.y, tmp1x.y);
+ p.z = powf(tmp0x.z, tmp1x.z);
+ p.w = powf(tmp0x.w, tmp1x.w);
+
+ res[0] = p;
+ res[1] = p;
+ res[2] = p;
+ res[3] = p;
+}
+
#if 0
void yo(float4 *out, float4 *in)
{