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