Lines Matching defs:value
62 return is_power_of_2(src->value);
195 // and the set of all operands involved contains a single value
435 // is this same signed value when interpreted with both size?
468 // @new: the new value for the operand
504 // replace rightside's value
590 static unsigned int value_size(long long value)
592 value >>= 8;
593 if (!value)
595 value >>= 8;
596 if (!value)
598 value >>= 16;
599 if (!value)
622 unsigned int orig_size = value_size(pseudo->value);
632 long long left = src1->value;
633 long long right = src2->value;
788 omask = src2->value;
830 unsigned long long oval = src2->value;
859 int shift = sh->src2->value;
911 static int simplify_shift(struct instruction *insn, pseudo_t pseudo, long long value)
919 if (!value)
921 value = check_shift_count(insn, value);
922 if (value < 0)
928 if (value >= size)
941 nval = src2->value;
944 value += nval;
947 else if (value >= size)
948 value = size - 1;
964 if (value >= size)
972 mask = bits_mask(insn->size - value) << value;
973 omask = def->src2->value;
984 insn->src2 = value_pseudo(omask >> value);
996 mask = bits_mask(insn->size - value);
1001 if (value >= size)
1008 mask = bits_mask(insn->size) >> value;
1009 omask = def->src2->value;
1022 mask = bits_mask(insn->size - value) << value;
1034 nval = src2->value;
1037 value += nval;
1045 if (value < size) {
1046 insn->src2 = value_pseudo(value);
1057 static int simplify_mul_div(struct instruction *insn, long long value)
1062 if (value == 1)
1067 if (value == 0)
1071 if (!(value & sbit)) // positive
1074 value |= ~bits;
1075 if (value == -1) {
1084 static int simplify_seteq_setne(struct instruction *insn, long long value)
1092 if (value != 0 && value != 1)
1101 inverse = (insn->opcode == OP_SET_NE) == value;
1119 if (def->src2->value != 1)
1138 if (value && (def->orig_type->bit_size == 1))
1170 static int simplify_compare_constant(struct instruction *insn, long long value)
1181 if (!value)
1183 if (value == sign_bit(size)) // (x < SMIN) --> 0
1185 if (value == sign_mask(size)) // (x < SMAX) --> (x != SMAX)
1187 if (value == sign_bit(size) + 1)// (x < SMIN + 1) --> (x == SMIN)
1189 if (!(value & sign_bit(size)))
1190 changed |= replace_binop_value(insn, OP_SET_LE, (value - 1) & bits);
1193 if (!value)
1195 if (value == sign_mask(size)) // (x <= SMAX) --> 1
1197 if (value == sign_bit(size)) // (x <= SMIN) --> (x == SMIN)
1199 if (value == sign_mask(size) - 1) // (x <= SMAX - 1) --> (x != SMAX)
1201 if (value & sign_bit(size))
1202 changed |= replace_binop_value(insn, OP_SET_LT, (value + 1) & bits);
1205 if (!value)
1207 if (value == sign_bit(size)) // (x >= SMIN) --> 1
1209 if (value == sign_mask(size)) // (x >= SMAX) --> (x == SMAX)
1211 if (value == sign_bit(size) + 1)// (x >= SMIN + 1) --> (x != SMIN)
1213 if (!(value & sign_bit(size)))
1214 changed |= replace_binop_value(insn, OP_SET_GT, (value - 1) & bits);
1217 if (!value)
1219 if (value == sign_mask(size)) // (x > SMAX) --> 0
1221 if (value == sign_bit(size)) // (x > SMIN) --> (x != SMIN)
1223 if (value == sign_mask(size) - 1) // (x > SMAX - 1) --> (x == SMAX)
1225 if (value & sign_bit(size))
1226 changed |= replace_binop_value(insn, OP_SET_GE, (value + 1) & bits);
1230 if (!value) // (x < 0) --> 0
1232 if (value == 1) // (x < 1) --> (x == 0)
1234 else if (value == bits) // (x < ~0) --> (x != ~0)
1235 return replace_binop_value(insn, OP_SET_NE, value);
1237 changed |= replace_binop_value(insn, OP_SET_BE, (value - 1) & bits);
1240 if (!value) // (x >= 0) --> 1
1242 if (value == 1) // (x >= 1) --> (x != 0)
1244 else if (value == bits) // (x >= ~0) --> (x == ~0)
1245 return replace_binop_value(insn, OP_SET_EQ, value);
1247 changed |= replace_binop_value(insn, OP_SET_A, (value - 1) & bits);
1250 if (!value) // (x <= 0) --> (x == 0)
1252 if (value == bits) // (x <= ~0) --> 1
1254 if (value == (bits - 1)) // (x <= ~1) --> (x != ~0)
1256 if (value == (bits >> 1)) // (x u<= SMAX) --> (x s>= 0)
1260 if (!value) // (x > 0) --> (x != 0)
1262 if (value == bits) // (x > ~0) --> 0
1264 if (value == (bits - 1)) // (x > ~1) --> (x == ~0)
1266 if (value == (bits >> 1)) // (x u> SMAX) --> (x s< 0)
1273 value = src2->value;
1278 bits = def->src2->value;
1281 if ((value & bits) != value)
1283 if (value == bits && is_power_of_2(bits))
1287 if ((value & bits) != value)
1289 if (value == bits && is_power_of_2(bits))
1293 value = sign_extend(value, def->size);
1295 value -= 1;
1298 if (value < 0)
1300 if (value >= (long long)bits)
1302 if (value == 0)
1306 value = sign_extend(value, def->size);
1308 value -= 1;
1311 if (value < 0)
1313 if (value >= (long long)bits)
1315 if (value == 0)
1319 if (value > bits)
1323 if (value >= bits)
1327 if (value > bits)
1331 if (value >= bits)
1339 bits = def->src2->value;
1342 if ((value & bits) != bits)
1346 if ((value & bits) != bits)
1350 if (bits >= value)
1354 if (bits > value)
1358 if (bits > value)
1362 if (bits >= value)
1366 value -= 1;
1369 value = sign_extend(value, def->size);
1370 if (value >= -1)
1375 value -= 1;
1378 value = sign_extend(value, def->size);
1379 if (value >= -1)
1387 if (is_signed_constant(value, osize, size)) {
1389 insn->src2 = value_pseudo(zero_extend(value, osize));
1394 if (value >= sign_bit(osize)) {
1401 if (value >= sign_bit(osize)) {
1408 if (value < sign_bit(size))
1414 if (value < sign_bit(size))
1438 if (value <= bits) {
1447 if (sign_extend(value, size) > (long long)bits)
1453 if (sign_extend(value, size) > (long long)bits)
1524 long long value = insn->src2->value;
1531 if ((value & bits) == bits)
1536 if ((value & bits) == bits) {
1542 if (!value)
1552 if (!value)
1560 return simplify_shift(insn, insn->src1, value);
1563 if (value == 1)
1569 return simplify_mul_div(insn, value);
1572 if (!value)
1574 if ((value & bits) == bits)
1576 return simplify_constant_mask(insn, value);
1580 if ((changed = simplify_seteq_setne(insn, value)))
1585 return simplify_compare_constant(insn, value);
1616 long long value = insn->src1->value;
1620 if (!value)
1628 if (!value)
1632 if (!value) // (0 - x) --> -x
2101 long long val = insn->src1->value;
2238 insn->offset += off->value;
2292 mask = val->value;
2298 if (val->value & (1 << (def->size - 1)))
2436 return replace_with_pseudo(insn, cond->value ? src1 : src2);
2441 long long val1 = src1->value;
2442 long long val2 = src2->value;
2498 if (!def->src3->value) {
2503 if (!def->src2->value) {
2512 unsigned s1 = log2_exact(def->src2->value);
2513 unsigned s2 = log2_exact(insn->src2->value);
2562 long long value;
2566 value = src->value;
2567 return value >= low && value <= high;
2582 if (is_in_range(src1, src2->value, src3->value)) {
2608 return convert_to_jump(insn, cond->value ? insn->bb_true : insn->bb_false);
2619 if (constant(def->src1) && !def->src1->value)
2621 if (constant(def->src2) && !def->src2->value)
2626 long long val1 = def->src2->value;
2627 long long val2 = def->src3->value;
2654 val = insn->cond->value;