diff options
author | Emil Velikov <emil.velikov@collabora.com> | 2016-01-18 12:16:48 +0200 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2016-01-26 16:08:33 +0000 |
commit | eb63640c1d38a200a7b1540405051d3ff79d0d8a (patch) | |
tree | da46321a41f309b1d02aeb14d5d5487791c45aeb /src/glsl/ir_builder.h | |
parent | a39a8fbbaa129f4e52f2a3ad2747182e9a74d910 (diff) | |
download | external_mesa3d-eb63640c1d38a200a7b1540405051d3ff79d0d8a.zip external_mesa3d-eb63640c1d38a200a7b1540405051d3ff79d0d8a.tar.gz external_mesa3d-eb63640c1d38a200a7b1540405051d3ff79d0d8a.tar.bz2 |
glsl: move to compiler/
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Matt Turner <mattst88@gmail.com>
Acked-by: Jose Fonseca <jfonseca@vmware.com>
Diffstat (limited to 'src/glsl/ir_builder.h')
-rw-r--r-- | src/glsl/ir_builder.h | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/src/glsl/ir_builder.h b/src/glsl/ir_builder.h deleted file mode 100644 index b483ebf..0000000 --- a/src/glsl/ir_builder.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#include "ir.h" - -namespace ir_builder { - -#ifndef WRITEMASK_X -enum writemask { - WRITEMASK_X = 0x1, - WRITEMASK_Y = 0x2, - WRITEMASK_Z = 0x4, - WRITEMASK_W = 0x8, -}; -#endif - -/** - * This little class exists to let the helper expression generators - * take either an ir_rvalue * or an ir_variable * to be automatically - * dereferenced, while still providing compile-time type checking. - * - * You don't have to explicitly call the constructor -- C++ will see - * that you passed an ir_variable, and silently call the - * operand(ir_variable *var) constructor behind your back. - */ -class operand { -public: - operand(ir_rvalue *val) - : val(val) - { - } - - operand(ir_variable *var) - { - void *mem_ctx = ralloc_parent(var); - val = new(mem_ctx) ir_dereference_variable(var); - } - - ir_rvalue *val; -}; - -/** Automatic generator for ir_dereference_variable on assignment LHS. - * - * \sa operand - */ -class deref { -public: - deref(ir_dereference *val) - : val(val) - { - } - - deref(ir_variable *var) - { - void *mem_ctx = ralloc_parent(var); - val = new(mem_ctx) ir_dereference_variable(var); - } - - - ir_dereference *val; -}; - -class ir_factory { -public: - ir_factory(exec_list *instructions = NULL, void *mem_ctx = NULL) - : instructions(instructions), - mem_ctx(mem_ctx) - { - return; - } - - void emit(ir_instruction *ir); - ir_variable *make_temp(const glsl_type *type, const char *name); - - ir_constant* - constant(float f) - { - return new(mem_ctx) ir_constant(f); - } - - ir_constant* - constant(int i) - { - return new(mem_ctx) ir_constant(i); - } - - ir_constant* - constant(unsigned u) - { - return new(mem_ctx) ir_constant(u); - } - - ir_constant* - constant(bool b) - { - return new(mem_ctx) ir_constant(b); - } - - exec_list *instructions; - void *mem_ctx; -}; - -ir_assignment *assign(deref lhs, operand rhs); -ir_assignment *assign(deref lhs, operand rhs, int writemask); -ir_assignment *assign(deref lhs, operand rhs, operand condition); -ir_assignment *assign(deref lhs, operand rhs, operand condition, int writemask); - -ir_return *ret(operand retval); - -ir_expression *expr(ir_expression_operation op, operand a); -ir_expression *expr(ir_expression_operation op, operand a, operand b); -ir_expression *expr(ir_expression_operation op, operand a, operand b, operand c); -ir_expression *add(operand a, operand b); -ir_expression *sub(operand a, operand b); -ir_expression *mul(operand a, operand b); -ir_expression *imul_high(operand a, operand b); -ir_expression *div(operand a, operand b); -ir_expression *carry(operand a, operand b); -ir_expression *borrow(operand a, operand b); -ir_expression *trunc(operand a); -ir_expression *round_even(operand a); -ir_expression *fract(operand a); -ir_expression *dot(operand a, operand b); -ir_expression *clamp(operand a, operand b, operand c); -ir_expression *saturate(operand a); -ir_expression *abs(operand a); -ir_expression *neg(operand a); -ir_expression *sin(operand a); -ir_expression *cos(operand a); -ir_expression *exp(operand a); -ir_expression *rsq(operand a); -ir_expression *sqrt(operand a); -ir_expression *log(operand a); -ir_expression *sign(operand a); - -ir_expression *subr_to_int(operand a); -ir_expression *equal(operand a, operand b); -ir_expression *nequal(operand a, operand b); -ir_expression *less(operand a, operand b); -ir_expression *greater(operand a, operand b); -ir_expression *lequal(operand a, operand b); -ir_expression *gequal(operand a, operand b); - -ir_expression *logic_not(operand a); -ir_expression *logic_and(operand a, operand b); -ir_expression *logic_or(operand a, operand b); - -ir_expression *bit_not(operand a); -ir_expression *bit_or(operand a, operand b); -ir_expression *bit_and(operand a, operand b); -ir_expression *lshift(operand a, operand b); -ir_expression *rshift(operand a, operand b); - -ir_expression *f2i(operand a); -ir_expression *bitcast_f2i(operand a); -ir_expression *i2f(operand a); -ir_expression *bitcast_i2f(operand a); -ir_expression *f2u(operand a); -ir_expression *bitcast_f2u(operand a); -ir_expression *u2f(operand a); -ir_expression *bitcast_u2f(operand a); -ir_expression *i2u(operand a); -ir_expression *u2i(operand a); -ir_expression *b2i(operand a); -ir_expression *i2b(operand a); -ir_expression *f2b(operand a); -ir_expression *b2f(operand a); - -ir_expression *f2d(operand a); -ir_expression *i2d(operand a); -ir_expression *u2d(operand a); - -ir_expression *min2(operand a, operand b); -ir_expression *max2(operand a, operand b); - -ir_expression *interpolate_at_centroid(operand a); -ir_expression *interpolate_at_offset(operand a, operand b); -ir_expression *interpolate_at_sample(operand a, operand b); - -ir_expression *fma(operand a, operand b, operand c); -ir_expression *lrp(operand x, operand y, operand a); -ir_expression *csel(operand a, operand b, operand c); -ir_expression *bitfield_extract(operand a, operand b, operand c); -ir_expression *bitfield_insert(operand a, operand b, operand c, operand d); - -ir_swizzle *swizzle(operand a, int swizzle, int components); -/** - * Swizzle away later components, but preserve the ordering. - */ -ir_swizzle *swizzle_for_size(operand a, unsigned components); - -ir_swizzle *swizzle_xxxx(operand a); -ir_swizzle *swizzle_yyyy(operand a); -ir_swizzle *swizzle_zzzz(operand a); -ir_swizzle *swizzle_wwww(operand a); -ir_swizzle *swizzle_x(operand a); -ir_swizzle *swizzle_y(operand a); -ir_swizzle *swizzle_z(operand a); -ir_swizzle *swizzle_w(operand a); -ir_swizzle *swizzle_xy(operand a); -ir_swizzle *swizzle_xyz(operand a); -ir_swizzle *swizzle_xyzw(operand a); - -ir_if *if_tree(operand condition, - ir_instruction *then_branch); -ir_if *if_tree(operand condition, - ir_instruction *then_branch, - ir_instruction *else_branch); - -} /* namespace ir_builder */ |