/third_party/ltp/tools/sparse/sparse-src/ |
H A D | unssa.c | 5 * 1) For each phi-node, replace all their phisrc by copies to a common 7 * 2) Replace all the phi-nodes by copies of the temporaries to the phi-node target. 8 * This is node to preserve the semantic of the phi-node (they should all "execute" 13 * at the place where the phi-node operands are defined. 24 * But for this we need precise liveness, on each %phi and not only on OP_PHI's 37 static int simplify_phi_node(struct instruction *phi, pseudo_t tmp) in simplify_phi_node() argument 39 pseudo_t target = phi->target; in simplify_phi_node() 43 // verify if this phi can be simplified in simplify_phi_node() 44 FOR_EACH_PTR(phi in simplify_phi_node() 63 replace_phi_node(struct instruction *phi) replace_phi_node() argument [all...] |
H A D | memops.c | 23 pseudo_t phi; in rewrite_load_instruction() local 27 * phi nodes. in rewrite_load_instruction() 29 FOR_EACH_PTR(dominators, phi) { in rewrite_load_instruction() 31 new = phi->def->phi_src; in rewrite_load_instruction() 32 else if (new != phi->def->phi_src) in rewrite_load_instruction() 34 } END_FOR_EACH_PTR(phi); in rewrite_load_instruction() 37 * All the same pseudo - mark the phi-nodes unused in rewrite_load_instruction() 42 FOR_EACH_PTR(dominators, phi) { in rewrite_load_instruction() 43 kill_instruction(phi->def); in rewrite_load_instruction() 44 } END_FOR_EACH_PTR(phi); in rewrite_load_instruction() 65 pseudo_t phi; find_dominating_parents() local 188 pseudo_t phi; simplify_loads() local [all...] |
H A D | ssa.c | 193 // they can easily be rewritten and doesn't need phi-nodes in ssa_convert_one_var() 333 pseudo_t phi = phisrc->target; in ssa_rename_phi() local 334 phi->ident = var->ident; in ssa_rename_phi() 336 link_phi(insn, phi); in ssa_rename_phi() 343 struct instruction *phi; in ssa_rename_phis() local 346 FOR_EACH_PTR(phis_all, phi) { in ssa_rename_phis() 347 if (has_users(phi->target)) { in ssa_rename_phis() 348 phi->used = 1; in ssa_rename_phis() 349 add_instruction(&phis_used, phi); in ssa_rename_phis() 351 } END_FOR_EACH_PTR(phi); in ssa_rename_phis() [all...] |
H A D | flow.c | 26 // remove phi-sources from a removed edge 30 // This function will only remove a single phi-source per edge. 37 pseudo_t phi; in remove_phisources() local 44 // found a phi-node in the target BB, in remove_phisources() 45 // now look after its phi-sources. in remove_phisources() 46 FOR_EACH_PTR(insn->phi_list, phi) { in remove_phisources() 47 struct instruction *phisrc = phi->def; in remove_phisources() 49 if (phi == VOID) in remove_phisources() 54 // found a phi-source corresponding to this edge: in remove_phisources() 56 REPLACE_CURRENT_PTR(phi, VOI in remove_phisources() 197 pseudo_t phi; phi_check() local 227 pseudo_t phi; try_to_simplify_bb() local 849 pseudo_t phi; remove_merging_phisrc() local 871 pseudo_t phi; remove_merging_phi() local [all...] |
/third_party/mesa3d/src/amd/compiler/ |
H A D | aco_lower_phis.cpp | 100 /* Return if this was handled in a recursive call by a loop header phi */ in get_ssa() 109 /* create phi */ in get_ssa() 110 aco_ptr<Pseudo_instruction> phi{ in get_ssa() 113 phi->operands[i] = ops[i]; in get_ssa() 114 phi->definitions[0] = Definition(op.getTemp()); in get_ssa() 115 block.instructions.emplace(block.instructions.begin(), std::move(phi)); in get_ssa() 196 init_any_pred_defined(Program* program, ssa_state* state, Block* block, aco_ptr<Instruction>& phi) in init_any_pred_defined() argument 200 if (phi->operands[i].isUndefined()) in init_any_pred_defined() 203 if (phi->operands[i].isConstant()) in init_any_pred_defined() 204 defined = phi in init_any_pred_defined() 252 lower_divergent_bool_phi(Program* program, ssa_state* state, Block* block, aco_ptr<Instruction>& phi) lower_divergent_bool_phi() argument 312 lower_subdword_phis(Program* program, Block* block, aco_ptr<Instruction>& phi) lower_subdword_phis() argument [all...] |
/third_party/mesa3d/src/compiler/nir/ |
H A D | nir_lower_phis_to_scalar.c | 31 * 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 */ in is_phi_src_scalarizable() 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) should_lower_phi() argument 210 nir_phi_instr *phi = nir_instr_as_phi(instr); lower_phis_to_scalar_block() local [all...] |
H A D | nir_opt_phi_precision.c | 28 * 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) try_move_narrowing_dst() argument 302 find_widening_op(nir_phi_instr *phi, unsigned *bit_size) find_widening_op() argument 365 try_move_widening_src(nir_builder *b, nir_phi_instr *phi) try_move_widening_src() argument 437 lower_phi(nir_builder *b, nir_phi_instr *phi) lower_phi() argument [all...] |
H A D | nir_phi_builder.c | 40 /* 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 in nir_phi_builder_add_value() 157 /* Instead of creating a phi node immediately, we simply set the in nir_phi_builder_add_value() 158 * value to the magic value NEEDS_PHI. Later, we create phi nodes in nir_phi_builder_add_value() 216 /* The magic value NEEDS_PHI indicates that the block needs a phi nod in nir_phi_builder_value_get_block_def() 234 nir_phi_instr *phi = nir_phi_instr_create(val->builder->shader); nir_phi_builder_value_get_block_def() local 281 nir_phi_instr *phi = exec_node_data(nir_phi_instr, head, instr.node); nir_phi_builder_finish() local [all...] |
H A D | nir_opt_peephole_select.c | 41 * phi 43 * phi 311 nir_phi_instr *phi = nir_instr_as_phi(instr); in nir_opt_collapse_if() local 313 nir_phi_get_src_from_block(phi, nir_if_first_else_block(if_stmt)); in nir_opt_collapse_if() 315 nir_foreach_use (src, &phi->dest.ssa) { in nir_opt_collapse_if() 343 nir_phi_instr *phi = nir_instr_as_phi(instr); in nir_opt_collapse_if() local 345 nir_phi_get_src_from_block(phi, nir_if_first_else_block(if_stmt)); in nir_opt_collapse_if() 346 nir_foreach_use_safe(src, &phi->dest.ssa) { in nir_opt_collapse_if() 352 nir_src_for_ssa(&phi->dest.ssa)); in nir_opt_collapse_if() 433 * statement containing only moves to phi node in nir_opt_peephole_select_block() 458 nir_phi_instr *phi = nir_instr_as_phi(instr); nir_opt_peephole_select_block() local [all...] |
H A D | nir_split_64bit_vec3_and_vec4.c | 35 * splits phi nodes accordingly. 71 nir_phi_instr *phi = nir_instr_as_phi(instr); in nir_split_64bit_vec3_and_vec4_filter() local 72 if (nir_dest_bit_size(phi->dest) != 64) in nir_split_64bit_vec3_and_vec4_filter() 74 return nir_dest_num_components(phi->dest) >= 3; in nir_split_64bit_vec3_and_vec4_filter() 224 split_phi(nir_builder *b, nir_phi_instr *phi) in split_phi() argument 226 nir_op vec_op = nir_op_vec(phi->dest.ssa.num_components); in split_phi() 230 phi->dest.ssa.num_components, in split_phi() 232 vec->dest.write_mask = (1 << phi->dest.ssa.num_components) - 1; in split_phi() 234 int num_comp[2] = {2, phi->dest.ssa.num_components - 2}; in split_phi() 241 phi in split_phi() 306 nir_phi_instr *phi = nir_instr_as_phi(instr); nir_split_64bit_vec3_and_vec4_impl() local [all...] |
H A D | nir_lower_bit_size.c | 205 lower_phi_instr(nir_builder *b, nir_phi_instr *phi, unsigned bit_size, in lower_phi_instr() argument 208 assert(phi->dest.is_ssa); in lower_phi_instr() 209 unsigned old_bit_size = phi->dest.ssa.bit_size; in lower_phi_instr() 212 nir_foreach_phi_src(src, phi) { in lower_phi_instr() 217 nir_instr_rewrite_src(&phi->instr, &src->src, nir_src_for_ssa(new_src)); in lower_phi_instr() 220 phi->dest.ssa.bit_size = bit_size; in lower_phi_instr() 224 nir_ssa_def *new_dest = nir_u2u(b, &phi->dest.ssa, old_bit_size); in lower_phi_instr() 225 nir_ssa_def_rewrite_uses_after(&phi->dest.ssa, new_dest, in lower_phi_instr() 239 /* Stash this so we can rewrite phi destinations quickly. */ in lower_impl() 295 split_phi(nir_builder *b, nir_phi_instr *phi) in split_phi() argument 343 nir_phi_instr *phi = nir_instr_as_phi(instr); lower_64bit_phi_impl() local [all...] |
/third_party/node/deps/v8/src/compiler/ |
H A D | loop-variable-optimizer.cc | 80 StdoutStream{} << "New upper bound for " << phi()->id() << " (loop " in AddUpperBound() 81 << NodeProperties::GetControlInput(phi())->id() in AddUpperBound() 90 StdoutStream{} << "New lower bound for " << phi()->id() << " (loop " in AddLowerBound() 91 << NodeProperties::GetControlInput(phi())->id() in AddLowerBound() 223 InductionVariable* LoopVariableOptimizer::TryGetInductionVariable(Node* phi) { in TryGetInductionVariable() argument 224 DCHECK_EQ(2, phi->op()->ValueInputCount()); in TryGetInductionVariable() 225 Node* loop = NodeProperties::GetControlInput(phi); in TryGetInductionVariable() 227 Node* initial = phi->InputAt(0); in TryGetInductionVariable() 228 Node* arith = phi->InputAt(1); in TryGetInductionVariable() 251 if (input != phi) retur in TryGetInductionVariable() 273 Node* phi = edge.from(); DetectInductionVariables() local [all...] |
/third_party/skia/src/shaders/gradients/ |
H A D | SkSweepGradient.cpp | 77 skvm::F32 phi = slope * poly(s, -7.0547382347285747528076171875e-3f, 81 phi = select( xabs < yabs, (1/4.0f) - phi, phi); 82 phi = select(coord.x < 0.0f, (1/2.0f) - phi, phi); 83 phi = select(coord.y < 0.0f, (1/1.0f) - phi, phi); [all...] |
/third_party/ffmpeg/libavcodec/ |
H A D | sbrdsp.c | 103 float phi[3][2][2], int lag) 113 phi[2-lag][1][0] = real_sum + x[ 0][0] * x[lag][0] + x[ 0][1] * x[lag][1]; 114 phi[2-lag][1][1] = imag_sum + x[ 0][0] * x[lag][1] - x[ 0][1] * x[lag][0]; 116 phi[0][0][0] = real_sum + x[38][0] * x[39][0] + x[38][1] * x[39][1]; 117 phi[0][0][1] = imag_sum + x[38][0] * x[39][1] - x[38][1] * x[39][0]; 123 phi[2][1][0] = real_sum + x[ 0][0] * x[ 0][0] + x[ 0][1] * x[ 0][1]; 124 phi[1][0][0] = real_sum + x[38][0] * x[38][0] + x[38][1] * x[38][1]; 128 static void sbr_autocorrelate_c(const float x[40][2], float phi[3][2][2]) 130 autocorrelate(x, phi, 0); 131 autocorrelate(x, phi, 135 sbr_autocorrelate_c(const float x[40][2], float phi[3][2][2]) sbr_autocorrelate_c() argument [all...] |
H A D | aacsbr.c | 146 LOCAL_ALIGNED_16(float, phi, [3], [2][2]); in sbr_hf_inverse_filter() 149 dsp->autocorrelate(X_low[k], phi); in sbr_hf_inverse_filter() 151 dk = phi[2][1][0] * phi[1][0][0] - in sbr_hf_inverse_filter() 152 (phi[1][1][0] * phi[1][1][0] + phi[1][1][1] * phi[1][1][1]) / 1.000001f; in sbr_hf_inverse_filter() 159 temp_real = phi[0][0][0] * phi[ in sbr_hf_inverse_filter() [all...] |
H A D | aacsbr_fixed.c | 243 SoftFloat phi[3][2][2]; in sbr_hf_inverse_filter() local 247 dsp->autocorrelate(X_low[k], phi); in sbr_hf_inverse_filter() 249 dk = av_sub_sf(av_mul_sf(phi[2][1][0], phi[1][0][0]), in sbr_hf_inverse_filter() 250 av_mul_sf(av_add_sf(av_mul_sf(phi[1][1][0], phi[1][1][0]), in sbr_hf_inverse_filter() 251 av_mul_sf(phi[1][1][1], phi[1][1][1])), FLOAT_0999999)); in sbr_hf_inverse_filter() 258 temp_real = av_sub_sf(av_sub_sf(av_mul_sf(phi[0][0][0], phi[ in sbr_hf_inverse_filter() [all...] |
/third_party/skia/third_party/externals/spirv-tools/source/opt/ |
H A D | if_conversion.cpp | 51 dominators, &block, &vn_table](Instruction* phi) { in Process() 52 // This phi is not compatible, but subsequent phis might be. in Process() 53 if (!CheckType(phi->type_id())) return; in Process() 55 // We cannot transform cases where the phi is used by another phi in the in Process() 58 // transformed, we could still remove this phi. in Process() 59 if (!CheckPhiUsers(phi, &block)) return; in Process() 65 BasicBlock* inc0 = GetIncomingBlock(phi, 0u); in Process() 73 true_value = GetIncomingValue(phi, 0u); in Process() 74 false_value = GetIncomingValue(phi, in Process() 177 CheckPhiUsers(Instruction* phi, BasicBlock* block) CheckPhiUsers() argument 214 GetIncomingBlock(Instruction* phi, uint32_t predecessor) GetIncomingBlock() argument 220 GetIncomingValue(Instruction* phi, uint32_t predecessor) GetIncomingValue() argument [all...] |
/third_party/skia/third_party/externals/swiftshader/third_party/SPIRV-Tools/source/opt/ |
H A D | if_conversion.cpp | 51 dominators, &block, &vn_table](Instruction* phi) { in Process() 52 // This phi is not compatible, but subsequent phis might be. in Process() 53 if (!CheckType(phi->type_id())) return; in Process() 55 // We cannot transform cases where the phi is used by another phi in the in Process() 58 // transformed, we could still remove this phi. in Process() 59 if (!CheckPhiUsers(phi, &block)) return; in Process() 65 BasicBlock* inc0 = GetIncomingBlock(phi, 0u); in Process() 73 true_value = GetIncomingValue(phi, 0u); in Process() 74 false_value = GetIncomingValue(phi, in Process() 177 CheckPhiUsers(Instruction* phi, BasicBlock* block) CheckPhiUsers() argument 214 GetIncomingBlock(Instruction* phi, uint32_t predecessor) GetIncomingBlock() argument 220 GetIncomingValue(Instruction* phi, uint32_t predecessor) GetIncomingValue() argument [all...] |
/third_party/spirv-tools/source/opt/ |
H A D | if_conversion.cpp | 51 dominators, &block, &vn_table](Instruction* phi) { in Process() 52 // This phi is not compatible, but subsequent phis might be. in Process() 53 if (!CheckType(phi->type_id())) return; in Process() 55 // We cannot transform cases where the phi is used by another phi in the in Process() 58 // transformed, we could still remove this phi. in Process() 59 if (!CheckPhiUsers(phi, &block)) return; in Process() 65 BasicBlock* inc0 = GetIncomingBlock(phi, 0u); in Process() 73 true_value = GetIncomingValue(phi, 0u); in Process() 74 false_value = GetIncomingValue(phi, in Process() 186 CheckPhiUsers(Instruction* phi, BasicBlock* block) CheckPhiUsers() argument 224 GetIncomingBlock(Instruction* phi, uint32_t predecessor) GetIncomingBlock() argument 230 GetIncomingValue(Instruction* phi, uint32_t predecessor) GetIncomingValue() argument [all...] |
/third_party/mesa3d/src/compiler/nir/tests/ |
H A D | opt_if_tests.cpp | 104 * vec1 32 ssa_3 = phi block_2: ssa_0 in TEST_F() 124 nir_phi_instr *const phi = nir_phi_instr_create(bld.shader); in TEST_F() local 126 nir_phi_instr_add_src(phi, then_block, nir_src_for_ssa(one)); in TEST_F() 128 nir_ssa_dest_init(&phi->instr, &phi->dest, in TEST_F() 131 nir_builder_instr_insert(&bld, &phi->instr); in TEST_F() 146 nir_phi_instr *phi = nir_phi_instr_create(bld.shader); in TEST_F() local 150 nir_ssa_dest_init(&phi->instr, &phi->dest, in TEST_F() 153 nir_phi_instr_add_src(phi, in TEST_F() [all...] |
H A D | dce_tests.cpp | 52 nir_phi_instr *phi = nir_phi_instr_create(shader); in create_one_source_phi() local 53 nir_phi_instr_add_src(phi, pred, nir_src_for_ssa(def)); in create_one_source_phi() 54 nir_ssa_dest_init(&phi->instr, &phi->dest, in create_one_source_phi() 57 return phi; in create_one_source_phi() 73 * vec1 32 ssa_1 = phi block_1: ssa_0 in TEST_F() 95 nir_phi_instr *phi = create_one_source_phi(bld.shader, one->parent_instr->block, one); in TEST_F() local 96 nir_instr_insert_before_block(one->parent_instr->block, &phi->instr); in TEST_F() 98 nir_store_var(&bld, var, &phi->dest.ssa, 0x1); in TEST_F()
|
/third_party/mesa3d/src/freedreno/ir3/ |
H A D | ir3_array_to_ssa.c | 27 * 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 = in read_value_beginning() local 108 list_del(&phi->node); in read_value_beginning() 109 list_add(&phi->node, &block->instr_list); in read_value_beginning() 111 struct ir3_register *dst = __ssa_dst(phi); in read_value_beginning() 116 state->live_in_definition = phi->dsts[0]; in read_value_beginning() 124 src_reg = __ssa_src(phi, src->instr, flags); in read_value_beginning() 126 src_reg = ir3_src_create(phi, INVALID_REG, flags | IR3_REG_SSA); in read_value_beginning() 131 return phi in read_value_beginning() 135 remove_trivial_phi(struct ir3_instruction *phi) remove_trivial_phi() argument [all...] |
H A D | ir3_merge_regs.c | 28 /* 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) in coalesce_phi() argument 359 for (unsigned i = 0; i < phi->srcs_count; i++) { in coalesce_phi() 360 if (phi->srcs[i]->def) in coalesce_phi() 361 try_merge_defs(live, phi->dsts[0], phi->srcs[i]->def, 0); in coalesce_phi() 408 foreach_instr (phi, &succ->instr_list) { in create_parallel_copy() 409 if (phi->opc != OPC_META_PHI) in create_parallel_copy() 413 if ((phi in create_parallel_copy() [all...] |
H A D | ir3_remove_unreachable.c | 70 foreach_instr (phi, &succ->instr_list) { in delete_block() 71 if (phi->opc != OPC_META_PHI) in delete_block() 75 phi->srcs[pred_idx] = phi->srcs[phi->srcs_count - 1]; in delete_block() 76 phi->srcs_count--; in delete_block()
|
/third_party/skia/third_party/externals/swiftshader/third_party/llvm-10.0/llvm/lib/CodeGen/ |
H A D | UnreachableBlockElim.cpp | 166 MachineBasicBlock::iterator phi = BB->begin(); in runOnMachineFunction() local 167 while (phi != BB->end() && phi->isPHI()) { in runOnMachineFunction() 168 for (unsigned i = phi->getNumOperands() - 1; i >= 2; i-=2) in runOnMachineFunction() 169 if (!preds.count(phi->getOperand(i).getMBB())) { in runOnMachineFunction() 170 phi->RemoveOperand(i); in runOnMachineFunction() 171 phi->RemoveOperand(i-1); in runOnMachineFunction() 175 if (phi->getNumOperands() == 3) { in runOnMachineFunction() 176 const MachineOperand &Input = phi->getOperand(1); in runOnMachineFunction() 177 const MachineOperand &Output = phi in runOnMachineFunction() [all...] |