Changeset 3987 in CLRX


Ignore:
Timestamp:
Apr 11, 2018, 2:30:35 PM (6 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Add new testcases.

File:
1 edited

Legend:

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

    r3986 r3987  
    22112211        true, ""
    22122212    },
     2213    {   // 16 - routine with loop with call to other routine
     2214        R"ffDXD(.regvar sa:s:10, va:v:8
     2215        s_mov_b32 sa[2], s4
     2216        s_mov_b32 sa[3], s5
     2217        s_mov_b32 sa[4], s6
     2218        s_mov_b32 sa[5], s7
     2219        s_mov_b32 sa[6], s8
     2220        .cf_call routine
     2221        s_swappc_b64 s[0:1], s[2:3]
     2222       
     2223        s_xor_b32 sa[2], sa[2], sa[0]
     2224        s_xor_b32 sa[3], sa[3], sa[0]
     2225        s_xor_b32 sa[4], sa[4], sa[1]
     2226        s_xor_b32 sa[5], sa[5], sa[1]
     2227        s_xor_b32 sa[6], sa[6], sa[0]
     2228        s_endpgm
     2229       
     2230routine:
     2231        s_xor_b32 sa[2], sa[2], sa[0]
     2232        s_xor_b32 sa[3], sa[3], sa[0]
     2233        s_xor_b32 sa[5], sa[5], sa[0]
     2234        s_cbranch_vccz  subr1
     2235       
     2236loop0:  s_xor_b32 sa[2], sa[2], sa[0]
     2237        s_cbranch_scc0 end1
     2238       
     2239        s_xor_b32 sa[3], sa[3], sa[0]
     2240        s_cbranch_scc0 end2
     2241       
     2242        s_xor_b32 sa[4], sa[4], sa[1]
     2243        s_cbranch_scc0 end3
     2244       
     2245        .cf_call routine2
     2246        s_swappc_b64 s[0:1], s[2:3]
     2247       
     2248        s_xor_b32 sa[5], sa[5], sa[1]
     2249        s_branch loop0
     2250       
     2251end1:   s_xor_b32 sa[2], sa[2], sa[0]
     2252        .cf_ret
     2253        s_setpc_b64 s[0:1]
     2254
     2255end2:   s_xor_b32 sa[3], sa[3], sa[0]
     2256        .cf_ret
     2257        s_setpc_b64 s[0:1]
     2258
     2259end3:   s_xor_b32 sa[4], sa[4], sa[0]
     2260        .cf_ret
     2261        s_setpc_b64 s[0:1]
     2262
     2263subr1:
     2264        s_xor_b32 sa[2], sa[2], sa[0]
     2265        s_xor_b32 sa[3], sa[3], sa[0]
     2266        s_xor_b32 sa[4], sa[4], sa[0]
     2267        s_xor_b32 sa[5], sa[5], sa[1]
     2268        s_xor_b32 sa[6], sa[6], sa[0]
     2269        s_cbranch_execnz loop0
     2270
     2271subr2:
     2272        s_xor_b32 sa[2], sa[2], sa[0]
     2273        s_xor_b32 sa[3], sa[3], sa[0]
     2274        s_xor_b32 sa[4], sa[4], sa[1]
     2275        s_xor_b32 sa[5], sa[5], sa[1]
     2276        s_xor_b32 sa[6], sa[6], sa[0]
     2277        .cf_ret
     2278        s_setpc_b64 s[0:1]
     2279       
     2280routine2:
     2281        s_xor_b32 sa[2], sa[2], sa[0]
     2282        s_xor_b32 sa[3], sa[2], sa[1]
     2283        s_cbranch_scc1 r2b0
     2284       
     2285        s_xor_b32 sa[2], sa[2], sa[0]
     2286        s_xor_b32 sa[5], sa[5], sa[1]
     2287        .cf_ret
     2288        s_setpc_b64 s[0:1]
     2289r2b0:
     2290        s_xor_b32 sa[3], sa[3], sa[0]
     2291        s_xor_b32 sa[4], sa[4], sa[1]
     2292        .cf_ret
     2293        s_setpc_b64 s[0:1]
     2294)ffDXD",
     2295        {
     2296            {   // block 0 - start
     2297                0, 24,
     2298                { { 2, true } },
     2299                {
     2300                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     2301                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     2302                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2303                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2304                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2305                    { { "", 5 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2306                    { { "", 6 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2307                    { { "", 7 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2308                    { { "", 8 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2309                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2310                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2311                    { { "sa", 4 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2312                    { { "sa", 5 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2313                    { { "sa", 6 }, SSAInfo(0, 1, 1, 1, 1, false) }
     2314                }, true, false, false },
     2315            {   // block 1 - end
     2316                24, 48,
     2317                { },
     2318                {
     2319                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2320                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2321                    { { "sa", 2 }, SSAInfo(3, 9, 9, 9, 1, true) },
     2322                    { { "sa", 3 }, SSAInfo(2, 9, 9, 9, 1, true) },
     2323                    { { "sa", 4 }, SSAInfo(1, 7, 7, 7, 1, true) },
     2324                    { { "sa", 5 }, SSAInfo(2, 7, 7, 7, 1, true) },
     2325                    { { "sa", 6 }, SSAInfo(1, 4, 4, 4, 1, true) }
     2326                }, false, false, true },
     2327            {   // block 2 - routine
     2328                48, 64,
     2329                { { 3, false }, { 11, false } },
     2330                {
     2331                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2332                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2333                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2334                    { { "sa", 5 }, SSAInfo(1, 2, 2, 2, 1, true) }
     2335                }, false, false, false },
     2336            {   // block 3 - loop0
     2337                64, 72,
     2338                { { 4, false }, { 8, false } },
     2339                {
     2340                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2341                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) }
     2342                }, false, false, false },
     2343            {   // block 4 - to end2
     2344                72, 80,
     2345                { { 5, false }, { 9, false } },
     2346                {
     2347                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2348                    { { "sa", 3 }, SSAInfo(2, 3, 3, 3, 1, true) }
     2349                }, false, false, false },
     2350            {   // block 5 - to end3
     2351                80, 88,
     2352                { { 6, false }, { 10, false } },
     2353                {
     2354                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2355                    { { "sa", 4 }, SSAInfo(1, 2, 2, 2, 1, true) }
     2356                }, false, false, false },
     2357            {   // block 6 - call routine
     2358                88, 92,
     2359                { { 13, true } },
     2360                {
     2361                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     2362                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     2363                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2364                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) }
     2365                }, true, false, false },
     2366            {   // block 7 - loop end
     2367                92, 100,
     2368                { { 3, false } },
     2369                {
     2370                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2371                    { { "sa", 5 }, SSAInfo(2, 4, 4, 4, 1, true) }
     2372                }, false, false, true },
     2373            {   // block 8 - end1
     2374                100, 108,
     2375                { },
     2376                {
     2377                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2378                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2379                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2380                    { { "sa", 2 }, SSAInfo(3, 6, 6, 6, 1, true) }
     2381                }, false, true, true },
     2382            {   // block 9 - end2
     2383                108, 116,
     2384                { },
     2385                {
     2386                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2387                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2388                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2389                    { { "sa", 3 }, SSAInfo(3, 6, 6, 6, 1, true) }
     2390                }, false, true, true },
     2391            {   // block 10 - end3
     2392                116, 124,
     2393                { },
     2394                {
     2395                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2396                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2397                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2398                    { { "sa", 4 }, SSAInfo(2, 4, 4, 4, 1, true) }
     2399                }, false, true, true },
     2400            {   // block 11 - subr1
     2401                124, 148,
     2402                { { 3, false }, { 12, false } },
     2403                {
     2404                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2405                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2406                    { { "sa", 2 }, SSAInfo(2, 7, 7, 7, 1, true) },
     2407                    { { "sa", 3 }, SSAInfo(2, 7, 7, 7, 1, true) },
     2408                    { { "sa", 4 }, SSAInfo(1, 5, 5, 5, 1, true) },
     2409                    { { "sa", 5 }, SSAInfo(2, 5, 5, 5, 1, true) },
     2410                    { { "sa", 6 }, SSAInfo(1, 2, 2, 2, 1, true) }
     2411                }, false, false, false },
     2412            {   // block 12 - subr2
     2413                148, 172,
     2414                { },
     2415                {
     2416                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2417                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2418                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2419                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2420                    { { "sa", 2 }, SSAInfo(7, 8, 8, 8, 1, true) },
     2421                    { { "sa", 3 }, SSAInfo(7, 8, 8, 8, 1, true) },
     2422                    { { "sa", 4 }, SSAInfo(5, 6, 6, 6, 1, true) },
     2423                    { { "sa", 5 }, SSAInfo(5, 6, 6, 6, 1, true) },
     2424                    { { "sa", 6 }, SSAInfo(2, 3, 3, 3, 1, true) }
     2425                }, false, true, true },
     2426            {   // block 13 - routine2
     2427                172, 184,
     2428                { { 14, false }, { 15, false } },
     2429                {
     2430                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2431                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2432                    { { "sa", 2 }, SSAInfo(3, 4, 4, 4, 1, true) },
     2433                    { { "sa", 3 }, SSAInfo(3, 4, 4, 4, 1, false) }
     2434                }, false, false, false },
     2435            {   // block 14 - end1
     2436                184, 196,
     2437                { },
     2438                {
     2439                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2440                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2441                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2442                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2443                    { { "sa", 2 }, SSAInfo(4, 5, 5, 5, 1, true) },
     2444                    { { "sa", 5 }, SSAInfo(2, 3, 3, 3, 1, true) }
     2445                }, false, true, true },
     2446            {   // block 15 - end2
     2447                196, 208,
     2448                { },
     2449                {
     2450                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2451                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2452                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2453                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2454                    { { "sa", 3 }, SSAInfo(4, 5, 5, 5, 1, true) },
     2455                    { { "sa", 4 }, SSAInfo(2, 3, 3, 3, 1, true) }
     2456                }, false, true, true }
     2457        },
     2458            // TODO: add reducing SSAIds while loop connection
     2459        {   // SSA replaces
     2460            { { "sa", 2 }, { { 6, 3 }, { 8, 3 }, { 5, 2 }, { 4, 2 }, { 7, 2 } } },
     2461            { { "sa", 3 }, { { 3, 2 }, { 4, 2 }, { 5, 2 }, { 6, 2 },
     2462                        { 7, 2 }, { 8, 2 } } },
     2463            { { "sa", 4 }, { { 2, 1 }, { 3, 1 }, { 4, 1 }, { 5, 1 }, { 6, 1 } } },
     2464            { { "sa", 5 }, { { 3, 2 }, { 4, 2 }, { 5, 2 }, { 6, 2 } } },
     2465            { { "sa", 6 }, { { 2, 1 }, { 3, 1 } } }
     2466        },
     2467        true, ""
     2468    },
     2469    {   // 16 - routine with loop with call to other routine
     2470        R"ffDXD(.regvar sa:s:10, va:v:8
     2471        s_mov_b32 sa[2], s4
     2472        s_cbranch_scc1 a1
     2473       
     2474a0:     s_xor_b32 sa[2], sa[2], sa[0]
     2475        s_endpgm
     2476       
     2477a1:     .cf_call routine
     2478        s_swappc_b64 s[0:1], s[2:3]
     2479        s_branch a0
     2480       
     2481routine:
     2482        s_xor_b32 sa[2], sa[2], sa[0]
     2483        s_cbranch_execz b0
     2484       
     2485        s_xor_b32 sa[2], sa[2], sa[0]
     2486        .cf_ret
     2487        s_setpc_b64 s[0:1]
     2488b0:     s_xor_b32 sa[2], sa[2], sa[0]
     2489        .cf_ret
     2490        s_setpc_b64 s[0:1]
     2491)ffDXD",
     2492        {
     2493            {   // block 0 - start
     2494                0, 8,
     2495                { { 1, false }, { 2, false } },
     2496                {
     2497                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2498                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) }
     2499                }, false, false, false },
     2500            {   // block 1 - a0
     2501                8, 16,
     2502                { },
     2503                {
     2504                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2505                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) }
     2506                }, false, false, true },
     2507            {   // block 2 - a1 (routine call)
     2508                16, 20,
     2509                { { 4, true } },
     2510                {
     2511                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     2512                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     2513                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2514                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) }
     2515                }, true, false, false },
     2516            {   // block 3 - jump to a0
     2517                20, 24,
     2518                { { 1, false } },
     2519                { }, false, false, true },
     2520            {   // block 4 - routine
     2521                24, 32,
     2522                { { 5, false }, { 6, false } },
     2523                {
     2524                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2525                    { { "sa", 2 }, SSAInfo(1, 3, 3, 3, 1, true) }
     2526                }, false, false, false },
     2527            {   // block 5 - routine end 1
     2528                32, 40,
     2529                { },
     2530                {
     2531                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2532                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2533                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2534                    { { "sa", 2 }, SSAInfo(3, 4, 4, 4, 1, true) }
     2535                }, false, true, true },
     2536            {   // block 6 - routine end 2
     2537                40, 48,
     2538                { },
     2539                {
     2540                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2541                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2542                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2543                    { { "sa", 2 }, SSAInfo(3, 5, 5, 5, 1, true) }
     2544                }, false, true, true }
     2545        },
     2546        {   // SSA replaces
     2547            { { "sa", 2 }, { { 4, 1 }, { 5, 1 } } }
     2548        },
     2549        true, ""
     2550    },
    22132551    { nullptr }
    22142552};
Note: See TracChangeset for help on using the changeset viewer.