Changeset 3990 in CLRX


Ignore:
Timestamp:
Apr 12, 2018, 4:06:49 PM (6 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Add new testcase without routines but more complex with loops and jumps.

File:
1 edited

Legend:

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

    r3989 r3990  
    26392639        true, ""
    26402640    },
     2641    {   // 19 - complex condition/loop testcase
     2642        R"ffDXD(.regvar sa:s:12, va:v:8
     2643        s_mov_b32 sa[2], s2
     2644        s_mov_b32 sa[3], s3
     2645        s_mov_b32 sa[4], s4
     2646        s_mov_b32 sa[5], s5
     2647        s_mov_b32 sa[6], s6
     2648        s_mov_b32 sa[7], s7
     2649        s_mov_b32 sa[8], s8
     2650        s_mov_b32 sa[9], s9
     2651        s_mov_b32 sa[10], s10
     2652        s_mov_b32 sa[11], s11
     2653       
     2654        .cf_jump a0,a1,a2,a3
     2655        s_setpc_b64 s[0:1]
     2656       
     2657end:    s_xor_b32 sa[2], sa[2], sa[0]
     2658        s_xor_b32 sa[3], sa[3], sa[0]
     2659        s_xor_b32 sa[4], sa[4], sa[1]
     2660        s_xor_b32 sa[5], sa[5], sa[1]
     2661        s_xor_b32 sa[6], sa[6], sa[0]
     2662        s_xor_b32 sa[7], sa[7], sa[1]
     2663        s_xor_b32 sa[8], sa[8], sa[0]
     2664        s_xor_b32 sa[9], sa[9], sa[1]
     2665        s_xor_b32 sa[10], sa[10], sa[0]
     2666        s_xor_b32 sa[11], sa[11], sa[1]
     2667        s_endpgm
     2668       
     2669        # jumps
     2670a0:     s_xor_b32 sa[2], sa[2], sa[0]
     2671        s_xor_b32 sa[4], sa[4], sa[0]
     2672       
     2673        .cf_cjump a00,a01,a02
     2674        s_setpc_b64 s[0:1]
     2675a0end:
     2676        s_xor_b32 sa[2], sa[2], sa[0]
     2677        s_xor_b32 sa[4], sa[3], sa[1]
     2678        s_branch end
     2679       
     2680a00:    s_xor_b32 sa[2], sa[2], sa[0]
     2681        s_xor_b32 sa[4], sa[4], sa[0]
     2682        s_branch a0end
     2683       
     2684a01:    s_xor_b32 sa[2], sa[3], sa[0]
     2685        s_xor_b32 sa[4], sa[4], sa[1]
     2686        s_cbranch_scc1 a0end
     2687       
     2688a02:    s_xor_b32 sa[2], sa[2], sa[0]
     2689        s_xor_b32 sa[4], sa[4], sa[1]
     2690        .cf_jump a00, a01
     2691        s_setpc_b64 s[0:1]
     2692       
     2693        # loops
     2694a1:     s_xor_b32 sa[3], sa[3], sa[0]
     2695        s_xor_b32 sa[5], sa[5], sa[1]
     2696       
     2697a1loop0:
     2698        s_xor_b32 sa[3], sa[3], sa[0]
     2699        s_xor_b32 sa[5], sa[5], sa[1]
     2700        s_and_b32 sa[5], sa[5], sa[3]
     2701        s_cbranch_execz a1end0
     2702a1loop1:
     2703        s_xor_b32 sa[3], sa[3], sa[0]
     2704        s_xor_b32 sa[4], sa[3], sa[1]
     2705        s_cbranch_execz a1end1
     2706        s_xor_b32 sa[5], sa[5], sa[1]
     2707        s_xor_b32 sa[3], sa[3], sa[1]
     2708        s_xor_b32 sa[2], sa[3], sa[5]
     2709        s_cbranch_vccnz a1loop1
     2710       
     2711        s_xor_b32 sa[5], sa[5], sa[1]
     2712        s_cbranch_vccnz a1loop0
     2713       
     2714        s_xor_b32 sa[3], sa[3], sa[1]
     2715        s_branch end
     2716       
     2717a1end0:
     2718        s_xor_b32 sa[3], sa[3], sa[0]
     2719        s_branch end
     2720
     2721a1end1:
     2722        s_xor_b32 sa[5], sa[5], sa[0]
     2723        s_cbranch_scc0 a1loop0
     2724        s_branch end
     2725       
     2726        # loops2
     2727a2:     s_xor_b32 sa[6], sa[6], sa[0]
     2728        s_xor_b32 sa[7], sa[7], sa[1]
     2729a2loop0:
     2730        s_xor_b32 sa[6], sa[6], sa[0]
     2731        s_xor_b32 sa[7], sa[7], sa[1]
     2732a2loop1:
     2733        s_xor_b32 sa[8], sa[8], sa[0]
     2734        s_xor_b32 sa[9], sa[9], sa[1]
     2735        s_cbranch_scc1 a2loop1
     2736       
     2737a2loop2:
     2738        s_xor_b32 sa[5], sa[5], sa[0]
     2739        s_cbranch_scc1 a2loop2
     2740       
     2741        s_xor_b32 sa[7], sa[7], sa[1]
     2742        s_cbranch_scc1 a2loop0
     2743       
     2744a2loop3:
     2745        s_xor_b32 sa[6], sa[6], sa[0]
     2746        s_xor_b32 sa[7], sa[7], sa[1]
     2747a2loop4:
     2748        s_xor_b32 sa[8], sa[8], sa[0]
     2749        s_xor_b32 sa[9], sa[8], sa[1]
     2750        s_cbranch_vccz a2loop0
     2751        s_cbranch_scc1 a2loop4
     2752       
     2753        s_xor_b32 sa[7], sa[9], sa[1]
     2754        s_cbranch_scc1 a2loop3
     2755       
     2756        s_branch end
     2757       
     2758        # stupid loop
     2759a3:
     2760        s_xor_b32 sa[10], sa[10], sa[0]
     2761        s_xor_b32 sa[11], sa[11], sa[1]
     2762a3loop:
     2763        s_xor_b32 sa[10], sa[10], sa[0]
     2764        s_xor_b32 sa[11], sa[11], sa[1]
     2765        s_branch a3loop
     2766)ffDXD",
     2767        {
     2768            {   // block 0 - start
     2769                0, 44,
     2770                { { 2, false }, { 7, false }, { 16, false }, { 26, false } },
     2771                {
     2772                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2773                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2774                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2775                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2776                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2777                    { { "", 5 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2778                    { { "", 6 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2779                    { { "", 7 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2780                    { { "", 8 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2781                    { { "", 9 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2782                    { { "", 10 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2783                    { { "", 11 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2784                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2785                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2786                    { { "sa", 4 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2787                    { { "sa", 5 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2788                    { { "sa", 6 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2789                    { { "sa", 7 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2790                    { { "sa", 8 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2791                    { { "sa", 9 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2792                    { { "sa", 10 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2793                    { { "sa", 11 }, SSAInfo(0, 1, 1, 1, 1, false) }
     2794                }, false, false, true },
     2795            {   // block 1 - end
     2796                44, 88,
     2797                { },
     2798                {
     2799                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2800                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2801                    { { "sa", 2 }, SSAInfo(3, 4, 4, 4, 1, true) },
     2802                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2803                    { { "sa", 4 }, SSAInfo(3, 4, 4, 4, 1, true) },
     2804                    { { "sa", 5 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2805                    { { "sa", 6 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2806                    { { "sa", 7 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2807                    { { "sa", 8 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2808                    { { "sa", 9 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2809                    { { "sa", 10 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2810                    { { "sa", 11 }, SSAInfo(1, 2, 2, 2, 1, true) }
     2811                }, false, false, true },
     2812            {   // block 2 - a0
     2813                88, 100,
     2814                { { 3, false }, { 4, false }, { 5, false }, { 6, false } },
     2815                {
     2816                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2817                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2818                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2819                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2820                    { { "sa", 4 }, SSAInfo(1, 2, 2, 2, 1, true) }
     2821                }, false, false, false },
     2822            {   // block 3 - a0end
     2823                100, 112,
     2824                { { 1, false } },
     2825                {
     2826                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2827                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2828                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) },
     2829                    { { "sa", 3 }, SSAInfo(1, SIZE_MAX, 2, SIZE_MAX, 0, true) },
     2830                    { { "sa", 4 }, SSAInfo(2, 3, 3, 3, 1, false) }
     2831                }, false, false, true },
     2832            {   // block 4 - a00
     2833                112, 124,
     2834                { { 3, false } },
     2835                {
     2836                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2837                    { { "sa", 2 }, SSAInfo(2, 5, 5, 5, 1, true) },
     2838                    { { "sa", 4 }, SSAInfo(2, 5, 5, 5, 1, true) }
     2839                }, false, false, true },
     2840            {   // block 5 - a01
     2841                124, 136,
     2842                { { 3, false }, { 6, false } },
     2843                {
     2844                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2845                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2846                    { { "sa", 2 }, SSAInfo(2, 6, 6, 6, 1, false) },
     2847                    { { "sa", 3 }, SSAInfo(1, SIZE_MAX, 3, SIZE_MAX, 0, true) },
     2848                    { { "sa", 4 }, SSAInfo(2, 6, 6, 6, 1, true) }
     2849                }, false, false, false },
     2850            {   // block 6 - a02
     2851                136, 148,
     2852                { { 4, false }, { 5, false } },
     2853                {
     2854                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2855                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2856                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2857                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2858                    { { "sa", 2 }, SSAInfo(6, 7, 7, 7, 1, true) },
     2859                    { { "sa", 4 }, SSAInfo(6, 7, 7, 7, 1, true) }
     2860                }, false, false, true },
     2861            {   // block 7 - a1
     2862                148, 156,
     2863                { },
     2864                {
     2865                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2866                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2867                    { { "sa", 3 }, SSAInfo(1, 3, 3, 3, 1, true) },
     2868                    { { "sa", 5 }, SSAInfo(1, 3, 3, 3, 1, true) }
     2869                }, false, false, false },
     2870            {   // block 8 - a1loop0
     2871                156, 172,
     2872                { { 9, false }, { 13, false } },
     2873                {
     2874                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2875                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2876                    { { "sa", 3 }, SSAInfo(3, 4, 4, 4, 1, true) },
     2877                    { { "sa", 5 }, SSAInfo(3, 4, 4, 5, 2, true) }
     2878                }, false, false, false },
     2879            {   // block 9 - a1loop1
     2880                172, 184,
     2881                { { 10, false }, { 14, false } },
     2882                {
     2883                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2884                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2885                    { { "sa", 3 }, SSAInfo(4, 5, 5, 5, 1, true) },
     2886                    { { "sa", 4 }, SSAInfo(1, 8, 8, 8, 1, false) }
     2887                }, false, false, false },
     2888            {   // block 10 - after jump a1end1
     2889                184, 200,
     2890                { { 9, false }, { 11, false } },
     2891                {
     2892                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2893                    { { "sa", 2 }, SSAInfo(1, 8, 8, 8, 1, false) },
     2894                    { { "sa", 3 }, SSAInfo(5, 6, 6, 6, 1, true) },
     2895                    { { "sa", 5 }, SSAInfo(5, 6, 6, 6, 1, true) }
     2896                }, false, false, false },
     2897            {   // block 11 - a1loop0 end
     2898                200, 208,
     2899                { { 8, false }, { 12, false } },
     2900                {
     2901                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2902                    { { "sa", 5 }, SSAInfo(6, 7, 7, 7, 1, true) }
     2903                }, false, false, false },
     2904            {   // block 12 - a1 end
     2905                208, 216,
     2906                { { 1, false } },
     2907                {
     2908                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2909                    { { "sa", 3 }, SSAInfo(6, 7, 7, 7, 1, true) }
     2910                }, false, false, true },
     2911            {   // block 13 - a1end0
     2912                216, 224,
     2913                { { 1, false } },
     2914                {
     2915                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2916                    { { "sa", 3 }, SSAInfo(4, 8, 8, 8, 1, true) }
     2917                }, false, false, true },
     2918            {   // block 14 - a1end1
     2919                224, 232,
     2920                { { 8, false }, { 15, false } },
     2921                {
     2922                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2923                    { { "sa", 5 }, SSAInfo(5, 8, 8, 8, 1, true) }
     2924                }, false, false, false },
     2925            {   // block 15 - jump to end
     2926                232, 236,
     2927                { { 1, false } },
     2928                { }, false, false, true },
     2929            {   // block 16 - a2
     2930                236, 244,
     2931                { },
     2932                {
     2933                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2934                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2935                    { { "sa", 6 }, SSAInfo(1, 3, 3, 3, 1, true) },
     2936                    { { "sa", 7 }, SSAInfo(1, 3, 3, 3, 1, true) }
     2937                }, false, false, false },
     2938            {   // block 17 - a2loop0
     2939                244, 252,
     2940                { },
     2941                {
     2942                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2943                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2944                    { { "sa", 6 }, SSAInfo(3, 4, 4, 4, 1, true) },
     2945                    { { "sa", 7 }, SSAInfo(3, 4, 4, 4, 1, true) }
     2946                }, false, false, false },
     2947            {   // block 18 - a2loop1
     2948                252, 264,
     2949                { { 18, false }, { 19, false } },
     2950                {
     2951                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2952                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2953                    { { "sa", 8 }, SSAInfo(1, 3, 3, 3, 1, true) },
     2954                    { { "sa", 9 }, SSAInfo(1, 3, 3, 3, 1, true) }
     2955                }, false, false, false },
     2956            {   // block 19 - a2loop2
     2957                264, 272,
     2958                { { 19, false }, { 20, false } },
     2959                {
     2960                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2961                    { { "sa", 5 }, SSAInfo(1, 9, 9, 9, 1, true) }
     2962                }, false, false, false },
     2963            {   // block 20 - a2loop0 end
     2964                272, 280,
     2965                { { 17, false }, { 21, false } },
     2966                {
     2967                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2968                    { { "sa", 7 }, SSAInfo(4, 5, 5, 5, 1, true) }
     2969                }, false, false, false },
     2970            {   // block 21 - a2loop3
     2971                280, 288,
     2972                { },
     2973                {
     2974                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2975                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2976                    { { "sa", 6 }, SSAInfo(4, 5, 5, 5, 1, true) },
     2977                    { { "sa", 7 }, SSAInfo(5, 6, 6, 6, 1, true) }
     2978                }, false, false, false },
     2979            {   // block 22 - a2loop4
     2980                288, 300,
     2981                { { 17, false }, { 23, false } },
     2982                {
     2983                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2984                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2985                    { { "sa", 8 }, SSAInfo(3, 4, 4, 4, 1, true) },
     2986                    { { "sa", 9 }, SSAInfo(3, 4, 4, 4, 1, false) }
     2987                }, false, false, false },
     2988            {   // block 23 - after jump a2loop0
     2989                300, 304,
     2990                { { 22, false }, { 24, false } },
     2991                { }, false, false, false },
     2992            {   // block 24 - a2loop3 end
     2993                304, 312,
     2994                { { 21, false }, { 25, false } },
     2995                {
     2996                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2997                    { { "sa", 7 }, SSAInfo(6, 7, 7, 7, 1, false) },
     2998                    { { "sa", 9 }, SSAInfo(4, SIZE_MAX, 5, SIZE_MAX, 0, true) }
     2999                }, false, false, false },
     3000            {   // block 25 - to end
     3001                312, 316,
     3002                { { 1, false } },
     3003                { }, false, false, true },
     3004            {   // block 26 - a3
     3005                316, 324,
     3006                { },
     3007                {
     3008                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3009                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3010                    { { "sa", 10 }, SSAInfo(1, 3, 3, 3, 1, true) },
     3011                    { { "sa", 11 }, SSAInfo(1, 3, 3, 3, 1, true) }
     3012                }, false, false, false },
     3013            {   // block 27 - a3loop
     3014                324, 336,
     3015                { { 27, false } },
     3016                {
     3017                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3018                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     3019                    { { "sa", 10 }, SSAInfo(3, 4, 4, 4, 1, true) },
     3020                    { { "sa", 11 }, SSAInfo(3, 4, 4, 4, 1, true) }
     3021                }, false, false, true }
     3022        },
     3023        {   // SSA replaces
     3024            { { "sa", 2 }, { { 5, 2 }, { 6, 2 }, { 7, 2 }, { 8, 3 }, { 3, 1 } } },
     3025            { { "sa", 3 }, { { 6, 4 }, { 6, 3 }, { 7, 1 }, { 5, 3 },
     3026                        { 5, 1 }, { 8, 1 } } },
     3027            { { "sa", 4 }, { { 7, 2 }, { 6, 2 }, { 8, 3 }, { 3, 1 } } },
     3028            { { "sa", 5 }, { { 6, 5 }, { 7, 3 }, { 7, 1 }, { 8, 3 },
     3029                        { 8, 1 }, { 5, 1 }, { 9, 1 } } },
     3030            { { "sa", 6 }, { { 4, 3 }, { 5, 3 }, { 5, 4 }, { 5, 1 } } },
     3031            { { "sa", 7 }, { { 5, 3 }, { 6, 3 }, { 7, 5 }, { 7, 1 } } },
     3032            { { "sa", 8 }, { { 3, 1 }, { 4, 1 }, { 4, 3 } } },
     3033            { { "sa", 9 }, { { 3, 1 }, { 4, 1 } } },
     3034            { { "sa", 10 }, { { 4, 3 } } },
     3035            { { "sa", 11 }, { { 4, 3 } } }
     3036        },
     3037        true, ""
     3038    },
    26413039    { nullptr }
    26423040};
Note: See TracChangeset for help on using the changeset viewer.