1 /**************************************************************************
3 * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 **************************************************************************/
29 * This file is compiled with clang into the LLVM bitcode
32 * Zack Rusin zack@tungstengraphics.com
34 typedef __attribute__(( ocu_vector_type(4) )) float float4
;
37 float4 tmp0x
, float4 tmp0y
, float4 tmp0z
, float4 tmp0w
,
38 float4 tmp1x
, float4 tmp1y
, float4 tmp1z
, float4 tmp1w
)
40 float4 dot
= (tmp0x
* tmp1x
) + (tmp0y
* tmp1y
) +
51 float4 tmp0x
, float4 tmp0y
, float4 tmp0z
, float4 tmp0w
,
52 float4 tmp1x
, float4 tmp1y
, float4 tmp1z
, float4 tmp1w
)
54 float4 dot
= (tmp0x
* tmp1x
) + (tmp0y
* tmp1y
) +
55 (tmp0z
* tmp1z
) + (tmp0w
* tmp1w
);
63 extern float powf(float num
, float p
);
66 float4 tmp0x
, float4 tmp0y
, float4 tmp0z
, float4 tmp0w
,
67 float4 tmp1x
, float4 tmp1y
, float4 tmp1z
, float4 tmp1w
)
70 p
.x
= powf(tmp0x
.x
, tmp1x
.x
);
71 p
.y
= powf(tmp0x
.y
, tmp1x
.y
);
72 p
.z
= powf(tmp0x
.z
, tmp1x
.z
);
73 p
.w
= powf(tmp0x
.w
, tmp1x
.w
);
82 void yo(float4
*out
, float4
*in
)
86 dp3(res
, in
[0], in
[1], in
[2], in
[3],
87 in
[4], in
[5], in
[6], in
[7]);