Searched refs:phi (Results 1 - 25 of 175) sorted by relevance

1234567

/xsrc/external/mit/mesa-demos/dist/src/util/
H A Dtrackball.h81 axis_to_quat(const float a[3], float phi, float q[4]);
/xsrc/external/mit/MesaLib/dist/src/compiler/nir/tests/
H A Dopt_if_tests.cpp104 * vec1 32 ssa_3 = phi block_2: ssa_0
124 nir_phi_instr *const phi = nir_phi_instr_create(bld.shader); local in function:TEST_F
126 nir_phi_instr_add_src(phi, then_block, nir_src_for_ssa(one));
128 nir_ssa_dest_init(&phi->instr, &phi->dest,
131 nir_builder_instr_insert(&bld, &phi->instr);
146 nir_phi_instr *phi = nir_phi_instr_create(bld.shader); local in function:TEST_F
150 nir_ssa_dest_init(&phi->instr, &phi->dest,
153 nir_phi_instr_add_src(phi,
[all...]
H A Dlower_returns_tests.cpp57 nir_phi_instr *phi = nir_phi_instr_create(shader); local in function:create_one_source_phi
59 nir_phi_instr_add_src(phi, pred, nir_src_for_ssa(def));
61 nir_ssa_dest_init(&phi->instr, &phi->dest,
64 return phi;
89 * vec1 32 ssa_4 = phi block_3: ssa_1
90 * vec1 32 ssa_5 = phi block_3: ssa_1
159 * vec1 32 ssa_4 = phi block_6: ssa_1
160 * vec1 32 ssa_5 = phi block_6: ssa_1
/xsrc/external/mit/MesaLib/dist/src/compiler/nir/
H A Dnir_lower_phis_to_scalar.c31 * Implements a pass that lowers vector phi nodes to scalar phi nodes when
42 /* Hash table marking which phi nodes are scalarizable. The key is
43 * pointers to phi instructions and the entry is either NULL for not
50 should_lower_phi(nir_phi_instr *phi, struct lower_phis_to_scalar_state *state);
75 /* A phi is scalarizable if we're going to lower it */
125 * Determines if the given phi node should be lowered. The only phi nodes
129 * The reason for this comes down to coalescing. Since phi sources can't
131 * before the phi
146 should_lower_phi(nir_phi_instr * phi,struct lower_phis_to_scalar_state * state) argument
210 nir_phi_instr *phi = nir_instr_as_phi(instr); local in function:lower_phis_to_scalar_block
[all...]
H A Dnir_opt_phi_precision.c28 * This pass tries to reduce the bitsize of phi instructions by either
29 * moving narrowing conversions from the phi's consumers to the phi's
30 * sources, if all the uses of the phi are equivalent narrowing
37 * vec1 32 ssa_155 = phi block_0: ssa_124, block_4: ssa_53
50 * vec1 16 ssa_8 = phi block_0: ssa_156, block_4: ssa_157
56 * Or failing that, tries to push widening conversion of phi srcs to
57 * the phi def. In this case, since load_const is frequently one
58 * of the phi sources this pass checks if can be narrowed without a
65 * vec1 32 ssa_8 = phi block_
195 try_move_narrowing_dst(nir_builder * b,nir_phi_instr * phi) argument
304 find_widening_op(nir_phi_instr * phi,unsigned * bit_size) argument
367 try_move_widening_src(nir_builder * b,nir_phi_instr * phi) argument
439 lower_phi(nir_builder * b,nir_phi_instr * phi) argument
[all...]
H A Dnir_opt_remove_phis.c52 * This is a pass for removing phi nodes that look like:
53 * a = phi(b, b, b, ...)
58 * phi node's predecessors, which means it must dominate the phi node as well
59 * as all of the phi node's uses. In essence, the phi node acts as a copy
60 * instruction. b can't be another phi node in the same block, since the only
61 * time when phi nodes can source other phi nodes defined in the same block is
62 * at the loop header, and in that case one of the sources of the phi ha
75 nir_phi_instr *phi = nir_instr_as_phi(instr); local in function:remove_phis_block
[all...]
H A Dnir_phi_builder.c40 /* Worklist for phi adding */
57 /* The list of phi nodes associated with this value. Phi nodes are not
71 * - NEEDS_PHI. Indicates that the block may need a phi node but none has
72 * been created yet. If a def is requested for a block, a phi will need
75 * - A regular SSA def. This will be either the result of a phi node or
149 * phi nodes. Of course, we couldn't place those phi nodes
157 /* Instead of creating a phi node immediately, we simply set the
158 * value to the magic value NEEDS_PHI. Later, we create phi nodes
216 /* The magic value NEEDS_PHI indicates that the block needs a phi nod
234 nir_phi_instr *phi = nir_phi_instr_create(val->builder->shader); local in function:nir_phi_builder_value_get_block_def
281 nir_phi_instr *phi = exec_node_data(nir_phi_instr, head, instr.node); local in function:nir_phi_builder_finish
[all...]
H A Dnir_opt_peephole_select.c41 * phi
43 * phi
309 nir_phi_instr *phi = nir_instr_as_phi(instr); local in function:nir_opt_collapse_if
311 nir_phi_get_src_from_block(phi, nir_if_first_else_block(if_stmt));
313 nir_foreach_use (src, &phi->dest.ssa) {
341 nir_phi_instr *phi = nir_instr_as_phi(instr); local in function:nir_opt_collapse_if
343 nir_phi_get_src_from_block(phi, nir_if_first_else_block(if_stmt));
344 nir_foreach_use_safe(src, &phi->dest.ssa) {
350 nir_src_for_ssa(&phi->dest.ssa));
431 * statement containing only moves to phi node
456 nir_phi_instr *phi = nir_instr_as_phi(instr); local in function:nir_opt_peephole_select_block
[all...]
H A Dnir_lower_bit_size.c205 lower_phi_instr(nir_builder *b, nir_phi_instr *phi, unsigned bit_size, argument
208 assert(phi->dest.is_ssa);
209 unsigned old_bit_size = phi->dest.ssa.bit_size;
212 nir_foreach_phi_src(src, phi) {
217 nir_instr_rewrite_src(&phi->instr, &src->src, nir_src_for_ssa(new_src));
220 phi->dest.ssa.bit_size = bit_size;
224 nir_ssa_def *new_dest = nir_u2u(b, &phi->dest.ssa, old_bit_size);
225 nir_ssa_def_rewrite_uses_after(&phi->dest.ssa, new_dest,
239 /* Stash this so we can rewrite phi destinations quickly. */
295 split_phi(nir_builder *b, nir_phi_instr *phi) argument
343 nir_phi_instr *phi = nir_instr_as_phi(instr); local in function:lower_64bit_phi_impl
[all...]
H A Dnir_divergence_analysis.c753 /* There are 3 types of phi instructions:
759 visit_if_merge_phi(nir_phi_instr *phi, bool if_cond_divergent) argument
761 if (phi->dest.ssa.divergent)
765 nir_foreach_phi_src(src, phi) {
768 phi->dest.ssa.divergent = true;
778 phi->dest.ssa.divergent = true;
785 /* There are 3 types of phi instructions:
792 visit_loop_header_phi(nir_phi_instr *phi, nir_block *preheader, bool divergent_continue) argument
794 if (phi->dest.ssa.divergent)
798 nir_foreach_phi_src(src, phi) {
833 visit_loop_exit_phi(nir_phi_instr * phi,bool divergent_break) argument
905 nir_phi_instr *phi = nir_instr_as_phi(instr); local in function:visit_loop
[all...]
/xsrc/external/mit/MesaLib.old/dist/src/compiler/nir/
H A Dnir_lower_phis_to_scalar.c31 * Implements a pass that lowers vector phi nodes to scalar phi nodes when
39 /* Hash table marking which phi nodes are scalarizable. The key is
40 * pointers to phi instructions and the entry is either NULL for not
47 should_lower_phi(nir_phi_instr *phi, struct lower_phis_to_scalar_state *state);
74 /* A phi is scalarizable if we're going to lower it */
121 * Determines if the given phi node should be lowered. The only phi nodes
125 * The reason for this comes down to coalescing. Since phi sources can't
127 * before the phi
142 should_lower_phi(nir_phi_instr * phi,struct lower_phis_to_scalar_state * state) argument
203 nir_phi_instr *phi = nir_instr_as_phi(instr); local in function:lower_phis_to_scalar_block
[all...]
H A Dnir_phi_builder.c40 /* Worklist for phi adding */
57 /* The list of phi nodes associated with this value. Phi nodes are not
71 * - NEEDS_PHI. Indicates that the block may need a phi node but none has
72 * been created yet. If a def is requested for a block, a phi will need
75 * - A regular SSA def. This will be either the result of a phi node or
150 * phi nodes. Of course, we couldn't place those phi nodes
158 /* Instead of creating a phi node immediately, we simply set the
159 * value to the magic value NEEDS_PHI. Later, we create phi nodes
217 /* The magic value NEEDS_PHI indicates that the block needs a phi nod
235 nir_phi_instr *phi = nir_phi_instr_create(val->builder->shader); local in function:nir_phi_builder_value_get_block_def
294 nir_phi_instr *phi = exec_node_data(nir_phi_instr, head, instr.node); local in function:nir_phi_builder_finish
[all...]
H A Dnir_opt_remove_phis.c52 * This is a pass for removing phi nodes that look like:
53 * a = phi(b, b, b, ...)
58 * phi node's predecessors, which means it must dominate the phi node as well
59 * as all of the phi node's uses. In essence, the phi node acts as a copy
60 * instruction. b can't be another phi node in the same block, since the only
61 * time when phi nodes can source other phi nodes defined in the same block is
62 * at the loop header, and in that case one of the sources of the phi ha
75 nir_phi_instr *phi = nir_instr_as_phi(instr); local in function:remove_phis_block
[all...]
H A Dnir_opt_peephole_select.c39 * phi
41 * phi
224 * statement containing only moves to phi nodes in this block. We can
225 * just remove that entire CF node and replace all of the phi nodes with
251 nir_phi_instr *phi = nir_instr_as_phi(instr); local in function:nir_opt_peephole_select_block
257 assert(exec_list_length(&phi->srcs) == 2);
258 nir_foreach_phi_src(src, phi) {
267 phi->dest.ssa.num_components,
268 phi->dest.ssa.bit_size, phi
[all...]
H A Dnir_to_lcssa.c26 * done by placing phi nodes at the exits of the loop for all values
35 * ssa6 = ssa2 + 4 -> ssa5 = phi(ssa2)
114 /* Initialize a phi-instruction */
115 nir_phi_instr *phi = nir_phi_instr_create(state->shader); local in function:convert_loop_exit_for_ssa
116 nir_ssa_dest_init(&phi->instr, &phi->dest,
117 def->num_components, def->bit_size, "LCSSA-phi");
119 /* Create a phi node with as many sources pointing to the same ssa_def as
123 nir_phi_src *phi_src = ralloc(phi, nir_phi_src);
127 exec_list_push_tail(&phi
[all...]
H A Dnir_move_load_const.c58 * Kind of an ugly special-case, but phi instructions
61 * consumed by a phi instruction. We could conceivably
65 nir_phi_instr *phi = nir_instr_as_phi(instr); local in function:get_preferred_block
67 nir_foreach_phi_src(src, phi)
78 /* insert before first non-phi instruction: */
93 * a block only containing phi's?)
/xsrc/external/mit/MesaLib/dist/src/freedreno/ir3/
H A Dir3_remove_unreachable.c70 foreach_instr (phi, &succ->instr_list) {
71 if (phi->opc != OPC_META_PHI)
75 phi->srcs[pred_idx] = phi->srcs[phi->srcs_count - 1];
76 phi->srcs_count--;
H A Dir3_array_to_ssa.c27 * the array defined in instr->dsts[0]->def (possibly a phi node), perform the
35 * insert the phi nodes to be able to know when copying should happen.
106 struct ir3_instruction *phi = local in function:read_value_beginning
108 list_del(&phi->node);
109 list_add(&phi->node, &block->instr_list);
111 struct ir3_register *dst = __ssa_dst(phi);
116 state->live_in_definition = phi->dsts[0];
124 src_reg = __ssa_src(phi, src->instr, flags);
126 src_reg = ir3_src_create(phi, INVALID_REG, flags | IR3_REG_SSA);
131 return phi
135 remove_trivial_phi(struct ir3_instruction * phi) argument
[all...]
H A Dir3_merge_regs.c28 /* This pass "merges" compatible phi-web SSA values. First, we insert a bunch
31 * single register in order to eliminate copies. First we merge phi nodes,
357 coalesce_phi(struct ir3_liveness *live, struct ir3_instruction *phi) argument
359 for (unsigned i = 0; i < phi->srcs_count; i++) {
360 if (phi->srcs[i]->def)
361 try_merge_defs(live, phi->dsts[0], phi->srcs[i]->def, 0);
408 foreach_instr (phi, &succ->instr_list) {
409 if (phi->opc != OPC_META_PHI)
413 if ((phi
[all...]
/xsrc/external/mit/MesaLib/dist/src/amd/compiler/
H A Daco_lower_phis.cpp100 /* Return if this was handled in a recursive call by a loop header phi */
109 /* create phi */
110 aco_ptr<Pseudo_instruction> phi{ local in function:aco::get_ssa
113 phi->operands[i] = ops[i];
114 phi->definitions[0] = Definition(op.getTemp());
115 block.instructions.emplace(block.instructions.begin(), std::move(phi));
196 init_any_pred_defined(Program* program, ssa_state* state, Block* block, aco_ptr<Instruction>& phi) argument
200 if (phi->operands[i].isUndefined())
203 if (phi->operands[i].isConstant())
204 defined = phi
252 lower_divergent_bool_phi(Program * program,ssa_state * state,Block * block,aco_ptr<Instruction> & phi) argument
312 lower_subdword_phis(Program * program,Block * block,aco_ptr<Instruction> & phi) argument
[all...]
/xsrc/external/mit/MesaLib.old/dist/src/gallium/drivers/r600/sb/
H A Dsb_if_conversion.cpp182 for (node_iterator I = r->phi->begin(), E = r->phi->end(); I != E; ++I) {
264 // swap phi operands
265 for (node_iterator I = r->phi->begin(), E = r->phi->end(); I != E;
276 alu_node* if_conversion::convert_phi(value* select, node* phi) { argument
277 assert(phi->dst.size() == 1 || phi->src.size() == 2);
279 value *d = phi->dst[0];
280 value *v1 = phi
[all...]
H A Dsb_liveness.cpp116 if (n.phi)
117 process_phi_outs(n.phi);
163 if(n.target->phi)
164 process_phi_branch(n.target->phi, n.dep_id);
375 void liveness::process_phi_outs(container_node *phi) { argument
376 for (node_iterator I = phi->begin(), E = phi->end(); I != E; ++I) {
388 void liveness::process_phi_branch(container_node* phi, unsigned id) { argument
390 for (node_iterator I = phi->begin(), E = phi
[all...]
/xsrc/external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/
H A Dsb_if_conversion.cpp182 for (node_iterator I = r->phi->begin(), E = r->phi->end(); I != E; ++I) {
264 // swap phi operands
265 for (node_iterator I = r->phi->begin(), E = r->phi->end(); I != E;
276 alu_node* if_conversion::convert_phi(value* select, node* phi) { argument
277 assert(phi->dst.size() == 1 || phi->src.size() == 2);
279 value *d = phi->dst[0];
280 value *v1 = phi
[all...]
H A Dsb_liveness.cpp116 if (n.phi)
117 process_phi_outs(n.phi);
163 if(n.target->phi)
164 process_phi_branch(n.target->phi, n.dep_id);
375 void liveness::process_phi_outs(container_node *phi) { argument
376 for (node_iterator I = phi->begin(), E = phi->end(); I != E; ++I) {
388 void liveness::process_phi_branch(container_node* phi, unsigned id) { argument
390 for (node_iterator I = phi->begin(), E = phi
[all...]
/xsrc/external/mit/x11perf/dist/
H A Ddo_complex.c44 double phi, phiinc, radius, delta, phi2; local in function:InitComplexPoly
50 phi = 0.0;
76 phi2 = phi + ((double) j) * delta;
85 phi += phiinc;
129 double phi, phiinc, inner_radius, outer_radius, delta, phi2; local in function:InitGeneralPoly
135 phi = 0.0;
148 phi2 = phi;
155 phi += phiinc;

Completed in 14 milliseconds

1234567