ir_constant_expression: Add support for "all" builtin.

This commit is contained in:
Kenneth Graunke 2010-07-21 17:34:32 -07:00
parent 8b1680acc3
commit aca7e95222

View file

@ -804,7 +804,12 @@ ir_call::constant_expression_value()
if (strcmp(callee, "abs") == 0) {
expr = new(mem_ctx) ir_expression(ir_unop_abs, type, op[0], NULL);
} else if (strcmp(callee, "all") == 0) {
return NULL; /* FINISHME: implement this */
assert(op[0]->type->is_boolean());
for (unsigned c = 0; c < op[0]->type->components(); c++) {
if (!op[0]->value.b[c])
return new(mem_ctx) ir_constant(false);
}
return new(mem_ctx) ir_constant(true);
} else if (strcmp(callee, "any") == 0) {
return NULL; /* FINISHME: implement this */
} else if (strcmp(callee, "asin") == 0) {