Changeset 3649 in CLRX


Ignore:
Timestamp:
Jan 21, 2018, 10:09:35 PM (3 years ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Add new testcase (many routines in single calls).

File:
1 edited

Legend:

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

    r3648 r3649  
    718718static const AsmSSADataCase ssaDataTestCases1Tbl[] =
    719719{
     720#if 0
    720721    {   /* 0 - simple */
    721722        ".regvar sa:s:8, va:v:10\n"
     
    30393040            { { "sa", 2 }, { { 5, 4 }, { 6, 4 }, { 7, 3 }, { 5, 4 } } },
    30403041            { { "sa", 3 }, { { 3, 2 }, { 4, 2 }, { 5, 2 }, { 4, 3 } } }
     3042        }, true, ""
     3043    },
     3044#endif
     3045    {   // 24 - many routines in single calls
     3046        R"ffDXD(.regvar sa:s:8, va:v:8
     3047        s_mov_b32 sa[2], s4
     3048        s_mov_b32 sa[3], s5
     3049        s_mov_b32 sa[4], s6
     3050        s_mov_b32 sa[5], s7
     3051       
     3052        s_getpc_b64 s[2:3]
     3053        s_add_u32 s2, s2, routine-.
     3054        s_add_u32 s3, s3, routine-.+4
     3055        .cf_call routine, routine2
     3056        s_swappc_b64 s[0:1], s[2:3]
     3057       
     3058        s_lshl_b32 sa[2], sa[2], 6
     3059        s_lshl_b32 sa[3], sa[3], 6
     3060        s_lshl_b32 sa[4], sa[4], 6
     3061        s_lshl_b32 sa[5], sa[5], 6
     3062       
     3063        s_getpc_b64 s[2:3]
     3064        s_add_u32 s2, s2, routine2-.
     3065        s_add_u32 s3, s3, routine2-.+4
     3066        .cf_call routine2, routine3
     3067        s_swappc_b64 s[0:1], s[2:3]
     3068       
     3069        s_lshl_b32 sa[2], sa[2], 4
     3070        s_lshl_b32 sa[3], sa[3], 4
     3071        s_lshl_b32 sa[4], sa[4], 4
     3072        s_lshl_b32 sa[5], sa[5], 4
     3073        s_endpgm
     3074       
     3075routine:
     3076        s_xor_b32 sa[2], sa[2], sa[6]
     3077        s_xor_b32 sa[3], sa[3], sa[6]
     3078        s_cbranch_scc1 bb1
     3079       
     3080        s_min_u32 sa[2], sa[2], sa[6]
     3081        .cf_ret
     3082        s_setpc_b64 s[0:1]
     3083       
     3084bb1:    s_and_b32 sa[2], sa[2], sa[6]
     3085        .cf_ret
     3086        s_setpc_b64 s[0:1]
     3087
     3088routine2:
     3089        s_xor_b32 sa[2], sa[2], sa[6]
     3090        s_xor_b32 sa[4], sa[4], sa[6]
     3091        s_cbranch_scc1 bb2
     3092       
     3093        s_min_u32 sa[2], sa[2], sa[6]
     3094        .cf_ret
     3095        s_setpc_b64 s[0:1]
     3096       
     3097bb2:    s_and_b32 sa[2], sa[2], sa[6]
     3098        .cf_ret
     3099        s_setpc_b64 s[0:1]
     3100
     3101routine3:
     3102        s_xor_b32 sa[3], sa[3], sa[6]
     3103        s_xor_b32 sa[5], sa[5], sa[6]
     3104        s_cbranch_scc1 bb3
     3105       
     3106        s_min_u32 sa[3], sa[3], sa[6]
     3107        .cf_ret
     3108        s_setpc_b64 s[0:1]
     3109       
     3110bb3:    s_and_b32 sa[5], sa[5], sa[6]
     3111        .cf_ret
     3112        s_setpc_b64 s[0:1]
     3113)ffDXD",
     3114        {
     3115            // block 0 - start
     3116            { 0, 40,
     3117                { { 3, true }, { 6, true } },
     3118                {
     3119                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     3120                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     3121                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, false) },
     3122                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, false) },
     3123                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3124                    { { "", 5 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3125                    { { "", 6 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3126                    { { "", 7 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3127                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     3128                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) },
     3129                    { { "sa", 4 }, SSAInfo(0, 1, 1, 1, 1, false) },
     3130                    { { "sa", 5 }, SSAInfo(0, 1, 1, 1, 1, false) }
     3131                }, true, false, false },
     3132            // block 1 - after first call
     3133            { 40, 80,
     3134                { { 6, true }, { 9, true } },
     3135                {
     3136                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     3137                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     3138                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, false) },
     3139                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, false) },
     3140                    { { "sa", 2 }, SSAInfo(3, 8, 8, 8, 1, true) },
     3141                    { { "sa", 3 }, SSAInfo(2, 3, 3, 3, 1, true) },
     3142                    { { "sa", 4 }, SSAInfo(2, 3, 3, 3, 1, true) },
     3143                    { { "sa", 5 }, SSAInfo(1, 2, 2, 2, 1, true) }
     3144                }, true, false, false },
     3145            // block 2 - end
     3146            { 80, 100,
     3147                { },
     3148                {
     3149                    { { "sa", 2 }, SSAInfo(3, 9, 9, 9, 1, true) },
     3150                    { { "sa", 3 }, SSAInfo(4, 6, 6, 6, 1, true) },
     3151                    { { "sa", 4 }, SSAInfo(2, 4, 4, 4, 1, true) },
     3152                    { { "sa", 5 }, SSAInfo(3, 5, 5, 5, 1, true) }
     3153                }, false, false, true },
     3154            // block 3 - routine
     3155            { 100, 112,
     3156                { { 4, false }, { 5, false } },
     3157                {
     3158                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) },
     3159                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) },
     3160                    { { "sa", 6 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     3161                }, false, false, false },
     3162            // block 4 - routine way 0
     3163            { 112, 120,
     3164                { },
     3165                {
     3166                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3167                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3168                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) },
     3169                    { { "sa", 6 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     3170                }, false, true, true },
     3171            // block 5 - routine way 1
     3172            { 120, 128,
     3173                { },
     3174                {
     3175                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3176                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3177                    { { "sa", 2 }, SSAInfo(2, 4, 4, 4, 1, true) },
     3178                    { { "sa", 6 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     3179                }, false, true, true },
     3180            // block 6 - routine 2
     3181            { 128, 140,
     3182                { { 7, false }, { 8, false } },
     3183                {
     3184                    { { "sa", 2 }, SSAInfo(1, 5, 5, 5, 1, true) },
     3185                    { { "sa", 4 }, SSAInfo(1, 2, 2, 2, 1, true) },
     3186                    { { "sa", 6 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     3187                }, false, false, false },
     3188            // block 7 - routine 2 way 0
     3189            { 140, 148,
     3190                { },
     3191                {
     3192                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3193                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3194                    { { "sa", 2 }, SSAInfo(5, 6, 6, 6, 1, true) },
     3195                    { { "sa", 6 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     3196                }, false, true, true },
     3197            // block 8 - routine 2 way 1
     3198            { 148, 156,
     3199                { },
     3200                {
     3201                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3202                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3203                    { { "sa", 2 }, SSAInfo(5, 7, 7, 7, 1, true) },
     3204                    { { "sa", 6 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     3205                }, false, true, true },
     3206            // block 9 - routine 3
     3207            { 156, 168,
     3208                { { 10, false }, { 11, false } },
     3209                {
     3210                    { { "sa", 3 }, SSAInfo(3, 4, 4, 4, 1, true) },
     3211                    { { "sa", 5 }, SSAInfo(2, 3, 3, 3, 1, true) },
     3212                    { { "sa", 6 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     3213                }, false, false, false },
     3214            // block 10 - routine 3 way 0
     3215            { 168, 176,
     3216                { },
     3217                {
     3218                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3219                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3220                    { { "sa", 3 }, SSAInfo(4, 5, 5, 5, 1, true) },
     3221                    { { "sa", 6 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     3222                }, false, true, true },
     3223            // block 11 - routine 3 way 1
     3224            { 176, 184,
     3225                { },
     3226                {
     3227                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3228                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     3229                    { { "sa", 5 }, SSAInfo(3, 4, 4, 4, 1, true) },
     3230                    { { "sa", 6 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     3231                }, false, true, true  }
     3232        },
     3233        {   // SSA replaces
     3234            { { "sa", 2 }, { { 4, 3 }, { 6, 3 }, { 7, 3 }, { 8, 1 } } },
     3235            { { "sa", 3 }, { { 5, 4 } } },
     3236            { { "sa", 4 }, { { 3, 1 } } },
     3237            { { "sa", 5 }, { { 4, 3 } } }
    30413238        }, true, ""
    30423239    }
Note: See TracChangeset for help on using the changeset viewer.