Lines Matching refs:invert

160  * @invert: What to assign a program entry for its branch condition
168 static void update_preds(struct prog_entry *prog, int N, int invert)
174 prog[t].when_to_branch = invert;
229 * predicate, when_to_branch, invert, target
234 * The "invert" holds whether the value should be reversed before testing.
241 * The possible invert values are 1 and 0. The number of "!"s that are in scope
242 * before the predicate determines the invert value, if the number is odd then
243 * the invert value is 1 and 0 otherwise. This means the invert value only
247 * The top of the stack and "invert" are initialized to zero.
254 * gets the current invert value, and the loop continues to the next token.
255 * The top of the stack saves the "invert" value to keep track of what
260 * #3 If the token is an "!", the current "invert" value gets inverted, and
262 * this "invert" value is only valid for the current program entry,
268 * current value of "invert". The target is currently assigned to the
274 * #6 The invert variable is reset to the current value saved on the top of
277 * #7 The top of the stack holds not only the current invert value, but also
283 * the program, and the current value of "invert". More will be described
292 * this time with an inverted value of "invert" (that is !invert). This is
325 * That entry's "when_to_branch" is set to the value passed in (the "invert"
326 * or "!invert"). Then it sets the current program entry's target to the saved
337 * update_preds(prog, 2, 0); // invert = 0 as we are processing "&&"
343 * update_preds(prog, 2, 1); // invert = 1 as we are now processing "||"
440 * program to that does: "when_to_branch ^= invert;" will do the
480 int invert = 0;
519 *(++top) = invert;
524 invert = !invert;
533 inverts[N] = invert; /* #4 */
569 invert = *top & INVERT;
572 update_preds(prog, N - 1, invert);
580 update_preds(prog, N - 1, !invert);
629 invert = inverts[i] ^ prog[i].when_to_branch;
630 prog[i].when_to_branch = invert;