Implement "sin" and "cos" builtins via new expression operators.

This commit is contained in:
Kenneth Graunke 2010-05-03 22:11:17 -07:00 committed by Ian Romanick
parent 6a9b1e1f06
commit 57e7da173e
4 changed files with 55 additions and 0 deletions

21
builtins/110/cos Normal file
View File

@ -0,0 +1,21 @@
((function cos
(signature float
(parameters
(declare (in) float angle))
((return (expression float cos (var_ref angle)))))
(signature vec2
(parameters
(declare (in) vec2 angle))
((return (expression vec2 cos (var_ref angle)))))
(signature vec3
(parameters
(declare (in) vec3 angle))
((return (expression vec3 cos (var_ref angle)))))
(signature vec4
(parameters
(declare (in) vec4 angle))
((return (expression vec4 cos (var_ref angle)))))
))

21
builtins/110/sin Normal file
View File

@ -0,0 +1,21 @@
((function sin
(signature float
(parameters
(declare (in) float angle))
((return (expression float sin (var_ref angle)))))
(signature vec2
(parameters
(declare (in) vec2 angle))
((return (expression vec2 sin (var_ref angle)))))
(signature vec3
(parameters
(declare (in) vec3 angle))
((return (expression vec3 sin (var_ref angle)))))
(signature vec4
(parameters
(declare (in) vec4 angle))
((return (expression vec4 sin (var_ref angle)))))
))

5
ir.cpp
View File

@ -73,6 +73,9 @@ ir_expression::get_num_operands(ir_expression_operation op)
1, /* ir_unop_ceil */
1, /* ir_unop_floor */
1, /* ir_unop_sin */
1, /* ir_unop_cos */
2, /* ir_binop_add */
2, /* ir_binop_sub */
2, /* ir_binop_mul */
@ -131,6 +134,8 @@ static const char *const operator_strs[] = {
"trunc",
"ceil",
"floor",
"sin",
"cos",
"+",
"-",
"*",

8
ir.h
View File

@ -449,6 +449,14 @@ enum ir_expression_operation {
ir_unop_floor,
/*@}*/
/**
* \name Trigonometric operations.
*/
/*@{*/
ir_unop_sin,
ir_unop_cos,
/*@}*/
ir_binop_add,
ir_binop_sub,
ir_binop_mul,