Lines Matching refs:block
31 /* Keeps track of conditional / partial writes in a block */
49 vir_setup_use(struct v3d_compile *c, struct qblock *block, int ip,
60 /* The use[] bitset marks when the block makes
62 * defined that variable within the block.
64 if (!BITSET_TEST(block->def, var)) {
67 * in the same block partially defining var then we
68 * consider var completely defined within the block.
70 if (BITSET_TEST(block->defout, var)) {
81 BITSET_SET(block->use, var);
86 * block completely screens off previous updates of
90 vir_setup_def(struct v3d_compile *c, struct qblock *block, int ip,
104 /* Mark the block as having a (partial) def of the var. */
105 BITSET_SET(block->defout, var);
108 * uses, or already used it within the block, there's nothing to do.
110 if (BITSET_TEST(block->use, var) || BITSET_TEST(block->def, var))
118 BITSET_SET(block->def, var);
142 * defined-before-used in the block.
155 vir_for_each_block(block, c) {
156 block->start_ip = ip;
163 vir_for_each_inst(inst, block) {
165 vir_setup_use(c, block, ip, partial_update,
169 vir_setup_def(c, block, ip, partial_update,
198 block->end_ip = ip;
209 vir_for_each_block_rev(block, c) {
214 vir_for_each_successor(succ, block) {
217 ~block->live_out[i]);
219 block->live_out[i] |= new_live_out;
227 BITSET_WORD new_live_in = (block->use[i] |
228 (block->live_out[i] &
229 ~block->def[i]));
230 if (new_live_in & ~block->live_in[i]) {
231 block->live_in[i] |= new_live_in;
245 vir_for_each_block_rev(block, c) {
253 vir_for_each_successor(succ, block) {
255 BITSET_WORD new_def = (block->defout[i] &
274 vir_for_each_block(block, c) {
276 if (BITSET_TEST(block->live_in, i) &&
277 BITSET_TEST(block->defin, i)) {
279 block->start_ip);
281 block->start_ip);
284 if (BITSET_TEST(block->live_out, i) &&
285 BITSET_TEST(block->defout, i)) {
287 block->end_ip);
289 block->end_ip);
307 vir_for_each_block(block, c) {
308 ralloc_free(block->def);
309 ralloc_free(block->use);
310 ralloc_free(block->live_in);
311 ralloc_free(block->live_out);
323 vir_for_each_block(block, c) {
324 block->def = rzalloc_array(c, BITSET_WORD, bitset_words);
325 block->defin = rzalloc_array(c, BITSET_WORD, bitset_words);
326 block->defout = rzalloc_array(c, BITSET_WORD, bitset_words);
327 block->use = rzalloc_array(c, BITSET_WORD, bitset_words);
328 block->live_in = rzalloc_array(c, BITSET_WORD, bitset_words);
329 block->live_out = rzalloc_array(c, BITSET_WORD, bitset_words);