Cleanup a bunch of tests. In particular do not allow target directives in
[oota-llvm.git] / test / CodeGen / Generic / 2003-05-28-ManyArgs.ll
1 ; RUN: llvm-as -f %s -o - | llc
2
3 ;; Date:     May 28, 2003.
4 ;; From:     test/Programs/External/SPEC/CINT2000/175.vpr.llvm.bc
5 ;; Function: int %main(int %argc.1, sbyte** %argv.1)
6 ;;
7 ;; Error:    A function call with about 56 arguments causes an assertion failure
8 ;;           in llc because the register allocator cannot find a register
9 ;;           not used explicitly by the call instruction.
10 ;; 
11 ;; Cause:    Regalloc was not keeping track of free registers correctly.
12 ;;           It was counting the registers allocated to all outgoing arguments,
13 ;;           even though most of those are copied to the stack (so those
14 ;;           registers are not actually used by the call instruction).
15 ;;
16 ;; Fixed:    By rewriting selection and allocation so that selection explicitly
17 ;;           inserts all copy operations required for passing arguments and
18 ;;           for the return value of a call, copying to/from registers
19 ;;           and/or to stack locations as needed.
20 ;;
21
22         %struct..s_annealing_sched = type { uint, float, float, float, float }
23         %struct..s_chan = type { uint, float, float, float, float }
24         %struct..s_det_routing_arch = type { uint, float, float, float, uint, int, short, short, short, float, float }
25         %struct..s_placer_opts = type { int, float, int, uint, sbyte*, uint, int }
26         %struct..s_router_opts = type { float, float, float, float, float, int, int, uint, int }
27         %struct..s_segment_inf = type { float, int, short, short, float, float, uint, float, float }
28         %struct..s_switch_inf = type { uint, float, float, float, float }
29
30 implementation
31
32 int %main(int %argc.1, sbyte** %argv.1) {
33 entry:          
34         %net_file = alloca [300 x sbyte]                
35         %place_file = alloca [300 x sbyte]              
36         %arch_file = alloca [300 x sbyte]               
37         %route_file = alloca [300 x sbyte]              
38         %full_stats = alloca uint               
39         %operation = alloca int         
40         %verify_binary_search = alloca uint             
41         %show_graphics = alloca uint            
42         %annealing_sched = alloca %struct..s_annealing_sched            
43         %placer_opts = alloca %struct..s_placer_opts            
44         %router_opts = alloca %struct..s_router_opts            
45         %det_routing_arch = alloca %struct..s_det_routing_arch          
46         %segment_inf = alloca %struct..s_segment_inf*           
47         %timing_inf = alloca { uint, float, float, float, float, float, float, float, float, float, float }             
48         %tmp.101 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, ubyte 4          
49         %tmp.105 = getelementptr [300 x sbyte]* %net_file, long 0, long 0               
50         %tmp.106 = getelementptr [300 x sbyte]* %arch_file, long 0, long 0              
51         %tmp.107 = getelementptr [300 x sbyte]* %place_file, long 0, long 0             
52         %tmp.108 = getelementptr [300 x sbyte]* %route_file, long 0, long 0             
53         %tmp.109 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, ubyte 0           
54         %tmp.112 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, ubyte 0          
55         %tmp.114 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, ubyte 6          
56         %tmp.118 = getelementptr %struct..s_router_opts* %router_opts, long 0, ubyte 7          
57         %tmp.135 = load int* %operation         
58         %tmp.137 = load int* %tmp.112           
59         %tmp.138 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, ubyte 1          
60         %tmp.139 = load float* %tmp.138         
61         %tmp.140 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, ubyte 2          
62         %tmp.141 = load int* %tmp.140           
63         %tmp.142 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, ubyte 3          
64         %tmp.143 = load uint* %tmp.142          
65         %tmp.145 = load sbyte** %tmp.101                
66         %tmp.146 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, ubyte 5          
67         %tmp.147 = load uint* %tmp.146          
68         %tmp.149 = load int* %tmp.114           
69         %tmp.154 = load uint* %full_stats               
70         %tmp.155 = load uint* %verify_binary_search             
71         %tmp.156 = getelementptr %struct..s_annealing_sched* %annealing_sched, long 0, ubyte 0          
72         %tmp.157 = load uint* %tmp.156          
73         %tmp.158 = getelementptr %struct..s_annealing_sched* %annealing_sched, long 0, ubyte 1          
74         %tmp.159 = load float* %tmp.158         
75         %tmp.160 = getelementptr %struct..s_annealing_sched* %annealing_sched, long 0, ubyte 2          
76         %tmp.161 = load float* %tmp.160         
77         %tmp.162 = getelementptr %struct..s_annealing_sched* %annealing_sched, long 0, ubyte 3          
78         %tmp.163 = load float* %tmp.162         
79         %tmp.164 = getelementptr %struct..s_annealing_sched* %annealing_sched, long 0, ubyte 4          
80         %tmp.165 = load float* %tmp.164         
81         %tmp.166 = getelementptr %struct..s_router_opts* %router_opts, long 0, ubyte 0          
82         %tmp.167 = load float* %tmp.166         
83         %tmp.168 = getelementptr %struct..s_router_opts* %router_opts, long 0, ubyte 1          
84         %tmp.169 = load float* %tmp.168         
85         %tmp.170 = getelementptr %struct..s_router_opts* %router_opts, long 0, ubyte 2          
86         %tmp.171 = load float* %tmp.170         
87         %tmp.172 = getelementptr %struct..s_router_opts* %router_opts, long 0, ubyte 3          
88         %tmp.173 = load float* %tmp.172         
89         %tmp.174 = getelementptr %struct..s_router_opts* %router_opts, long 0, ubyte 4          
90         %tmp.175 = load float* %tmp.174         
91         %tmp.176 = getelementptr %struct..s_router_opts* %router_opts, long 0, ubyte 5          
92         %tmp.177 = load int* %tmp.176           
93         %tmp.178 = getelementptr %struct..s_router_opts* %router_opts, long 0, ubyte 6          
94         %tmp.179 = load int* %tmp.178           
95         %tmp.181 = load uint* %tmp.118          
96         %tmp.182 = getelementptr %struct..s_router_opts* %router_opts, long 0, ubyte 8          
97         %tmp.183 = load int* %tmp.182           
98         %tmp.184 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, ubyte 0                
99         %tmp.185 = load uint* %tmp.184          
100         %tmp.186 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, ubyte 1                
101         %tmp.187 = load float* %tmp.186         
102         %tmp.188 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, ubyte 2                
103         %tmp.189 = load float* %tmp.188         
104         %tmp.190 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, ubyte 3                
105         %tmp.191 = load float* %tmp.190         
106         %tmp.192 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, ubyte 4                
107         %tmp.193 = load uint* %tmp.192          
108         %tmp.194 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, ubyte 5                
109         %tmp.195 = load int* %tmp.194           
110         %tmp.196 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, ubyte 6                
111         %tmp.197 = load short* %tmp.196         
112         %tmp.198 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, ubyte 7                
113         %tmp.199 = load short* %tmp.198         
114         %tmp.200 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, ubyte 8                
115         %tmp.201 = load short* %tmp.200         
116         %tmp.202 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, ubyte 9                
117         %tmp.203 = load float* %tmp.202         
118         %tmp.204 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, ubyte 10               
119         %tmp.205 = load float* %tmp.204         
120         %tmp.206 = load %struct..s_segment_inf** %segment_inf           
121         %tmp.208 = load uint* %tmp.109          
122         %tmp.209 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, ubyte 1           
123         %tmp.210 = load float* %tmp.209         
124         %tmp.211 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, ubyte 2           
125         %tmp.212 = load float* %tmp.211         
126         %tmp.213 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, ubyte 3           
127         %tmp.214 = load float* %tmp.213         
128         %tmp.215 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, ubyte 4           
129         %tmp.216 = load float* %tmp.215         
130         %tmp.217 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, ubyte 5           
131         %tmp.218 = load float* %tmp.217         
132         %tmp.219 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, ubyte 6           
133         %tmp.220 = load float* %tmp.219         
134         %tmp.221 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, ubyte 7           
135         %tmp.222 = load float* %tmp.221         
136         %tmp.223 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, ubyte 8           
137         %tmp.224 = load float* %tmp.223         
138         %tmp.225 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, ubyte 9           
139         %tmp.226 = load float* %tmp.225         
140         %tmp.227 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, ubyte 10          
141         %tmp.228 = load float* %tmp.227         
142         call void %place_and_route( int %tmp.135, int %tmp.137, float %tmp.139, int %tmp.141, uint %tmp.143, sbyte* %tmp.145, uint %tmp.147, int %tmp.149, sbyte* %tmp.107, sbyte* %tmp.105, sbyte* %tmp.106, sbyte* %tmp.108, uint %tmp.154, uint %tmp.155, uint %tmp.157, float %tmp.159, float %tmp.161, float %tmp.163, float %tmp.165, float %tmp.167, float %tmp.169, float %tmp.171, float %tmp.173, float %tmp.175, int %tmp.177, int %tmp.179, uint %tmp.181, int %tmp.183, uint %tmp.185, float %tmp.187, float %tmp.189, float %tmp.191, uint %tmp.193, int %tmp.195, short %tmp.197, short %tmp.199, short %tmp.201, float %tmp.203, float %tmp.205, %struct..s_segment_inf* %tmp.206, uint %tmp.208, float %tmp.210, float %tmp.212, float %tmp.214, float %tmp.216, float %tmp.218, float %tmp.220, float %tmp.222, float %tmp.224, float %tmp.226, float %tmp.228 )
143         %tmp.231 = load uint* %show_graphics            
144         %tmp.232 = setne uint %tmp.231, 0               
145         br bool %tmp.232, label %then.2, label %endif.2
146
147 then.2:         
148         br label %endif.2
149
150 endif.2:
151         ret int 0
152 }
153
154 declare int %printf(sbyte*, ...)
155
156 declare void %place_and_route(int, int, float, int, uint, sbyte*, uint, int, sbyte*, sbyte*, sbyte*, sbyte*, uint, uint, uint, float, float, float, float, float, float, float, float, float, int, int, uint, int, uint, float, float, float, uint, int, short, short, short, float, float, %struct..s_segment_inf*, uint, float, float, float, float, float, float, float, float, float, float)