Changeset 4917 in CLRX


Ignore:
Timestamp:
Aug 21, 2019, 7:03:18 PM (4 weeks ago)
Author:
matszpk
Message:

CLRadeonExtender: ROCm: Change byte-order in MsgPack? to correct big-endian.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdbin/ROCmMetadata.cpp

    r4912 r4917  
    13891389                if (dataPtr+1>=dataEnd)
    13901390                    throw ParseException("MsgPack: Can't parse integer value");
    1391                 v = *dataPtr++;
    1392                 v |= uint16_t(*dataPtr++)<<8;
     1391                v = uint16_t(*dataPtr++)<<8;
     1392                v |= *dataPtr++;
    13931393                if (code==0xd1 && (v&(1ULL<<15))!=0)
    13941394                    v |= (0xffffffffffffULL<<16);
     
    13981398                if (dataPtr+3>=dataEnd)
    13991399                    throw ParseException("MsgPack: Can't parse integer value");
    1400                 for (cxuint i = 0; i < 32; i+=8)
     1400                for (cxint i = 24; i >= 0; i-=8)
    14011401                    v |= uint32_t(*dataPtr++)<<i;
    14021402                if (code==0xd2 && (v&(1ULL<<31))!=0)
     
    14071407                if (dataPtr+7>=dataEnd)
    14081408                    throw ParseException("MsgPack: Can't parse integer value");
    1409                 for (cxuint i = 0; i < 64; i+=8)
     1409                for (cxint i = 56; i >= 0; i-=8)
    14101410                    v |= uint64_t(*dataPtr++)<<i;
    14111411                break;
     
    14361436        if (dataPtr+3>=dataEnd)
    14371437            throw ParseException("MsgPack: Can't parse float value");
    1438         for (cxuint i = 0; i < 32; i+=8)
     1438        for (cxint i = 24; i >= 0; i-=8)
    14391439            v.v |= uint32_t(*dataPtr++)<<i;
    14401440        return v.vf;
     
    14491449        if (dataPtr+7>=dataEnd)
    14501450            throw ParseException("MsgPack: Can't parse float value");
    1451         for (cxuint i = 0; i < 64; i+=8)
     1451        for (cxint i = 56; i >= 0; i-=8)
    14521452            v.v |= uint64_t(*dataPtr++)<<i;
    14531453        return v.vf;
     
    14781478                if (dataPtr+1>=dataEnd)
    14791479                    throw ParseException("MsgPack: Can't parse string size");
    1480                 size = *dataPtr++;
    1481                 size |= uint32_t(*dataPtr++)<<8;
     1480                size = uint32_t(*dataPtr++)<<8;
     1481                size |= *dataPtr++;
    14821482                break;
    14831483            case 0xdb:
    14841484                if (dataPtr+3>=dataEnd)
    14851485                    throw ParseException("MsgPack: Can't parse string size");
    1486                 for (cxuint i = 0; i < 32; i+=8)
     1486                for (cxint i = 24; i >= 0; i-=8)
    14871487                    size |= uint32_t(*dataPtr++)<<i;
    14881488                break;
     
    15161516            if (dataPtr+1>=dataEnd)
    15171517                throw ParseException("MsgPack: Can't parse byte-array size");
    1518             size = *dataPtr++;
    1519             size |= uint32_t(*dataPtr++)<<8;
     1518            size = uint32_t(*dataPtr++)<<8;
     1519            size |= *dataPtr++;
    15201520            break;
    15211521        case 0xc6:
    15221522            if (dataPtr+3>=dataEnd)
    15231523                throw ParseException("MsgPack: Can't parse byte-array size");
    1524             for (cxuint i = 0; i < 32; i+=8)
     1524            for (cxint i = 24; i >= 0; i-=8)
    15251525                size |= uint32_t(*dataPtr++)<<i;
    15261526            break;
     
    15891589        if (dataPtr+1>=dataEnd)
    15901590            throw ParseException("MsgPack: Can't skip object");
    1591         size_t size = *dataPtr++;
    1592         size |= uint16_t(*dataPtr++)<<8;
     1591        size_t size = uint16_t(*dataPtr++)<<8;
     1592        size |= *dataPtr++;
    15931593        if (dataPtr+size>dataEnd)
    15941594            throw ParseException("MsgPack: Can't skip object");
     
    16011601            throw ParseException("MsgPack: Can't skip object");
    16021602        size_t size = 0;
    1603         for (cxuint i = 0; i < 32; i+=8)
     1603        for (cxint i = 24; i >= 0; i-=8)
    16041604            size |= uint32_t(*dataPtr++)<<i;
    16051605        if (dataPtr+size>dataEnd)
     
    16221622        if (dataPtr>=dataEnd)
    16231623            throw ParseException("MsgPack: Can't skip object");
    1624         size_t size = *dataPtr++;
    1625         size |= uint16_t(*dataPtr++)<<8;
     1624        size_t size = uint16_t(*dataPtr++)<<8;
     1625        size |= *dataPtr++;
    16261626        if (isMap)
    16271627            size<<=1;
     
    16361636            throw ParseException("MsgPack: Can't skip object");
    16371637        size_t size = 0;
    1638         for (cxuint i = 0; i < 32; i+=8)
     1638        for (cxint i = 24; i >= 0; i-=8)
    16391639            size |= (*dataPtr++)<<i;
    16401640        if (isMap)
     
    16611661            if (dataPtr+1 >= dataEnd)
    16621662                throw ParseException("MsgPack: Can't parse array size");
    1663             count = *dataPtr++;
    1664             count |= uint16_t(*dataPtr++)<<8;
     1663            count = uint16_t(*dataPtr++)<<8;
     1664            count |= *dataPtr++;
    16651665        }
    16661666        else if (code == 0xdd)
     
    16681668            if (dataPtr+3 >= dataEnd)
    16691669                throw ParseException("MsgPack: Can't parse array size");
    1670             for (cxuint i = 0; i < 32; i+=8)
     1670            for (cxint i = 24; i >= 0; i-=8)
    16711671                count |= uint32_t(*dataPtr++)<<i;
    16721672        }
     
    17681768            if (dataPtr+1 >= dataEnd)
    17691769                throw ParseException("MsgPack: Can't parse map size");
    1770             count = *dataPtr++;
    1771             count |= uint16_t(*dataPtr++)<<8;
     1770            count = uint16_t(*dataPtr++)<<8;
     1771            count |= *dataPtr++;
    17721772        }
    17731773        else if (code == 0xdf)
     
    17751775            if (dataPtr+3 >= dataEnd)
    17761776                throw ParseException("MsgPack: Can't parse map size");
    1777             for (cxuint i = 0; i < 32; i+=8)
     1777            for (cxint i = 24; i >= 0; i-=8)
    17781778                count |= uint32_t(*dataPtr++)<<i;
    17791779        }
  • CLRadeonExtender/trunk/tests/amdbin/ROCmMsgPack.cpp

    r4916 r4917  
    171171    }
    172172    // 16-bit integers
    173     const cxbyte tc9[4] = { 0x91, 0xcd, 0x37, 0x1c };
     173    const cxbyte tc9[4] = { 0x91, 0xcd, 0x1c, 0x37 };
    174174    dataPtr = tc9;
    175175    {
     
    179179        assertValue("MsgPack0", "tc9.DataPtr", dataPtr, tc9 + sizeof(tc9));
    180180    }
    181     const cxbyte tc9_1[4] = { 0x91, 0xcd, 0x7e, 0xb3 };
     181    const cxbyte tc9_1[4] = { 0x91, 0xcd, 0xb3, 0x7e };
    182182    dataPtr = tc9_1;
    183183    {
     
    203203        assertValue("MsgPack0", "tc9_3.DataPtr", dataPtr, tc9_3 + sizeof(tc9_3));
    204204    }
    205     const cxbyte tc10[4] = { 0x91, 0xd1, 0x37, 0x1c };
     205    const cxbyte tc10[4] = { 0x91, 0xd1, 0x1c, 0x37 };
    206206    dataPtr = tc10;
    207207    {
     
    211211        assertValue("MsgPack0", "tc10.DataPtr", dataPtr, tc10 + sizeof(tc10));
    212212    }
    213     const cxbyte tc10_1[4] = { 0x91, 0xd1, 0x7e, 0xb3 };
     213    const cxbyte tc10_1[4] = { 0x91, 0xd1, 0xb3, 0x7e };
    214214    dataPtr = tc10_1;
    215215    {
     
    236236    }
    237237    // 32-bit integers
    238     const cxbyte tc11[6] = { 0x91, 0xce, 0xbe, 0x96, 0x41, 0x2e };
     238    const cxbyte tc11[6] = { 0x91, 0xce, 0x2e, 0x41, 0x96, 0xbe };
    239239    dataPtr = tc11;
    240240    {
     
    244244        assertValue("MsgPack0", "tc11.DataPtr", dataPtr, tc11 + sizeof(tc11));
    245245    }
    246     const cxbyte tc11_1[6] = { 0x91, 0xce, 0xbe, 0x96, 0x42, 0xda };
     246    const cxbyte tc11_1[6] = { 0x91, 0xce, 0xda, 0x42, 0x96, 0xbe };
    247247    dataPtr = tc11_1;
    248248    {
     
    260260        assertValue("MsgPack0", "tc11_2.DataPtr", dataPtr, tc11_1 + 2);
    261261    }
    262     const cxbyte tc12[6] = { 0x91, 0xd2, 0xbe, 0x96, 0x41, 0x2e };
     262    const cxbyte tc12[6] = { 0x91, 0xd2, 0x2e, 0x41, 0x96, 0xbe };
    263263    dataPtr = tc12;
    264264    {
     
    276276        assertValue("MsgPack0", "tc12_1.DataPtr", dataPtr, tc12 + 2);
    277277    }
    278     const cxbyte tc12_2[6] = { 0x91, 0xd2, 0xaf, 0x11, 0x79, 0xc1 };
     278    const cxbyte tc12_2[6] = { 0x91, 0xd2, 0xc1, 0x79, 0x11, 0xaf };
    279279    dataPtr = tc12_2;
    280280    {
     
    293293    }
    294294    // 64-bit integers
    295     const cxbyte tc13[10] = { 0x91, 0xcf, 0x11, 0x3a, 0xf1, 0x4b, 0x13, 0xd9, 0x1e, 0x62 };
     295    const cxbyte tc13[10] = { 0x91, 0xcf, 0x62, 0x1e, 0xd9, 0x13, 0x4b, 0xf1, 0x3a, 0x11 };
    296296    dataPtr = tc13;
    297297    {
     
    301301        assertValue("MsgPack0", "tc13.DataPtr", dataPtr, tc13 + sizeof(tc13));
    302302    }
    303     const cxbyte tc13_1[10] = { 0x91, 0xcf, 0x14, 0x3a, 0xf1,
    304                             0x4b, 0x13, 0xd9, 0x1e, 0xd7 };
     303    const cxbyte tc13_1[10] = { 0x91, 0xcf, 0xd7, 0x1e, 0xd9, 0x13, 0x4b,
     304                            0xf1, 0x3a, 0x14 };
    305305    dataPtr = tc13_1;
    306306    {
     
    326326        assertValue("MsgPack0", "tc13_3.DataPtr", dataPtr, tc13_1 + sizeof(tc13_1));
    327327    }
    328     const cxbyte tc14[10] = { 0x91, 0xd3, 0x17, 0x3a, 0xf1, 0x4b, 0x13, 0xd9, 0x1e, 0x62 };
     328    const cxbyte tc14[10] = { 0x91, 0xd3, 0x62, 0x1e, 0xd9, 0x13, 0x4b, 0xf1, 0x3a, 0x17 };
    329329    dataPtr = tc14;
    330330    {
     
    334334        assertValue("MsgPack0", "tc14.DataPtr", dataPtr, tc14 + sizeof(tc14));
    335335    }
    336     const cxbyte tc14_1[10] = { 0x91, 0xd3, 0x14, 0x3a, 0xf1,
    337                             0x4b, 0x13, 0xd9, 0x1e, 0xd7 };
     336    const cxbyte tc14_1[10] = { 0x91, 0xd3, 0xd7, 0x1e, 0xd9, 0x13, 0x4b,
     337                            0xf1, 0x3a, 0x14 };
    338338    dataPtr = tc14_1;
    339339    {
     
    353353   
    354354    // parseFloat
    355     const cxbyte tc15[6] = { 0x91, 0xca, 0xf3, 0x9c, 0x76, 0x42 };
     355    const cxbyte tc15[6] = { 0x91, 0xca, 0x42, 0x76, 0x9c, 0xf3 };
    356356    dataPtr = tc15;
    357357    {
     
    368368        assertValue("MsgPack0", "tc15_1.DataPtr", dataPtr, tc15 + 2);
    369369    }
    370     const cxbyte tc15_2[6] = { 0x91, 0xca, 0xf3, 0x9c, 0x76, 0xc2 };
     370    const cxbyte tc15_2[6] = { 0x91, 0xca, 0xc2, 0x76, 0x9c, 0xf3 };
    371371    dataPtr = tc15_2;
    372372    {
     
    376376        assertValue("MsgPack0", "tc15_2.DataPtr", dataPtr, tc15_2 + sizeof(tc15_2));
    377377    }
    378     const cxbyte tc16[10] = { 0x91, 0xcb, 0xa3, 0x0b, 0x43, 0x99, 0x3c, 0xd1, 0x8d, 0x40 };
     378    const cxbyte tc16[10] = { 0x91, 0xcb, 0x40, 0x8d, 0xd1, 0x3c, 0x99, 0x43, 0x0b, 0xa3 };
    379379    dataPtr = tc16;
    380380    {
     
    392392        assertValue("MsgPack0", "tc16_1.DataPtr", dataPtr, tc16 + 2);
    393393    }
    394     const cxbyte tc16_1[10] = { 0x91, 0xcb, 0xa3, 0x0b, 0x43, 0x99,
    395                 0x3c, 0xd1, 0x8d, 0xc0 };
     394    const cxbyte tc16_1[10] = { 0x91, 0xcb, 0xc0, 0x8d, 0xd1, 0x3c, 0x99,
     395                    0x43, 0x0b, 0xa3 };
    396396    dataPtr = tc16_1;
    397397    {
     
    431431        tc18[0] = 0x91;
    432432        tc18[1] = 0xc5;
    433         tc18[2] = (12615&0xff);
    434         tc18[3] = (12615>>8);
     433        tc18[2] = (12615>>8);
     434        tc18[3] = (12615&0xff);
    435435        for (cxuint i = 0; i < tc18.size()-4; i++)
    436436            tc18[i+4] = ((i*0x71f)^i) + (12342%(i+1));
     
    474474        tc19[0] = 0x91;
    475475        tc19[1] = 0xc6;
    476         tc19[2] = (20818241&0xff);
    477         tc19[3] = (20818241>>8)&0xff;
    478         tc19[4] = (20818241>>16)&0xff;
    479         tc19[5] = (20818241>>24);
     476        tc19[2] = (20818241>>24);
     477        tc19[3] = (20818241>>16)&0xff;
     478        tc19[4] = (20818241>>8)&0xff;
     479        tc19[5] = (20818241&0xff);
    480480        for (cxuint i = 0; i < tc19.size()-6; i++)
    481481            tc19[i+6] = ((i*0x11f)^i)*3 + (1334123421%(i*5+1));
     
    558558        tc22[0] = 0x91;
    559559        tc22[1] = 0xda;
    560         tc22[2] = (12615&0xff);
    561         tc22[3] = (12615>>8);
     560        tc22[2] = (12615>>8);
     561        tc22[3] = (12615&0xff);
    562562        for (cxuint i = 0; i < tc22.size()-4; i++)
    563563            tc22[i+4] = ((i*0x71f)^i) + (12342%(i+1));
     
    602602        tc23[0] = 0x91;
    603603        tc23[1] = 0xdb;
    604         tc23[2] = (20818241&0xff);
    605         tc23[3] = (20818241>>8)&0xff;
    606         tc23[4] = (20818241>>16)&0xff;
    607         tc23[5] = (20818241>>24);
     604        tc23[2] = (20818241>>24);
     605        tc23[3] = (20818241>>16)&0xff;
     606        tc23[4] = (20818241>>8)&0xff;
     607        tc23[5] = (20818241&0xff);
    608608        for (cxuint i = 0; i < tc23.size()-6; i++)
    609609            tc23[i+6] = ((i*0x11f)^i)*3 + (1334123421%(i*5+1));
     
    652652    }
    653653    // longer array (more than 15 elements)
    654     const cxbyte tc25[39] = { 0x91, 0xdc, 0x23, 0x00,
     654    const cxbyte tc25[39] = { 0x91, 0xdc, 0x00, 0x23,
    655655        0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x78,
    656656        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
     
    681681        tc26[0] = 0x91;
    682682        tc26[1] = 0xdc;
    683         tc26[2] = (12615&0xff);
    684         tc26[3] = (12615>>8);
     683        tc26[2] = (12615>>8);
     684        tc26[3] = (12615&0xff);
    685685        for (cxuint i = 0; i < tc26.size()-4; i++)
    686686            tc26[i+4] = (((i*0x71f)^i) + (12342%(i+1)))&0x7f;
     
    717717        tc27[0] = 0x91;
    718718        tc27[1] = 0xdd;
    719         tc27[2] = (1818241&0xff);
    720         tc27[3] = (1818241>>8)&0xff;
    721         tc27[4] = (1818241>>16)&0xff;
    722         tc27[5] = (1818241>>24);
     719        tc27[2] = (1818241>>24);
     720        tc27[3] = (1818241>>16)&0xff;
     721        tc27[4] = (1818241>>8)&0xff;
     722        tc27[5] = (1818241&0xff);
    723723        for (cxuint i = 0; i < tc27.size()-6; i++)
    724724            tc27[i+6] = (((i*0x11f)^i)*3 + (1334123421%(i*5+1)))&0x7f;
     
    798798        tc29[0] = 0x91;
    799799        tc29[1] = 0xde;
    800         tc29[2] = (12615&0xff);
    801         tc29[3] = (12615>>8);
     800        tc29[2] = (12615>>8);
     801        tc29[3] = (12615&0xff);
    802802        for (cxuint i = 0; i < tc29.size()-4; i++)
    803803            tc29[i+4] = (((i*0x71f)^i) + (12342%(i+1)))&0x7f;
     
    837837        tc30[0] = 0x91;
    838838        tc30[1] = 0xdf;
    839         tc30[2] = (1818241&0xff);
    840         tc30[3] = (1818241>>8)&0xff;
    841         tc30[4] = (1818241>>16)&0xff;
    842         tc30[5] = (1818241>>24);
     839        tc30[2] = (1818241>>24);
     840        tc30[3] = (1818241>>16)&0xff;
     841        tc30[4] = (1818241>>8)&0xff;
     842        tc30[5] = (1818241&0xff);
    843843        for (cxuint i = 0; i < tc30.size()-6; i++)
    844844            tc30[i+6] = (((i*0x11f)^i)*3 + (1334123421%(i*5+1)))&0x7f;
     
    11061106        tc11[1] = 0xc0;
    11071107        tc11[2] = 0xda;
    1108         tc11[3] = (11232)&255;
    1109         tc11[4] = (11232)>>8;
     1108        tc11[3] = (11232)>>8;
     1109        tc11[4] = (11232)&255;
    11101110        for (size_t i = 0; i < tc11.size()-5; i++)
    11111111            tc11[i+5] = (i^0x80)&0xff;
     
    11381138        tc12[1] = 0xc0;
    11391139        tc12[2] = 0xdb;
    1140         tc12[3] = (4511232)&255;
    1141         tc12[4] = ((4511232)>>8)&255;
    1142         tc12[5] = ((4511232)>>16)&255;
    1143         tc12[6] = ((4511232)>>24);
     1140        tc12[3] = ((4511232)>>24);
     1141        tc12[4] = ((4511232)>>16)&255;
     1142        tc12[5] = ((4511232)>>8)&255;
     1143        tc12[6] = (4511232)&255;
    11441144        for (size_t i = 0; i < tc12.size()-7; i++)
    11451145            tc12[i+7] = (i^0x80)&0xff;
     
    12001200        tc14[1] = 0xc0;
    12011201        tc14[2] = 0xc5;
    1202         tc14[3] = (11232)&255;
    1203         tc14[4] = (11232)>>8;
     1202        tc14[3] = (11232)>>8;
     1203        tc14[4] = (11232)&255;
    12041204        for (size_t i = 0; i < tc14.size()-5; i++)
    12051205            tc14[i+5] = (i^0x80)&0xff;
     
    12321232        tc15[1] = 0xc0;
    12331233        tc15[2] = 0xc6;
    1234         tc15[3] = (4511232)&255;
    1235         tc15[4] = ((4511232)>>8)&255;
    1236         tc15[5] = ((4511232)>>16)&255;
    1237         tc15[6] = ((4511232)>>24);
     1234        tc15[3] = ((4511232)>>24);
     1235        tc15[4] = ((4511232)>>16)&255;
     1236        tc15[5] = ((4511232)>>8)&255;
     1237        tc15[6] = (4511232)&255;
    12381238        for (size_t i = 0; i < tc15.size()-7; i++)
    12391239            tc15[i+7] = (i^0x80)&0xff;
     
    12841284        tc17[1] = 0xc0;
    12851285        tc17[2] = 0xdc;
    1286         tc17[3] = (11277)&255;
    1287         tc17[4] = (11277)>>8;
     1286        tc17[3] = (11277)>>8;
     1287        tc17[4] = (11277)&255;
    12881288        for (size_t i = 0; i < tc17.size()-5; i+=3)
    12891289        {
     
    13201320        tc18[1] = 0xc0;
    13211321        tc18[2] = 0xdd;
    1322         tc18[3] = (3788213)&255;
    1323         tc18[4] = ((3788213)>>8)&255;
    1324         tc18[5] = ((3788213)>>16)&255;
    1325         tc18[6] = (3788213)>>24;
     1322        tc18[3] = (3788213)>>24;
     1323        tc18[4] = ((3788213)>>16)&255;
     1324        tc18[5] = ((3788213)>>8)&255;
     1325        tc18[6] = (3788213)&255;
    13261326        for (size_t i = 0; i < tc18.size()-7; i+=3)
    13271327        {
     
    13681368        tc20[1] = 0xc0;
    13691369        tc20[2] = 0xde;
    1370         tc20[3] = (8214)&255;
    1371         tc20[4] = (8214)>>8;
     1370        tc20[3] = (8214)>>8;
     1371        tc20[4] = (8214)&255;
    13721372        for (size_t i = 0; i < tc20.size()-5; i+=3)
    13731373        {
     
    14041404        tc21[1] = 0xc0;
    14051405        tc21[2] = 0xdf;
    1406         tc21[3] = (1662135)&255;
    1407         tc21[4] = ((1662135)>>8)&255;
    1408         tc21[5] = ((1662135)>>16)&255;
    1409         tc21[6] = (1662135)>>24;
     1406        tc21[3] = (1662135)>>24;
     1407        tc21[4] = ((1662135)>>16)&255;
     1408        tc21[5] = ((1662135)>>8)&255;
     1409        tc21[6] = (1662135)&255;
    14101410        for (size_t i = 0; i < tc21.size()-7; i+=3)
    14111411        {
Note: See TracChangeset for help on using the changeset viewer.