Home | History | Annotate | Download | only in helgrind

Lines Matching refs:descr

931       VG_(printf)("   descr: %04lx\n", (UWord)cl->descrs[i]);
936 static UChar descr_to_validbits ( UShort descr )
939 # define DESCR(b8_7, b8_6, b8_5, b8_4, b8_3, b8_2, b8_1, b8_0, \
957 tl_assert(DESCR(1,0,0,0,0,0,0,0, 0,0,0, 0, 0,0,0) == TREE_DESCR_8_7);
958 tl_assert(DESCR(0,0,0,0,0,0,0,1, 0,0,0, 0, 0,0,0) == TREE_DESCR_8_0);
959 tl_assert(DESCR(0,0,0,0,0,0,0,0, 1,0,0, 0, 0,0,0) == TREE_DESCR_16_3);
960 tl_assert(DESCR(0,0,0,0,0,0,0,0, 0,1,0, 0, 0,0,0) == TREE_DESCR_32_1);
961 tl_assert(DESCR(0,0,0,0,0,0,0,0, 0,0,1, 0, 0,0,0) == TREE_DESCR_16_2);
962 tl_assert(DESCR(0,0,0,0,0,0,0,0, 0,0,0, 1, 0,0,0) == TREE_DESCR_64);
963 tl_assert(DESCR(0,0,0,0,0,0,0,0, 0,0,0, 0, 1,0,0) == TREE_DESCR_16_1);
964 tl_assert(DESCR(0,0,0,0,0,0,0,0, 0,0,0, 0, 0,1,0) == TREE_DESCR_32_0);
965 tl_assert(DESCR(0,0,0,0,0,0,0,0, 0,0,0, 0, 0,0,1) == TREE_DESCR_16_0);
967 switch (descr) {
980 case DESCR(1,1,1,1,1,1,1,1, 0,0,0, 0, 0,0,0): /* 8 8 8 8 8 8 8 8 */
982 case DESCR(1,1,0,0,1,1,1,1, 0,0,1, 0, 0,0,0): /* 8 8 16 8 8 8 8 */
984 case DESCR(0,0,1,1,1,1,1,1, 1,0,0, 0, 0,0,0): /* 16 8 8 8 8 8 8 */
986 case DESCR(0,0,0,0,1,1,1,1, 1,0,1, 0, 0,0,0): /* 16 16 8 8 8 8 */
989 case DESCR(1,1,1,1,1,1,0,0, 0,0,0, 0, 0,0,1): /* 8 8 8 8 8 8 16 */
991 case DESCR(1,1,0,0,1,1,0,0, 0,0,1, 0, 0,0,1): /* 8 8 16 8 8 16 */
993 case DESCR(0,0,1,1,1,1,0,0, 1,0,0, 0, 0,0,1): /* 16 8 8 8 8 16 */
995 case DESCR(0,0,0,0,1,1,0,0, 1,0,1, 0, 0,0,1): /* 16 16 8 8 16 */
998 case DESCR(1,1,1,1,0,0,1,1, 0,0,0, 0, 1,0,0): /* 8 8 8 8 16 8 8 */
1000 case DESCR(1,1,0,0,0,0,1,1, 0,0,1, 0, 1,0,0): /* 8 8 16 16 8 8 */
1002 case DESCR(0,0,1,1,0,0,1,1, 1,0,0, 0, 1,0,0): /* 16 8 8 16 8 8 */
1004 case DESCR(0,0,0,0,0,0,1,1, 1,0,1, 0, 1,0,0): /* 16 16 16 8 8 */
1007 case DESCR(1,1,1,1,0,0,0,0, 0,0,0, 0, 1,0,1): /* 8 8 8 8 16 16 */
1009 case DESCR(1,1,0,0,0,0,0,0, 0,0,1, 0, 1,0,1): /* 8 8 16 16 16 */
1011 case DESCR(0,0,1,1,0,0,0,0, 1,0,0, 0, 1,0,1): /* 16 8 8 16 16 */
1013 case DESCR(0,0,0,0,0,0,0,0, 1,0,1, 0, 1,0,1): /* 16 16 16 16 */
1016 case DESCR(0,0,0,0,1,1,1,1, 0,1,0, 0, 0,0,0): /* 32 8 8 8 8 */
1018 case DESCR(0,0,0,0,1,1,0,0, 0,1,0, 0, 0,0,1): /* 32 8 8 16 */
1020 case DESCR(0,0,0,0,0,0,1,1, 0,1,0, 0, 1,0,0): /* 32 16 8 8 */
1022 case DESCR(0,0,0,0,0,0,0,0, 0,1,0, 0, 1,0,1): /* 32 16 16 */
1025 case DESCR(1,1,1,1,0,0,0,0, 0,0,0, 0, 0,1,0): /* 8 8 8 8 32 */
1027 case DESCR(1,1,0,0,0,0,0,0, 0,0,1, 0, 0,1,0): /* 8 8 16 32 */
1029 case DESCR(0,0,1,1,0,0,0,0, 1,0,0, 0, 0,1,0): /* 16 8 8 32 */
1031 case DESCR(0,0,0,0,0,0,0,0, 1,0,1, 0, 0,1,0): /* 16 16 32 */
1034 case DESCR(0,0,0,0,0,0,0,0, 0,1,0, 0, 0,1,0): /* 32 32 */
1037 case DESCR(0,0,0,0,0,0,0,0, 0,0,0, 1, 0,0,0): /* 64 */
1041 /* INVALID - any valid descr produces at least one
1047 # undef DESCR
1052 static Bool is_sane_Descr ( UShort descr ) {
1053 return descr_to_validbits(descr) != 0;
1056 static void sprintf_Descr ( /*OUT*/HChar* dst, UShort descr ) {
1059 (Int)((descr & TREE_DESCR_8_7) ? 1 : 0),
1060 (Int)((descr & TREE_DESCR_8_6) ? 1 : 0),
1061 (Int)((descr & TREE_DESCR_8_5) ? 1 : 0),
1062 (Int)((descr & TREE_DESCR_8_4) ? 1 : 0),
1063 (Int)((descr & TREE_DESCR_8_3) ? 1 : 0),
1064 (Int)((descr & TREE_DESCR_8_2) ? 1 : 0),
1065 (Int)((descr & TREE_DESCR_8_1) ? 1 : 0),
1066 (Int)((descr & TREE_DESCR_8_0) ? 1 : 0),
1067 (Int)((descr & TREE_DESCR_16_3) ? 1 : 0),
1068 (Int)((descr & TREE_DESCR_32_1) ? 1 : 0),
1069 (Int)((descr & TREE_DESCR_16_2) ? 1 : 0),
1070 (Int)((descr & TREE_DESCR_64) ? 1 : 0),
1071 (Int)((descr & TREE_DESCR_16_1) ? 1 : 0),
1072 (Int)((descr & TREE_DESCR_32_0) ? 1 : 0),
1073 (Int)((descr & TREE_DESCR_16_0) ? 1 : 0)
1089 static Bool is_sane_Descr_and_Tree ( UShort descr, SVal* tree ) {
1091 UChar validbits = descr_to_validbits(descr);
1106 sprintf_Descr( buf, descr );
1110 VG_(printf)(" descr 0x%04lx %s\n", (UWord)descr, buf);
1124 UShort descr = cl->descrs[tno];
1126 if (!is_sane_Descr_and_Tree(descr, tree))
1138 UShort descr;
1147 descr = TREE_DESCR_8_7 | TREE_DESCR_8_6 | TREE_DESCR_8_5
1153 descr &= ~(TREE_DESCR_8_1 | TREE_DESCR_8_0);
1154 descr |= TREE_DESCR_16_0;
1158 descr &= ~(TREE_DESCR_8_3 | TREE_DESCR_8_2);
1159 descr |= TREE_DESCR_16_1;
1163 descr &= ~(TREE_DESCR_8_5 | TREE_DESCR_8_4);
1164 descr |= TREE_DESCR_16_2;
1168 descr &= ~(TREE_DESCR_8_7 | TREE_DESCR_8_6);
1169 descr |= TREE_DESCR_16_3;
1173 && (descr & TREE_DESCR_16_1) && (descr & TREE_DESCR_16_0)) {
1175 descr &= ~(TREE_DESCR_16_1 | TREE_DESCR_16_0);
1176 descr |= TREE_DESCR_32_0;
1179 && (descr & TREE_DESCR_16_3) && (descr & TREE_DESCR_16_2)) {
1181 descr &= ~(TREE_DESCR_16_3 | TREE_DESCR_16_2);
1182 descr |= TREE_DESCR_32_1;
1186 && (descr & TREE_DESCR_32_1) && (descr & TREE_DESCR_32_0)) {
1188 descr &= ~(TREE_DESCR_32_1 | TREE_DESCR_32_0);
1189 descr |= TREE_DESCR_64;
1191 return descr;
1223 UShort descr = src->descrs[tno];
1226 /* sequentialise the tree described by (descr,tree). */
1233 if (descr & TREE_DESCR_64) PUT(8, tree[0]); else
1234 if (descr & TREE_DESCR_32_0) PUT(4, tree[0]); else
1235 if (descr & TREE_DESCR_16_0) PUT(2, tree[0]); else
1236 if (descr & TREE_DESCR_8_0) PUT(1, tree[0]);
1238 if (descr & TREE_DESCR_8_1) PUT(1, tree[1]);
1240 if (descr & TREE_DESCR_16_1) PUT(2, tree[2]); else
1241 if (descr & TREE_DESCR_8_2) PUT(1, tree[2]);
1243 if (descr & TREE_DESCR_8_3) PUT(1, tree[3]);
1245 if (descr & TREE_DESCR_32_1) PUT(4, tree[4]); else
1246 if (descr & TREE_DESCR_16_2) PUT(2, tree[4]); else
1247 if (descr & TREE_DESCR_8_4) PUT(1, tree[4]);
1249 if (descr & TREE_DESCR_8_5) PUT(1, tree[5]);
1251 if (descr & TREE_DESCR_16_3) PUT(2, tree[6]); else
1252 if (descr & TREE_DESCR_8_6) PUT(1, tree[6]);
1254 if (descr & TREE_DESCR_8_7) PUT(1, tree[7]);
1257 /* END sequentialise the tree described by (descr,tree). */
1568 static UShort pulldown_to_32 ( /*MOD*/SVal* tree, UWord toff, UShort descr ) {
1572 tl_assert(descr & TREE_DESCR_64);
1574 descr &= ~TREE_DESCR_64;
1575 descr |= (TREE_DESCR_32_1 | TREE_DESCR_32_0);
1580 return descr;
1583 static UShort pulldown_to_16 ( /*MOD*/SVal* tree, UWord toff, UShort descr ) {
1587 if (!(descr & TREE_DESCR_32_0)) {
1588 descr = pulldown_to_32(tree, 0, descr);
1590 tl_assert(descr & TREE_DESCR_32_0);
1592 descr &= ~TREE_DESCR_32_0;
1593 descr |= (TREE_DESCR_16_1 | TREE_DESCR_16_0);
1596 if (!(descr & TREE_DESCR_32_1)) {
1597 descr = pulldown_to_32(tree, 4, descr);
1599 tl_assert(descr & TREE_DESCR_32_1);
1601 descr &= ~TREE_DESCR_32_1;
1602 descr |= (TREE_DESCR_16_3 | TREE_DESCR_16_2);
1607 return descr;
1610 static UShort pulldown_to_8 ( /*MOD*/SVal* tree, UWord toff, UShort descr ) {
1614 if (!(descr & TREE_DESCR_16_0)) {
1615 descr = pulldown_to_16(tree, 0, descr);
1617 tl_assert(descr & TREE_DESCR_16_0);
1619 descr &= ~TREE_DESCR_16_0;
1620 descr |= (TREE_DESCR_8_1 | TREE_DESCR_8_0);
1623 if (!(descr & TREE_DESCR_16_1)) {
1624 descr = pulldown_to_16(tree, 2, descr);
1626 tl_assert(descr & TREE_DESCR_16_1);
1628 descr &= ~TREE_DESCR_16_1;
1629 descr |= (TREE_DESCR_8_3 | TREE_DESCR_8_2);
1632 if (!(descr & TREE_DESCR_16_2)) {
1633 descr = pulldown_to_16(tree, 4, descr);
1635 tl_assert(descr & TREE_DESCR_16_2);
1637 descr &= ~TREE_DESCR_16_2;
1638 descr |= (TREE_DESCR_8_5 | TREE_DESCR_8_4);
1641 if (!(descr & TREE_DESCR_16_3)) {
1642 descr = pulldown_to_16(tree, 6, descr);
1644 tl_assert(descr & TREE_DESCR_16_3);
1646 descr &= ~TREE_DESCR_16_3;
1647 descr |= (TREE_DESCR_8_7 | TREE_DESCR_8_6);
1652 return descr;
1656 static UShort pullup_descr_to_16 ( UShort descr, UWord toff ) {
1661 tl_assert( (descr & mask) == mask );
1662 descr &= ~mask;
1663 descr |= TREE_DESCR_16_0;
1667 tl_assert( (descr & mask) == mask );
1668 descr &= ~mask;
1669 descr |= TREE_DESCR_16_1;
1673 tl_assert( (descr & mask) == mask );
1674 descr &= ~mask;
1675 descr |= TREE_DESCR_16_2;
1679 tl_assert( (descr & mask) == mask );
1680 descr &= ~mask;
1681 descr |= TREE_DESCR_16_3;
1686 return descr;
1689 static UShort pullup_descr_to_32 ( UShort descr, UWord toff ) {
1693 if (!(descr & TREE_DESCR_16_0))
1694 descr = pullup_descr_to_16(descr, 0);
1695 if (!(descr & TREE_DESCR_16_1))
1696 descr = pullup_descr_to_16(descr, 2);
1698 tl_assert( (descr & mask) == mask );
1699 descr &= ~mask;
1700 descr |= TREE_DESCR_32_0;
1703 if (!(descr & TREE_DESCR_16_2))
1704 descr = pullup_descr_to_16(descr, 4);
1705 if (!(descr & TREE_DESCR_16_3))
1706 descr = pullup_descr_to_16(descr, 6);
1708 tl_assert( (descr & mask) == mask );
1709 descr &= ~mask;
1710 descr |= TREE_DESCR_32_1;
1715 return descr;
1718 static Bool valid_value_is_above_me_32 ( UShort descr, UWord toff ) {
1721 return 0 != (descr & TREE_DESCR_64);
1727 static Bool valid_value_is_below_me_16 ( UShort descr, UWord toff ) {
1730 return 0 != (descr & (TREE_DESCR_8_1 | TREE_DESCR_8_0));
1732 return 0 != (descr & (TREE_DESCR_8_3 | TREE_DESCR_8_2));
1734 return 0 != (descr & (TREE_DESCR_8_5 | TREE_DESCR_8_4));
1736 return 0 != (descr & (TREE_DESCR_8_7 | TREE_DESCR_8_6));
5102 UShort descr;
5108 descr = cl->descrs[tno];
5109 if (UNLIKELY( !(descr & (TREE_DESCR_8_0 << toff)) )) {
5111 cl->descrs[tno] = pulldown_to_8(tree, toff, descr);
5126 UShort descr;
5132 descr = cl->descrs[tno];
5133 if (UNLIKELY( !(descr & (TREE_DESCR_8_0 << toff)) )) {
5135 cl->descrs[tno] = pulldown_to_8(tree, toff, descr);
5152 UShort descr;
5159 descr = cl->descrs[tno];
5160 if (UNLIKELY( !(descr & (TREE_DESCR_16_0 << toff)) )) {
5161 if (valid_value_is_below_me_16(descr, toff)) {
5165 cl->descrs[tno] = pulldown_to_16(tree, toff, descr);
5186 UShort descr;
5193 descr = cl->descrs[tno];
5194 if (UNLIKELY( !(descr & (TREE_DESCR_16_0 << toff)) )) {
5195 if (valid_value_is_below_me_16(descr, toff)) {
5199 cl->descrs[tno] = pulldown_to_16(tree, toff, descr);
5222 UShort descr;
5229 descr = cl->descrs[tno];
5230 if (UNLIKELY( !(descr & (TREE_DESCR_32_0 << toff)) )) {
5231 if (valid_value_is_above_me_32(descr, toff)) {
5233 cl->descrs[tno] = pulldown_to_32(tree, toff, descr);
5256 UShort descr;
5263 descr = cl->descrs[tno];
5264 if (UNLIKELY( !(descr & (TREE_DESCR_32_0 << toff)) )) {
5265 if (valid_value_is_above_me_32(descr, toff)) {
5267 cl->descrs[tno] = pulldown_to_32(tree, toff, descr);
5293 UShort descr;
5300 descr = cl->descrs[tno];
5301 if (UNLIKELY( !(descr & TREE_DESCR_64) )) {
5321 UShort descr;
5328 descr = cl->descrs[tno];
5329 if (UNLIKELY( !(descr & TREE_DESCR_64) )) {
5350 UShort descr;
5356 descr = cl->descrs[tno];
5357 if (UNLIKELY( !(descr & (TREE_DESCR_8_0 << toff)) )) {
5359 cl->descrs[tno] = pulldown_to_8(tree, toff, descr);
5373 UShort descr;
5380 descr = cl->descrs[tno];
5381 if (UNLIKELY( !(descr & (TREE_DESCR_16_0 << toff)) )) {
5382 if (valid_value_is_below_me_16(descr, toff)) {
5383 /* Writing at this level. Need to fix up 'descr'. */
5384 cl->descrs[tno] = pullup_descr_to_16(descr, toff);
5385 /* At this point, the tree does not match cl->descr[tno] any
5392 cl->descrs[tno] = pulldown_to_16(tree, toff, descr);
5413 UShort descr;
5420 descr = cl->descrs[tno];
5421 if (UNLIKELY( !(descr & (TREE_DESCR_32_0 << toff)) )) {
5422 if (valid_value_is_above_me_32(descr, toff)) {
5427 cl->descrs[tno] = pulldown_to_32(tree, toff, descr);
5431 /* Writing at this level. Need to fix up 'descr'. */
5432 cl->descrs[tno] = pullup_descr_to_32(descr, toff);
5433 /* At this point, the tree does not match cl->descr[tno] any
5485 UShort descr;
5491 descr = cl->descrs[tno];
5492 if (UNLIKELY( !(descr & (TREE_DESCR_8_0 << toff)) )) {
5494 cl->descrs[tno] = pulldown_to_8(tree, toff, descr);