Changeset 3931 in CLRX


Ignore:
Timestamp:
Mar 23, 2018, 5:53:41 PM (9 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Add new testcases.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAllocCase3.cpp

    r3930 r3931  
    969969        true, ""
    970970    },
     971    {   // 5 - routine with routine with regvar unused in the first routine
     972        R"ffDXD(.regvar sa:s:8, va:v:8
     973        s_mov_b32 sa[2], s4
     974        s_mov_b32 sa[3], s4
     975        s_mov_b32 sa[6], s7
     976       
     977        .cf_call routine
     978        s_swappc_b64 s[0:1], s[2:3]
     979       
     980        s_add_u32 sa[2], sa[2], sa[0]
     981        s_add_u32 sa[3], sa[3], sa[0]
     982        s_add_u32 sa[6], sa[6], sa[0]
     983        s_endpgm
     984       
     985routine:
     986        s_xor_b32 sa[2], sa[2], sa[0]
     987        s_xor_b32 sa[3], sa[3], sa[1]
     988        s_cbranch_vccnz b0
     989       
     990        .cf_call routine2
     991        s_swappc_b64 s[0:1], s[2:3]
     992       
     993        .cf_ret
     994        s_setpc_b64 s[0:1]
     995       
     996b0:     s_xor_b32 sa[3], sa[3], sa[0]
     997        .cf_ret
     998        s_setpc_b64 s[0:1]
     999
     1000routine2:
     1001        s_and_b32 sa[6], sa[0], sa[1]
     1002        .cf_ret
     1003        s_setpc_b64 s[0:1]
     1004)ffDXD",
     1005        {
     1006            {   // block 0 - start
     1007                0, 16,
     1008                { { 2, true } },
     1009                {
     1010                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1011                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1012                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1013                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1014                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1015                    { { "", 7 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1016                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1017                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1018                    { { "sa", 6 }, SSAInfo(0, 1, 1, 1, 1, false) }
     1019                }, true, false, false },
     1020            {   // block 1 - end
     1021                16, 32,
     1022                { },
     1023                {
     1024                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1025                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) },
     1026                    { { "sa", 3 }, SSAInfo(2, 4, 4, 4, 1, true) },
     1027                    { { "sa", 6 }, SSAInfo(1, 3, 3, 3, 1, true) }
     1028                }, false, false, true },
     1029            {   // block 2 - routine
     1030                32, 44,
     1031                { { 3, false }, { 5, false } },
     1032                {
     1033                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1034                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1035                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) },
     1036                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) }
     1037                }, false, false, false },
     1038            {   // block 3 - call routine
     1039                44, 48,
     1040                { { 6, true } },
     1041                {
     1042                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1043                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1044                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1045                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) }
     1046                }, true, false, false },
     1047            {   // block 4 - routine ret
     1048                48, 52,
     1049                { },
     1050                {
     1051                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1052                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1053                }, false, true, true },
     1054            {   // block 5 - b0
     1055                52, 60,
     1056                { },
     1057                {
     1058                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1059                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1060                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1061                    { { "sa", 3 }, SSAInfo(2, 3, 3, 3, 1, true) }
     1062                }, false, true, true },
     1063            {   // block 6 - routine2
     1064                60, 68,
     1065                { },
     1066                {
     1067                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1068                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1069                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1070                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1071                    { { "sa", 6 }, SSAInfo(1, 2, 2, 2, 1, false) }
     1072                }, false, true, true }
     1073        },
     1074        {   // SSA replaces
     1075            { { "sa", 3 }, { { 3, 2 } } },
     1076            { { "sa", 6 }, { { 2, 1 } } }
     1077        },
     1078        true, ""
     1079    },
     1080    {   // 6 - routine with routine with regvar unused in the first routine
     1081        R"ffDXD(.regvar sa:s:8, va:v:8
     1082        s_mov_b32 sa[2], s4
     1083        s_mov_b32 sa[3], s4
     1084        s_mov_b32 sa[6], s7
     1085       
     1086        .cf_call routine
     1087        s_swappc_b64 s[0:1], s[2:3]
     1088       
     1089        s_add_u32 sa[2], sa[2], sa[0]
     1090        s_add_u32 sa[3], sa[3], sa[0]
     1091        s_add_u32 sa[6], sa[6], sa[0]
     1092        s_endpgm
     1093
     1094b0:     s_xor_b32 sa[3], sa[3], sa[0]
     1095        .cf_ret
     1096        s_setpc_b64 s[0:1]
     1097       
     1098routine:
     1099        s_xor_b32 sa[2], sa[2], sa[0]
     1100        s_xor_b32 sa[3], sa[3], sa[1]
     1101        s_cbranch_vccnz b0
     1102       
     1103        .cf_call routine2
     1104        s_swappc_b64 s[0:1], s[2:3]
     1105
     1106        .cf_ret
     1107        s_setpc_b64 s[0:1]
     1108       
     1109routine2:
     1110        s_and_b32 sa[6], sa[0], sa[1]
     1111        .cf_ret
     1112        s_setpc_b64 s[0:1]
     1113)ffDXD",
     1114        {
     1115            {   // block 0 - start
     1116                0, 16,
     1117                { { 3, true } },
     1118                {
     1119                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1120                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1121                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1122                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1123                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1124                    { { "", 7 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1125                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1126                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1127                    { { "sa", 6 }, SSAInfo(0, 1, 1, 1, 1, false) }
     1128                }, true, false, false },
     1129            {   // block 1 - end
     1130                16, 32,
     1131                { },
     1132                {
     1133                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1134                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) },
     1135                    { { "sa", 3 }, SSAInfo(2, 4, 4, 4, 1, true) },
     1136                    { { "sa", 6 }, SSAInfo(1, 3, 3, 3, 1, true) }
     1137                }, false, false, true },
     1138            {   // block 2 - b0
     1139                32, 40,
     1140                { },
     1141                {
     1142                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1143                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1144                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1145                    { { "sa", 3 }, SSAInfo(2, 3, 3, 3, 1, true) }
     1146                }, false, true, true },
     1147            {   // block 3 - routine
     1148                40, 52,
     1149                { { 2, false }, { 4, false } },
     1150                {
     1151                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1152                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1153                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) },
     1154                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) }
     1155                }, false, false, false },
     1156            {   // block 4 - call routine
     1157                52, 56,
     1158                { { 6, true } },
     1159                {
     1160                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1161                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1162                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1163                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) }
     1164                }, true, false, false },
     1165            {   // block 5 - routine ret
     1166                56, 60,
     1167                { },
     1168                {
     1169                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1170                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1171                }, false, true, true },
     1172            {   // block 6 - routine2
     1173                60, 68,
     1174                { },
     1175                {
     1176                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1177                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1178                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1179                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1180                    { { "sa", 6 }, SSAInfo(1, 2, 2, 2, 1, false) }
     1181                }, false, true, true }
     1182        },
     1183        {   // SSA replaces
     1184            { { "sa", 3 }, { { 3, 2 } } },
     1185            { { "sa", 6 }, { { 2, 1 } } }
     1186        },
     1187        true, ""
     1188    },
    9711189    { nullptr }
    9721190};
Note: See TracChangeset for help on using the changeset viewer.