Changeset 3914 in CLRX


Ignore:
Timestamp:
Mar 20, 2018, 8:44:24 PM (9 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Add testcase with nested loop inside routine.

File:
1 edited

Legend:

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

    r3913 r3914  
    32243224        true, ""
    32253225    },
     3226    {   // 18 - routine with nested loops
     3227        R"ffDXD(.regvar sa:s:10, va:v:8
     3228        s_mov_b32 sa[2], s4
     3229        s_mov_b32 sa[3], s5
     3230        s_mov_b32 sa[4], s6
     3231        s_mov_b32 sa[5], s7
     3232        s_mov_b32 sa[6], s8
     3233        .cf_call routine
     3234        s_swappc_b64 s[0:1], s[2:3]
     3235       
     3236        s_xor_b32 sa[2], sa[2], sa[0]
     3237        s_xor_b32 sa[3], sa[3], sa[0]
     3238        s_xor_b32 sa[4], sa[4], sa[1]
     3239        s_xor_b32 sa[5], sa[5], sa[1]
     3240        s_xor_b32 sa[6], sa[6], sa[0]
     3241        s_endpgm
     3242       
     3243routine:
     3244        s_xor_b32 sa[2], sa[2], sa[0]
     3245        s_xor_b32 sa[3], sa[3], sa[0]
     3246        s_xor_b32 sa[5], sa[5], sa[0]
     3247        s_cbranch_vccz  subr1
     3248       
     3249loop0:  s_xor_b32 sa[2], sa[2], sa[0]
     3250        s_cbranch_scc0 end1
     3251       
     3252        s_xor_b32 sa[3], sa[3], sa[0]
     3253        s_cbranch_scc0 end2
     3254       
     3255        s_xor_b32 sa[6], sa[6], sa[0]
     3256       
     3257loop1:  s_xor_b32 sa[4], sa[4], sa[0]
     3258        s_cbranch_scc0 end4
     3259       
     3260        s_xor_b32 sa[5], sa[5], sa[0]
     3261        s_cbranch_scc0 end5
     3262       
     3263        s_xor_b32 sa[6], sa[6], sa[1]
     3264        s_cbranch_scc0 end6
     3265       
     3266        s_xor_b32 sa[3], sa[3], sa[1]
     3267        s_cbranch_execnz loop1
     3268       
     3269        s_xor_b32 sa[4], sa[4], sa[1]
     3270        s_cbranch_scc0 end3
     3271       
     3272        s_xor_b32 sa[5], sa[5], sa[1]
     3273        s_cbranch_vccnz loop0
     3274       
     3275        .cf_ret
     3276        s_setpc_b64 s[0:1]
     3277       
     3278end1:   s_xor_b32 sa[2], sa[2], sa[0]
     3279        .cf_ret
     3280        s_setpc_b64 s[0:1]
     3281       
     3282end2:   s_xor_b32 sa[3], sa[3], sa[0]
     3283        .cf_ret
     3284        s_setpc_b64 s[0:1]
     3285       
     3286end3:   s_xor_b32 sa[4], sa[4], sa[0]
     3287        .cf_ret
     3288        s_setpc_b64 s[0:1]
     3289       
     3290end4:   s_xor_b32 sa[4], sa[4], sa[0]
     3291        .cf_ret
     3292        s_setpc_b64 s[0:1]
     3293       
     3294end5:   s_xor_b32 sa[5], sa[5], sa[0]
     3295        .cf_ret
     3296        s_setpc_b64 s[0:1]
     3297       
     3298end6:   s_xor_b32 sa[6], sa[6], sa[0]
     3299        .cf_ret
     3300        s_setpc_b64 s[0:1]
     3301       
     3302subr1:
     3303        s_xor_b32 sa[2], sa[2], sa[0]
     3304        s_xor_b32 sa[3], sa[3], sa[0]
     3305        s_xor_b32 sa[4], sa[4], sa[0]
     3306        s_xor_b32 sa[5], sa[5], sa[1]
     3307        s_xor_b32 sa[6], sa[6], sa[0]
     3308        s_cbranch_execnz loop0
     3309       
     3310        s_xor_b32 sa[2], sa[2], sa[0]
     3311        s_xor_b32 sa[3], sa[3], sa[0]
     3312        s_xor_b32 sa[4], sa[4], sa[0]
     3313        s_xor_b32 sa[5], sa[5], sa[1]
     3314        s_xor_b32 sa[6], sa[6], sa[0]
     3315        s_cbranch_execnz loop1
     3316       
     3317        s_xor_b32 sa[2], sa[2], sa[0]
     3318        s_xor_b32 sa[3], sa[3], sa[0]
     3319        s_xor_b32 sa[4], sa[4], sa[0]
     3320        s_xor_b32 sa[5], sa[5], sa[1]
     3321        s_xor_b32 sa[6], sa[6], sa[0]
     3322        .cf_ret
     3323        s_setpc_b64 s[0:1]
     3324)ffDXD",
     3325        {
     3326            {   // block 0 - start
     3327                0, 24,
     3328                { { 2, true } },
     3329                {
     3330                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     3331                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     3332                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3333                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3334                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3335                    { { "", 5 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3336                    { { "", 6 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3337                    { { "", 7 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3338                    { { "", 8 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3339                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     3340                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) },
     3341                    { { "sa", 4 }, SSAInfo(0, 1, 1, 1, 1, false) },
     3342                    { { "sa", 5 }, SSAInfo(0, 1, 1, 1, 1, false) },
     3343                    { { "sa", 6 }, SSAInfo(0, 1, 1, 1, 1, false) }
     3344                }, true, false, false },
     3345            {   // block 1 - end
     3346                24, 48,
     3347                { },
     3348                {
     3349                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3350                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3351                    { { "sa", 2 }, SSAInfo(3, 8, 8, 8, 1, true) },
     3352                    { { "sa", 3 }, SSAInfo(2, 9, 9, 9, 1, true) },
     3353                    { { "sa", 4 }, SSAInfo(1, 9, 9, 9, 1, true) },
     3354                    { { "sa", 5 }, SSAInfo(2, 9, 9, 9, 1, true) },
     3355                    { { "sa", 6 }, SSAInfo(1, 8, 8, 8, 1, true) }
     3356                }, false, false, true },
     3357            {   // block 2 - routine
     3358                48, 64,
     3359                { { 3, false }, { 19, false } },
     3360                {
     3361                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3362                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) },
     3363                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) },
     3364                    { { "sa", 5 }, SSAInfo(1, 2, 2, 2, 1, true) }
     3365                }, false, false, false },
     3366            {   // block 3 - loop0
     3367                64, 72,
     3368                { { 4, false }, { 13, false } },
     3369                {
     3370                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3371                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) }
     3372                }, false, false, false },
     3373            {   // block 4 - to end2
     3374                72, 80,
     3375                { { 5, false }, { 14, false } },
     3376                {
     3377                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3378                    { { "sa", 3 }, SSAInfo(2, 3, 3, 3, 1, true) }
     3379                }, false, false, false },
     3380            {   // block 5 - before loop1
     3381                80, 84,
     3382                { },
     3383                {
     3384                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3385                    { { "sa", 6 }, SSAInfo(1, 2, 2, 2, 1, true) }
     3386                }, false, false, false },
     3387            {   // block 6 - loop1
     3388                84, 92,
     3389                { { 7, false }, { 16, false } },
     3390                {
     3391                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3392                    { { "sa", 4 }, SSAInfo(1, 2, 2, 2, 1, true) }
     3393                }, false, false, false },
     3394            {   // block 7 - to end5
     3395                92, 100,
     3396                { { 8, false }, { 17, false } },
     3397                {
     3398                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3399                    { { "sa", 5 }, SSAInfo(2, 3, 3, 3, 1, true) }
     3400                }, false, false, false },
     3401            {   // block 8 - to end6
     3402                100, 108,
     3403                { { 9, false }, { 18, false } },
     3404                {
     3405                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3406                    { { "sa", 6 }, SSAInfo(2, 3, 3, 3, 1, true) }
     3407                }, false, false, false },
     3408            {   // block 9 - loop1 end
     3409                108, 116,
     3410                { { 6, false }, { 10, false } },
     3411                {
     3412                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3413                    { { "sa", 3 }, SSAInfo(3, 4, 4, 4, 1, true) }
     3414                }, false, false, false },
     3415            {   // block 10 - to end3
     3416                116, 124,
     3417                { { 11, false }, { 15, false } },
     3418                {
     3419                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3420                    { { "sa", 4 }, SSAInfo(2, 3, 3, 3, 1, true) }
     3421                }, false, false, false },
     3422            {   // block 11 - loop0 end
     3423                124, 132,
     3424                { { 3, false }, { 12, false } },
     3425                {
     3426                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3427                    { { "sa", 5 }, SSAInfo(3, 4, 4, 4, 1, true) }
     3428                }, false, false, false },
     3429            {   // block 12 - routine end
     3430                132, 136,
     3431                { },
     3432                {
     3433                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3434                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) }
     3435                }, false, true, true },
     3436            {   // block 13 - end1
     3437                136, 144,
     3438                { },
     3439                {
     3440                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3441                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3442                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3443                    { { "sa", 2 }, SSAInfo(3, 4, 4, 4, 1, true) }
     3444                }, false, true, true },
     3445            {   // block 14 - end2
     3446                144, 152,
     3447                { },
     3448                {
     3449                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3450                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3451                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3452                    { { "sa", 3 }, SSAInfo(3, 5, 5, 5, 1, true) }
     3453                }, false, true, true },
     3454            {   // block 15 - end3
     3455                152, 160,
     3456                { },
     3457                {
     3458                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3459                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3460                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3461                    { { "sa", 4 }, SSAInfo(3, 4, 4, 4, 1, true) }
     3462                }, false, true, true },
     3463            {   // block 16 - end4
     3464                160, 168,
     3465                { },
     3466                {
     3467                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3468                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3469                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3470                    { { "sa", 4 }, SSAInfo(2, 5, 5, 5, 1, true) }
     3471                }, false, true, true },
     3472            {   // block 17 - end5
     3473                168, 176,
     3474                { },
     3475                {
     3476                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3477                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3478                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3479                    { { "sa", 5 }, SSAInfo(3, 5, 5, 5, 1, true) }
     3480                }, false, true, true },
     3481            {   // block 18 - end6
     3482                176, 184,
     3483                { },
     3484                {
     3485                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3486                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3487                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3488                    { { "sa", 6 }, SSAInfo(3, 4, 4, 4, 1, true) }
     3489                }, false, true, true },
     3490            {   // block 19 - subr1
     3491                184, 208,
     3492                { { 3, false }, { 20, false } },
     3493                {
     3494                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3495                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3496                    { { "sa", 2 }, SSAInfo(2, 5, 5, 5, 1, true) },
     3497                    { { "sa", 3 }, SSAInfo(2, 6, 6, 6, 1, true) },
     3498                    { { "sa", 4 }, SSAInfo(1, 6, 6, 6, 1, true) },
     3499                    { { "sa", 5 }, SSAInfo(2, 6, 6, 6, 1, true) },
     3500                    { { "sa", 6 }, SSAInfo(1, 5, 5, 5, 1, true) }
     3501                }, false, false, false },
     3502            {   // block 20 - subr2
     3503                208, 232,
     3504                { { 6, false }, { 21, false } },
     3505                {
     3506                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3507                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3508                    { { "sa", 2 }, SSAInfo(5, 6, 6, 6, 1, true) },
     3509                    { { "sa", 3 }, SSAInfo(6, 7, 7, 7, 1, true) },
     3510                    { { "sa", 4 }, SSAInfo(6, 7, 7, 7, 1, true) },
     3511                    { { "sa", 5 }, SSAInfo(6, 7, 7, 7, 1, true) },
     3512                    { { "sa", 6 }, SSAInfo(5, 6, 6, 6, 1, true) }
     3513                }, false, false, false },
     3514            {   // block 21 - after subr2
     3515                232, 256,
     3516                { },
     3517                {
     3518                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3519                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3520                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3521                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3522                    { { "sa", 2 }, SSAInfo(6, 7, 7, 7, 1, true) },
     3523                    { { "sa", 3 }, SSAInfo(7, 8, 8, 8, 1, true) },
     3524                    { { "sa", 4 }, SSAInfo(7, 8, 8, 8, 1, true) },
     3525                    { { "sa", 5 }, SSAInfo(7, 8, 8, 8, 1, true) },
     3526                    { { "sa", 6 }, SSAInfo(6, 7, 7, 7, 1, true) }
     3527                }, false, true, true }
     3528        },
     3529        {   // SSA replaces
     3530            { { "sa", 2 }, { { 4, 3 }, { 6, 3 }, { 7, 3 }, { 3, 2 },
     3531                        { 5, 2 }, { 6,  2 } } },
     3532            { { "sa", 3 }, { { 3, 2 }, { 4, 2 }, { 5, 2 }, { 6, 2 }, { 7, 2 },
     3533                        { 8, 2 }, { 4, 3 }, { 7, 3 } } },
     3534            { { "sa", 4 }, { { 2, 1 }, { 3, 1 }, { 4, 1 }, { 5, 1 },
     3535                        { 6, 1 }, { 8, 1 }, { 7, 1 } } },
     3536            { { "sa", 5 }, { { 3, 2 }, { 4, 2 }, { 5, 2 }, { 6, 2 },
     3537                        { 7, 2 }, { 8, 2 } } },
     3538            { { "sa", 6 }, { { 2, 1 }, { 3, 1 }, { 4, 1 }, { 5, 1 },
     3539                        { 6, 1 }, { 7, 1 }, { 3, 2 }, { 6, 2 } } }
     3540        },
     3541        true, ""
     3542    },
    32263543    { nullptr }
    32273544};
Note: See TracChangeset for help on using the changeset viewer.