Lines Matching refs:op
61 ir_constant *op[Elements(this->operands)] = { NULL, }; in constant_expression_value() local
67 op[operand] = this->operands[operand]->constant_expression_value(); in constant_expression_value()
68 if (!op[operand]) in constant_expression_value()
72 if (op[1] != NULL) in constant_expression_value()
73 assert(op[0]->type->base_type == op[1]->type->base_type); in constant_expression_value()
75 bool op0_scalar = op[0]->type->is_scalar(); in constant_expression_value()
76 bool op1_scalar = op[1] != NULL && op[1]->type->is_scalar(); in constant_expression_value()
84 if (op1_scalar || !op[1]) { in constant_expression_value()
85 components = op[0]->type->components(); in constant_expression_value()
87 components = op[1]->type->components(); in constant_expression_value()
93 if (op[0]->type->is_array()) { in constant_expression_value()
94 assert(op[1] != NULL && op[1]->type->is_array()); in constant_expression_value()
97 return new(ctx) ir_constant(op[0]->has_value(op[1])); in constant_expression_value()
99 return new(ctx) ir_constant(!op[0]->has_value(op[1])); in constant_expression_value()
108 switch (op[0]->type->base_type) { in constant_expression_value()
111 data.i[c] = ~ op[0]->value.i[c]; in constant_expression_value()
115 data.u[c] = ~ op[0]->value.u[c]; in constant_expression_value()
123 assert(op[0]->type->base_type == GLSL_TYPE_BOOL); in constant_expression_value()
124 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
125 data.b[c] = !op[0]->value.b[c]; in constant_expression_value()
129 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
130 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
131 data.i[c] = (int) op[0]->value.f[c]; in constant_expression_value()
135 assert(op[0]->type->base_type == GLSL_TYPE_INT); in constant_expression_value()
136 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
137 data.f[c] = (float) op[0]->value.i[c]; in constant_expression_value()
141 assert(op[0]->type->base_type == GLSL_TYPE_UINT); in constant_expression_value()
142 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
143 data.f[c] = (float) op[0]->value.u[c]; in constant_expression_value()
147 assert(op[0]->type->base_type == GLSL_TYPE_BOOL); in constant_expression_value()
148 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
149 data.f[c] = op[0]->value.b[c] ? 1.0F : 0.0F; in constant_expression_value()
153 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
154 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
155 data.b[c] = op[0]->value.f[c] != 0.0F ? true : false; in constant_expression_value()
159 assert(op[0]->type->base_type == GLSL_TYPE_BOOL); in constant_expression_value()
160 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
161 data.u[c] = op[0]->value.b[c] ? 1 : 0; in constant_expression_value()
165 assert(op[0]->type->is_integer()); in constant_expression_value()
166 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
167 data.b[c] = op[0]->value.u[c] ? true : false; in constant_expression_value()
172 assert(op[0]->type->is_boolean()); in constant_expression_value()
174 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
175 if (op[0]->value.b[c]) in constant_expression_value()
181 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
182 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
183 data.f[c] = truncf(op[0]->value.f[c]); in constant_expression_value()
188 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
189 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
190 data.f[c] = ceilf(op[0]->value.f[c]); in constant_expression_value()
195 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
196 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
197 data.f[c] = floorf(op[0]->value.f[c]); in constant_expression_value()
202 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
211 data.f[c] = op[0]->value.f[c] - floor(op[0]->value.f[c]); in constant_expression_value()
221 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
222 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
223 data.f[c] = sinf(op[0]->value.f[c]); in constant_expression_value()
229 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
230 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
231 data.f[c] = cosf(op[0]->value.f[c]); in constant_expression_value()
236 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
239 data.u[c] = -((int) op[0]->value.u[c]); in constant_expression_value()
242 data.i[c] = -op[0]->value.i[c]; in constant_expression_value()
245 data.f[c] = -op[0]->value.f[c]; in constant_expression_value()
254 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
257 data.u[c] = op[0]->value.u[c]; in constant_expression_value()
260 data.i[c] = op[0]->value.i[c]; in constant_expression_value()
265 data.f[c] = fabs(op[0]->value.f[c]); in constant_expression_value()
274 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
277 data.u[c] = op[0]->value.i[c] > 0; in constant_expression_value()
280 data.i[c] = (op[0]->value.i[c] > 0) - (op[0]->value.i[c] < 0); in constant_expression_value()
283 data.f[c] = float((op[0]->value.f[c] > 0)-(op[0]->value.f[c] < 0)); in constant_expression_value()
292 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
293 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
296 if (op[0]->value.u[c] != 0.0) in constant_expression_value()
297 data.u[c] = 1 / op[0]->value.u[c]; in constant_expression_value()
300 if (op[0]->value.i[c] != 0.0) in constant_expression_value()
301 data.i[c] = 1 / op[0]->value.i[c]; in constant_expression_value()
304 if (op[0]->value.f[c] != 0.0) in constant_expression_value()
305 data.f[c] = 1.0F / op[0]->value.f[c]; in constant_expression_value()
314 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
315 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
316 data.f[c] = 1.0F / sqrtf(op[0]->value.f[c]); in constant_expression_value()
321 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
322 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
323 data.f[c] = sqrtf(op[0]->value.f[c]); in constant_expression_value()
328 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
329 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
330 data.f[c] = expf(op[0]->value.f[c]); in constant_expression_value()
335 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
336 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
337 data.f[c] = exp2f(op[0]->value.f[c]); in constant_expression_value()
342 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
343 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
344 data.f[c] = logf(op[0]->value.f[c]); in constant_expression_value()
349 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
350 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
351 data.f[c] = log(op[0]->value.f[c]); in constant_expression_value()
357 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
358 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
364 assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); in constant_expression_value()
365 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
366 data.f[c] = powf(op[0]->value.f[c], op[1]->value.f[c]); in constant_expression_value()
371 data.f[0] = dot(op[0], op[1]); in constant_expression_value()
375 assert(op[0]->type == op[1]->type || op0_scalar || op1_scalar); in constant_expression_value()
380 switch (op[0]->type->base_type) { in constant_expression_value()
382 data.u[c] = MIN2(op[0]->value.u[c0], op[1]->value.u[c1]); in constant_expression_value()
385 data.i[c] = MIN2(op[0]->value.i[c0], op[1]->value.i[c1]); in constant_expression_value()
388 data.f[c] = MIN2(op[0]->value.f[c0], op[1]->value.f[c1]); in constant_expression_value()
397 assert(op[0]->type == op[1]->type || op0_scalar || op1_scalar); in constant_expression_value()
402 switch (op[0]->type->base_type) { in constant_expression_value()
404 data.u[c] = MAX2(op[0]->value.u[c0], op[1]->value.u[c1]); in constant_expression_value()
407 data.i[c] = MAX2(op[0]->value.i[c0], op[1]->value.i[c1]); in constant_expression_value()
410 data.f[c] = MAX2(op[0]->value.f[c0], op[1]->value.f[c1]); in constant_expression_value()
419 assert(op[0]->type == op[1]->type || op0_scalar || op1_scalar); in constant_expression_value()
424 switch (op[0]->type->base_type) { in constant_expression_value()
426 data.u[c] = op[0]->value.u[c0] + op[1]->value.u[c1]; in constant_expression_value()
429 data.i[c] = op[0]->value.i[c0] + op[1]->value.i[c1]; in constant_expression_value()
432 data.f[c] = op[0]->value.f[c0] + op[1]->value.f[c1]; in constant_expression_value()
441 assert(op[0]->type == op[1]->type || op0_scalar || op1_scalar); in constant_expression_value()
446 switch (op[0]->type->base_type) { in constant_expression_value()
448 data.u[c] = op[0]->value.u[c0] - op[1]->value.u[c1]; in constant_expression_value()
451 data.i[c] = op[0]->value.i[c0] - op[1]->value.i[c1]; in constant_expression_value()
454 data.f[c] = op[0]->value.f[c0] - op[1]->value.f[c1]; in constant_expression_value()
464 if ((op[0]->type == op[1]->type && !op[0]->type->is_matrix()) in constant_expression_value()
470 switch (op[0]->type->base_type) { in constant_expression_value()
472 data.u[c] = op[0]->value.u[c0] * op[1]->value.u[c1]; in constant_expression_value()
475 data.i[c] = op[0]->value.i[c0] * op[1]->value.i[c1]; in constant_expression_value()
478 data.f[c] = op[0]->value.f[c0] * op[1]->value.f[c1]; in constant_expression_value()
485 assert(op[0]->type->is_matrix() || op[1]->type->is_matrix()); in constant_expression_value()
496 const unsigned n = op[0]->type->is_vector() in constant_expression_value()
497 ? 1 : op[0]->type->vector_elements; in constant_expression_value()
498 const unsigned m = op[1]->type->vector_elements; in constant_expression_value()
499 const unsigned p = op[1]->type->matrix_columns; in constant_expression_value()
503 data.f[i+n*j] += op[0]->value.f[i+n*k]*op[1]->value.f[k+m*j]; in constant_expression_value()
511 assert(op[0]->type == op[1]->type || op0_scalar || op1_scalar); in constant_expression_value()
516 switch (op[0]->type->base_type) { in constant_expression_value()
518 data.u[c] = op[0]->value.u[c0] / op[1]->value.u[c1]; in constant_expression_value()
521 data.i[c] = op[0]->value.i[c0] / op[1]->value.i[c1]; in constant_expression_value()
524 data.f[c] = op[0]->value.f[c0] / op[1]->value.f[c1]; in constant_expression_value()
533 assert(op[0]->type == op[1]->type || op0_scalar || op1_scalar); in constant_expression_value()
538 switch (op[0]->type->base_type) { in constant_expression_value()
540 data.u[c] = op[0]->value.u[c0] % op[1]->value.u[c1]; in constant_expression_value()
543 data.i[c] = op[0]->value.i[c0] % op[1]->value.i[c1]; in constant_expression_value()
549 data.f[c] = op[0]->value.f[c0] - op[1]->value.f[c1] in constant_expression_value()
550 * floorf(op[0]->value.f[c0] / op[1]->value.f[c1]); in constant_expression_value()
560 assert(op[0]->type->base_type == GLSL_TYPE_BOOL); in constant_expression_value()
561 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
562 data.b[c] = op[0]->value.b[c] && op[1]->value.b[c]; in constant_expression_value()
565 assert(op[0]->type->base_type == GLSL_TYPE_BOOL); in constant_expression_value()
566 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
567 data.b[c] = op[0]->value.b[c] ^ op[1]->value.b[c]; in constant_expression_value()
570 assert(op[0]->type->base_type == GLSL_TYPE_BOOL); in constant_expression_value()
571 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
572 data.b[c] = op[0]->value.b[c] || op[1]->value.b[c]; in constant_expression_value()
576 assert(op[0]->type == op[1]->type); in constant_expression_value()
577 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
578 switch (op[0]->type->base_type) { in constant_expression_value()
580 data.b[0] = op[0]->value.u[0] < op[1]->value.u[0]; in constant_expression_value()
583 data.b[0] = op[0]->value.i[0] < op[1]->value.i[0]; in constant_expression_value()
586 data.b[0] = op[0]->value.f[0] < op[1]->value.f[0]; in constant_expression_value()
594 assert(op[0]->type == op[1]->type); in constant_expression_value()
595 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
596 switch (op[0]->type->base_type) { in constant_expression_value()
598 data.b[c] = op[0]->value.u[c] > op[1]->value.u[c]; in constant_expression_value()
601 data.b[c] = op[0]->value.i[c] > op[1]->value.i[c]; in constant_expression_value()
604 data.b[c] = op[0]->value.f[c] > op[1]->value.f[c]; in constant_expression_value()
612 assert(op[0]->type == op[1]->type); in constant_expression_value()
613 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
614 switch (op[0]->type->base_type) { in constant_expression_value()
616 data.b[0] = op[0]->value.u[0] <= op[1]->value.u[0]; in constant_expression_value()
619 data.b[0] = op[0]->value.i[0] <= op[1]->value.i[0]; in constant_expression_value()
622 data.b[0] = op[0]->value.f[0] <= op[1]->value.f[0]; in constant_expression_value()
630 assert(op[0]->type == op[1]->type); in constant_expression_value()
631 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
632 switch (op[0]->type->base_type) { in constant_expression_value()
634 data.b[0] = op[0]->value.u[0] >= op[1]->value.u[0]; in constant_expression_value()
637 data.b[0] = op[0]->value.i[0] >= op[1]->value.i[0]; in constant_expression_value()
640 data.b[0] = op[0]->value.f[0] >= op[1]->value.f[0]; in constant_expression_value()
648 assert(op[0]->type == op[1]->type); in constant_expression_value()
650 switch (op[0]->type->base_type) { in constant_expression_value()
652 data.b[c] = op[0]->value.u[c] == op[1]->value.u[c]; in constant_expression_value()
655 data.b[c] = op[0]->value.i[c] == op[1]->value.i[c]; in constant_expression_value()
658 data.b[c] = op[0]->value.f[c] == op[1]->value.f[c]; in constant_expression_value()
666 assert(op[0]->type != op[1]->type); in constant_expression_value()
668 switch (op[0]->type->base_type) { in constant_expression_value()
670 data.b[c] = op[0]->value.u[c] != op[1]->value.u[c]; in constant_expression_value()
673 data.b[c] = op[0]->value.i[c] != op[1]->value.i[c]; in constant_expression_value()
676 data.b[c] = op[0]->value.f[c] != op[1]->value.f[c]; in constant_expression_value()
684 data.b[0] = op[0]->has_value(op[1]); in constant_expression_value()
687 data.b[0] = !op[0]->has_value(op[1]); in constant_expression_value()
695 if (op[0]->type->base_type == GLSL_TYPE_INT && in constant_expression_value()
696 op[1]->type->base_type == GLSL_TYPE_INT) { in constant_expression_value()
697 data.i[c] = op[0]->value.i[c0] << op[1]->value.i[c1]; in constant_expression_value()
699 } else if (op[0]->type->base_type == GLSL_TYPE_INT && in constant_expression_value()
700 op[1]->type->base_type == GLSL_TYPE_UINT) { in constant_expression_value()
701 data.i[c] = op[0]->value.i[c0] << op[1]->value.u[c1]; in constant_expression_value()
703 } else if (op[0]->type->base_type == GLSL_TYPE_UINT && in constant_expression_value()
704 op[1]->type->base_type == GLSL_TYPE_INT) { in constant_expression_value()
705 data.u[c] = op[0]->value.u[c0] << op[1]->value.i[c1]; in constant_expression_value()
707 } else if (op[0]->type->base_type == GLSL_TYPE_UINT && in constant_expression_value()
708 op[1]->type->base_type == GLSL_TYPE_UINT) { in constant_expression_value()
709 data.u[c] = op[0]->value.u[c0] << op[1]->value.u[c1]; in constant_expression_value()
719 if (op[0]->type->base_type == GLSL_TYPE_INT && in constant_expression_value()
720 op[1]->type->base_type == GLSL_TYPE_INT) { in constant_expression_value()
721 data.i[c] = op[0]->value.i[c0] >> op[1]->value.i[c1]; in constant_expression_value()
723 } else if (op[0]->type->base_type == GLSL_TYPE_INT && in constant_expression_value()
724 op[1]->type->base_type == GLSL_TYPE_UINT) { in constant_expression_value()
725 data.i[c] = op[0]->value.i[c0] >> op[1]->value.u[c1]; in constant_expression_value()
727 } else if (op[0]->type->base_type == GLSL_TYPE_UINT && in constant_expression_value()
728 op[1]->type->base_type == GLSL_TYPE_INT) { in constant_expression_value()
729 data.u[c] = op[0]->value.u[c0] >> op[1]->value.i[c1]; in constant_expression_value()
731 } else if (op[0]->type->base_type == GLSL_TYPE_UINT && in constant_expression_value()
732 op[1]->type->base_type == GLSL_TYPE_UINT) { in constant_expression_value()
733 data.u[c] = op[0]->value.u[c0] >> op[1]->value.u[c1]; in constant_expression_value()
743 switch (op[0]->type->base_type) { in constant_expression_value()
745 data.i[c] = op[0]->value.i[c0] & op[1]->value.i[c1]; in constant_expression_value()
748 data.u[c] = op[0]->value.u[c0] & op[1]->value.u[c1]; in constant_expression_value()
761 switch (op[0]->type->base_type) { in constant_expression_value()
763 data.i[c] = op[0]->value.i[c0] | op[1]->value.i[c1]; in constant_expression_value()
766 data.u[c] = op[0]->value.u[c0] | op[1]->value.u[c1]; in constant_expression_value()
779 switch (op[0]->type->base_type) { in constant_expression_value()
781 data.i[c] = op[0]->value.i[c0] ^ op[1]->value.i[c1]; in constant_expression_value()
784 data.u[c] = op[0]->value.u[c0] ^ op[1]->value.u[c1]; in constant_expression_value()
796 data.i[c] = op[c]->value.i[0]; in constant_expression_value()
799 data.u[c] = op[c]->value.u[0]; in constant_expression_value()
802 data.f[c] = op[c]->value.f[0]; in constant_expression_value()
971 ir_constant *op[3]; in constant_expression_value() local
977 op[num_parameters] = constant; in constant_expression_value()
996 expr = new(mem_ctx) ir_expression(ir_unop_abs, type, op[0], NULL); in constant_expression_value()
998 assert(op[0]->type->is_boolean()); in constant_expression_value()
999 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
1000 if (!op[0]->value.b[c]) in constant_expression_value()
1005 assert(op[0]->type->is_boolean()); in constant_expression_value()
1006 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
1007 if (op[0]->value.b[c]) in constant_expression_value()
1012 assert(op[0]->type->is_float()); in constant_expression_value()
1013 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1014 data.f[c] = acosf(op[0]->value.f[c]); in constant_expression_value()
1016 assert(op[0]->type->is_float()); in constant_expression_value()
1017 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1018 data.f[c] = acoshf(op[0]->value.f[c]); in constant_expression_value()
1020 assert(op[0]->type->is_float()); in constant_expression_value()
1021 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1022 data.f[c] = asinf(op[0]->value.f[c]); in constant_expression_value()
1024 assert(op[0]->type->is_float()); in constant_expression_value()
1025 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1026 data.f[c] = asinhf(op[0]->value.f[c]); in constant_expression_value()
1028 assert(op[0]->type->is_float()); in constant_expression_value()
1030 assert(op[1]->type->is_float()); in constant_expression_value()
1031 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1032 data.f[c] = atan2f(op[0]->value.f[c], op[1]->value.f[c]); in constant_expression_value()
1034 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1035 data.f[c] = atanf(op[0]->value.f[c]); in constant_expression_value()
1038 assert(op[0]->type->is_float()); in constant_expression_value()
1039 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1040 data.f[c] = atanhf(op[0]->value.f[c]); in constant_expression_value()
1044 expr = new(mem_ctx) ir_expression(ir_unop_ceil, type, op[0], NULL); in constant_expression_value()
1047 unsigned c1_inc = op[1]->type->is_scalar() ? 0 : 1; in constant_expression_value()
1048 unsigned c2_inc = op[2]->type->is_scalar() ? 0 : 1; in constant_expression_value()
1050 c < op[0]->type->components(); in constant_expression_value()
1053 switch (op[0]->type->base_type) { in constant_expression_value()
1055 data.u[c] = CLAMP(op[0]->value.u[c], op[1]->value.u[c1], in constant_expression_value()
1056 op[2]->value.u[c2]); in constant_expression_value()
1059 data.i[c] = CLAMP(op[0]->value.i[c], op[1]->value.i[c1], in constant_expression_value()
1060 op[2]->value.i[c2]); in constant_expression_value()
1063 data.f[c] = CLAMP(op[0]->value.f[c], op[1]->value.f[c1], in constant_expression_value()
1064 op[2]->value.f[c2]); in constant_expression_value()
1071 expr = new(mem_ctx) ir_expression(ir_unop_cos, type, op[0], NULL); in constant_expression_value()
1073 assert(op[0]->type->is_float()); in constant_expression_value()
1074 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1075 data.f[c] = coshf(op[0]->value.f[c]); in constant_expression_value()
1077 assert(op[0]->type == glsl_type::vec3_type); in constant_expression_value()
1078 assert(op[1]->type == glsl_type::vec3_type); in constant_expression_value()
1079 data.f[0] = (op[0]->value.f[1] * op[1]->value.f[2] - in constant_expression_value()
1080 op[1]->value.f[1] * op[0]->value.f[2]); in constant_expression_value()
1081 data.f[1] = (op[0]->value.f[2] * op[1]->value.f[0] - in constant_expression_value()
1082 op[1]->value.f[2] * op[0]->value.f[0]); in constant_expression_value()
1083 data.f[2] = (op[0]->value.f[0] * op[1]->value.f[1] - in constant_expression_value()
1084 op[1]->value.f[0] * op[0]->value.f[1]); in constant_expression_value()
1086 assert(op[0]->type->is_float()); in constant_expression_value()
1087 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1088 data.f[c] = 180.0F / M_PI * op[0]->value.f[c]; in constant_expression_value()
1090 assert(op[0]->type->is_float() && op[1]->type->is_float()); in constant_expression_value()
1092 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
1093 float t = op[0]->value.f[c] - op[1]->value.f[c]; in constant_expression_value()
1098 return new(mem_ctx) ir_constant(dot(op[0], op[1])); in constant_expression_value()
1100 assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector()); in constant_expression_value()
1101 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
1102 switch (op[0]->type->base_type) { in constant_expression_value()
1104 data.b[c] = op[0]->value.u[c] == op[1]->value.u[c]; in constant_expression_value()
1107 data.b[c] = op[0]->value.i[c] == op[1]->value.i[c]; in constant_expression_value()
1110 data.b[c] = op[0]->value.f[c] == op[1]->value.f[c]; in constant_expression_value()
1113 data.b[c] = op[0]->value.b[c] == op[1]->value.b[c]; in constant_expression_value()
1120 expr = new(mem_ctx) ir_expression(ir_unop_exp, type, op[0], NULL); in constant_expression_value()
1122 expr = new(mem_ctx) ir_expression(ir_unop_exp2, type, op[0], NULL); in constant_expression_value()
1124 if (dot(op[2], op[1]) < 0) in constant_expression_value()
1125 return op[0]; in constant_expression_value()
1126 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1127 data.f[c] = -op[0]->value.f[c]; in constant_expression_value()
1129 expr = new(mem_ctx) ir_expression(ir_unop_floor, type, op[0], NULL); in constant_expression_value()
1131 expr = new(mem_ctx) ir_expression(ir_unop_fract, type, op[0], NULL); in constant_expression_value()
1135 assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector()); in constant_expression_value()
1136 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
1137 switch (op[0]->type->base_type) { in constant_expression_value()
1139 data.b[c] = op[0]->value.u[c] > op[1]->value.u[c]; in constant_expression_value()
1142 data.b[c] = op[0]->value.i[c] > op[1]->value.i[c]; in constant_expression_value()
1145 data.b[c] = op[0]->value.f[c] > op[1]->value.f[c]; in constant_expression_value()
1152 assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector()); in constant_expression_value()
1153 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
1154 switch (op[0]->type->base_type) { in constant_expression_value()
1156 data.b[c] = op[0]->value.u[c] >= op[1]->value.u[c]; in constant_expression_value()
1159 data.b[c] = op[0]->value.i[c] >= op[1]->value.i[c]; in constant_expression_value()
1162 data.b[c] = op[0]->value.f[c] >= op[1]->value.f[c]; in constant_expression_value()
1169 expr = new(mem_ctx) ir_expression(ir_unop_rsq, type, op[0], NULL); in constant_expression_value()
1171 return new(mem_ctx) ir_constant(sqrtf(dot(op[0], op[0]))); in constant_expression_value()
1173 assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector()); in constant_expression_value()
1174 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
1175 switch (op[0]->type->base_type) { in constant_expression_value()
1177 data.b[c] = op[0]->value.u[c] < op[1]->value.u[c]; in constant_expression_value()
1180 data.b[c] = op[0]->value.i[c] < op[1]->value.i[c]; in constant_expression_value()
1183 data.b[c] = op[0]->value.f[c] < op[1]->value.f[c]; in constant_expression_value()
1190 assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector()); in constant_expression_value()
1191 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
1192 switch (op[0]->type->base_type) { in constant_expression_value()
1194 data.b[c] = op[0]->value.u[c] <= op[1]->value.u[c]; in constant_expression_value()
1197 data.b[c] = op[0]->value.i[c] <= op[1]->value.i[c]; in constant_expression_value()
1200 data.b[c] = op[0]->value.f[c] <= op[1]->value.f[c]; in constant_expression_value()
1207 expr = new(mem_ctx) ir_expression(ir_unop_log, type, op[0], NULL); in constant_expression_value()
1209 expr = new(mem_ctx) ir_expression(ir_unop_log2, type, op[0], NULL); in constant_expression_value()
1211 assert(op[0]->type->is_float() && op[1]->type->is_float()); in constant_expression_value()
1212 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1213 data.f[c] = op[0]->value.f[c] * op[1]->value.f[c]; in constant_expression_value()
1215 expr = new(mem_ctx) ir_expression(ir_binop_max, type, op[0], op[1]); in constant_expression_value()
1217 expr = new(mem_ctx) ir_expression(ir_binop_min, type, op[0], op[1]); in constant_expression_value()
1219 assert(op[0]->type->is_float() && op[1]->type->is_float()); in constant_expression_value()
1220 if (op[2]->type->is_float()) { in constant_expression_value()
1221 unsigned c2_inc = op[2]->type->is_scalar() ? 0 : 1; in constant_expression_value()
1222 unsigned components = op[0]->type->components(); in constant_expression_value()
1224 data.f[c] = op[0]->value.f[c] * (1 - op[2]->value.f[c2]) + in constant_expression_value()
1225 op[1]->value.f[c] * op[2]->value.f[c2]; in constant_expression_value()
1228 assert(op[2]->type->is_boolean()); in constant_expression_value()
1229 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1230 data.f[c] = op[op[2]->value.b[c] ? 1 : 0]->value.f[c]; in constant_expression_value()
1233 expr = new(mem_ctx) ir_expression(ir_binop_mod, type, op[0], op[1]); in constant_expression_value()
1235 assert(op[0]->type->is_float()); in constant_expression_value()
1236 float length = sqrtf(dot(op[0], op[0])); in constant_expression_value()
1241 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1242 data.f[c] = op[0]->value.f[c] / length; in constant_expression_value()
1244 expr = new(mem_ctx) ir_expression(ir_unop_logic_not, type, op[0], NULL); in constant_expression_value()
1246 assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector()); in constant_expression_value()
1247 for (unsigned c = 0; c < op[0]->type->components(); c++) { in constant_expression_value()
1248 switch (op[0]->type->base_type) { in constant_expression_value()
1250 data.b[c] = op[0]->value.u[c] != op[1]->value.u[c]; in constant_expression_value()
1253 data.b[c] = op[0]->value.i[c] != op[1]->value.i[c]; in constant_expression_value()
1256 data.b[c] = op[0]->value.f[c] != op[1]->value.f[c]; in constant_expression_value()
1259 data.b[c] = op[0]->value.b[c] != op[1]->value.b[c]; in constant_expression_value()
1266 assert(op[0]->type->is_vector() && op[1]->type->is_vector()); in constant_expression_value()
1267 const unsigned m = op[0]->type->vector_elements; in constant_expression_value()
1268 const unsigned n = op[1]->type->vector_elements; in constant_expression_value()
1271 data.f[i+m*j] = op[0]->value.f[i] * op[1]->value.f[j]; in constant_expression_value()
1275 expr = new(mem_ctx) ir_expression(ir_binop_pow, type, op[0], op[1]); in constant_expression_value()
1277 assert(op[0]->type->is_float()); in constant_expression_value()
1278 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1279 data.f[c] = M_PI / 180.0F * op[0]->value.f[c]; in constant_expression_value()
1281 assert(op[0]->type->is_float()); in constant_expression_value()
1282 float dot_NI = dot(op[1], op[0]); in constant_expression_value()
1283 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1284 data.f[c] = op[0]->value.f[c] - 2 * dot_NI * op[1]->value.f[c]; in constant_expression_value()
1286 const float eta = op[2]->value.f[0]; in constant_expression_value()
1287 const float dot_NI = dot(op[1], op[0]); in constant_expression_value()
1293 data.f[c] = eta * op[0]->value.f[c] - (eta * dot_NI + sqrtf(k)) in constant_expression_value()
1294 * op[1]->value.f[c]; in constant_expression_value()
1298 expr = new(mem_ctx) ir_expression(ir_unop_sign, type, op[0], NULL); in constant_expression_value()
1300 expr = new(mem_ctx) ir_expression(ir_unop_sin, type, op[0], NULL); in constant_expression_value()
1302 assert(op[0]->type->is_float()); in constant_expression_value()
1303 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1304 data.f[c] = sinhf(op[0]->value.f[c]); in constant_expression_value()
1307 assert(op[1]->type == op[0]->type); in constant_expression_value()
1308 unsigned edge_inc = op[0]->type->is_scalar() ? 0 : 1; in constant_expression_value()
1310 const float edge0 = op[0]->value.f[e]; in constant_expression_value()
1311 const float edge1 = op[1]->value.f[e]; in constant_expression_value()
1315 const float numerator = op[2]->value.f[c] - edge0; in constant_expression_value()
1322 expr = new(mem_ctx) ir_expression(ir_unop_sqrt, type, op[0], NULL); in constant_expression_value()
1324 assert(op[0]->type->is_float() && op[1]->type->is_float()); in constant_expression_value()
1326 const unsigned c0_inc = op[0]->type->is_scalar() ? 0 : 1; in constant_expression_value()
1328 data.f[c] = (op[1]->value.f[c] < op[0]->value.f[c0]) ? 0.0F : 1.0F; in constant_expression_value()
1330 assert(op[0]->type->is_float()); in constant_expression_value()
1331 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1332 data.f[c] = tanf(op[0]->value.f[c]); in constant_expression_value()
1334 assert(op[0]->type->is_float()); in constant_expression_value()
1335 for (unsigned c = 0; c < op[0]->type->components(); c++) in constant_expression_value()
1336 data.f[c] = tanhf(op[0]->value.f[c]); in constant_expression_value()
1338 assert(op[0]->type->is_matrix()); in constant_expression_value()
1339 const unsigned n = op[0]->type->vector_elements; in constant_expression_value()
1340 const unsigned m = op[0]->type->matrix_columns; in constant_expression_value()
1343 data.f[m*i+j] += op[0]->value.f[i+n*j]; in constant_expression_value()