vararg2.ssa 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684
  1. export function $qbeprint0(l %fmt, ...) {
  2. @start
  3. %fmtdbl =l alloc4 4
  4. %fmtint =l alloc4 4
  5. %emptys =l alloc4 4
  6. storew 2122789, %fmtint
  7. storew 2123557, %fmtdbl
  8. storew 0, %emptys
  9. %vp =l alloc8 32
  10. %fmt1 =l add 1, %fmt
  11. vastart %vp
  12. @loop
  13. %p =l phi @start %fmt1, @casef %p1, @cased %p1
  14. %c =w loadsb %p
  15. %p1 =l add 3, %p
  16. jnz %c, @loop1, @end
  17. @loop1
  18. %isg =w ceqw %c, 103
  19. jnz %isg, @casef, @cased
  20. @casef
  21. %dbl =d vaarg %vp
  22. %r =w call $printf(l %fmtdbl, ..., d %dbl)
  23. jmp @loop
  24. @cased
  25. %int =w vaarg %vp
  26. %r =w call $printf(l %fmtint, ..., w %int)
  27. jmp @loop
  28. @end
  29. %r =w call $puts(l %emptys)
  30. ret
  31. }
  32. export function $qbecall0(l %fmt, ...) {
  33. @start
  34. %vp =l alloc8 32
  35. vastart %vp
  36. %r =w call $print(l %fmt, l %vp)
  37. ret
  38. }
  39. export function $qbeprint1(w %argw0, l %fmt, ...) {
  40. @start
  41. %fmtdbl =l alloc4 4
  42. %fmtint =l alloc4 4
  43. %emptys =l alloc4 4
  44. storew 2122789, %fmtint
  45. storew 2123557, %fmtdbl
  46. storew 0, %emptys
  47. %vp =l alloc8 32
  48. %fmt1 =l add 1, %fmt
  49. vastart %vp
  50. @loop
  51. %p =l phi @start %fmt1, @casef %p1, @cased %p1
  52. %c =w loadsb %p
  53. %p1 =l add 3, %p
  54. jnz %c, @loop1, @end
  55. @loop1
  56. %isg =w ceqw %c, 103
  57. jnz %isg, @casef, @cased
  58. @casef
  59. %dbl =d vaarg %vp
  60. %r =w call $printf(l %fmtdbl, ..., d %dbl)
  61. jmp @loop
  62. @cased
  63. %int =w vaarg %vp
  64. %r =w call $printf(l %fmtint, ..., w %int)
  65. jmp @loop
  66. @end
  67. %r =w call $puts(l %emptys)
  68. ret
  69. }
  70. export function $qbecall1(w %argw0, l %fmt, ...) {
  71. @start
  72. %vp =l alloc8 32
  73. vastart %vp
  74. %r =w call $print(l %fmt, l %vp)
  75. ret
  76. }
  77. export function $qbeprint2(d %argd0, l %fmt, ...) {
  78. @start
  79. %fmtdbl =l alloc4 4
  80. %fmtint =l alloc4 4
  81. %emptys =l alloc4 4
  82. storew 2122789, %fmtint
  83. storew 2123557, %fmtdbl
  84. storew 0, %emptys
  85. %vp =l alloc8 32
  86. %fmt1 =l add 1, %fmt
  87. vastart %vp
  88. @loop
  89. %p =l phi @start %fmt1, @casef %p1, @cased %p1
  90. %c =w loadsb %p
  91. %p1 =l add 3, %p
  92. jnz %c, @loop1, @end
  93. @loop1
  94. %isg =w ceqw %c, 103
  95. jnz %isg, @casef, @cased
  96. @casef
  97. %dbl =d vaarg %vp
  98. %r =w call $printf(l %fmtdbl, ..., d %dbl)
  99. jmp @loop
  100. @cased
  101. %int =w vaarg %vp
  102. %r =w call $printf(l %fmtint, ..., w %int)
  103. jmp @loop
  104. @end
  105. %r =w call $puts(l %emptys)
  106. ret
  107. }
  108. export function $qbecall2(d %argd0, l %fmt, ...) {
  109. @start
  110. %vp =l alloc8 32
  111. vastart %vp
  112. %r =w call $print(l %fmt, l %vp)
  113. ret
  114. }
  115. export function $qbeprint3(w %argw0, w %argw1, w %argw2, w %argw3, l %fmt, ...) {
  116. @start
  117. %fmtdbl =l alloc4 4
  118. %fmtint =l alloc4 4
  119. %emptys =l alloc4 4
  120. storew 2122789, %fmtint
  121. storew 2123557, %fmtdbl
  122. storew 0, %emptys
  123. %vp =l alloc8 32
  124. %fmt1 =l add 1, %fmt
  125. vastart %vp
  126. @loop
  127. %p =l phi @start %fmt1, @casef %p1, @cased %p1
  128. %c =w loadsb %p
  129. %p1 =l add 3, %p
  130. jnz %c, @loop1, @end
  131. @loop1
  132. %isg =w ceqw %c, 103
  133. jnz %isg, @casef, @cased
  134. @casef
  135. %dbl =d vaarg %vp
  136. %r =w call $printf(l %fmtdbl, ..., d %dbl)
  137. jmp @loop
  138. @cased
  139. %int =w vaarg %vp
  140. %r =w call $printf(l %fmtint, ..., w %int)
  141. jmp @loop
  142. @end
  143. %r =w call $puts(l %emptys)
  144. ret
  145. }
  146. export function $qbecall3(w %argw0, w %argw1, w %argw2, w %argw3, l %fmt, ...) {
  147. @start
  148. %vp =l alloc8 32
  149. vastart %vp
  150. %r =w call $print(l %fmt, l %vp)
  151. ret
  152. }
  153. export function $qbeprint4(d %argd0, d %argd1, d %argd2, d %argd3, d %argd4, d %argd5, l %fmt, ...) {
  154. @start
  155. %fmtdbl =l alloc4 4
  156. %fmtint =l alloc4 4
  157. %emptys =l alloc4 4
  158. storew 2122789, %fmtint
  159. storew 2123557, %fmtdbl
  160. storew 0, %emptys
  161. %vp =l alloc8 32
  162. %fmt1 =l add 1, %fmt
  163. vastart %vp
  164. @loop
  165. %p =l phi @start %fmt1, @casef %p1, @cased %p1
  166. %c =w loadsb %p
  167. %p1 =l add 3, %p
  168. jnz %c, @loop1, @end
  169. @loop1
  170. %isg =w ceqw %c, 103
  171. jnz %isg, @casef, @cased
  172. @casef
  173. %dbl =d vaarg %vp
  174. %r =w call $printf(l %fmtdbl, ..., d %dbl)
  175. jmp @loop
  176. @cased
  177. %int =w vaarg %vp
  178. %r =w call $printf(l %fmtint, ..., w %int)
  179. jmp @loop
  180. @end
  181. %r =w call $puts(l %emptys)
  182. ret
  183. }
  184. export function $qbecall4(d %argd0, d %argd1, d %argd2, d %argd3, d %argd4, d %argd5, l %fmt, ...) {
  185. @start
  186. %vp =l alloc8 32
  187. vastart %vp
  188. %r =w call $print(l %fmt, l %vp)
  189. ret
  190. }
  191. export function $qbeprint5(w %argw0, w %argw1, w %argw2, w %argw3, w %argw4, d %argd0, d %argd1, d %argd2, d %argd3, d %argd4, d %argd5, d %argd6, l %fmt, ...) {
  192. @start
  193. %fmtdbl =l alloc4 4
  194. %fmtint =l alloc4 4
  195. %emptys =l alloc4 4
  196. storew 2122789, %fmtint
  197. storew 2123557, %fmtdbl
  198. storew 0, %emptys
  199. %vp =l alloc8 32
  200. %fmt1 =l add 1, %fmt
  201. vastart %vp
  202. @loop
  203. %p =l phi @start %fmt1, @casef %p1, @cased %p1
  204. %c =w loadsb %p
  205. %p1 =l add 3, %p
  206. jnz %c, @loop1, @end
  207. @loop1
  208. %isg =w ceqw %c, 103
  209. jnz %isg, @casef, @cased
  210. @casef
  211. %dbl =d vaarg %vp
  212. %r =w call $printf(l %fmtdbl, ..., d %dbl)
  213. jmp @loop
  214. @cased
  215. %int =w vaarg %vp
  216. %r =w call $printf(l %fmtint, ..., w %int)
  217. jmp @loop
  218. @end
  219. %r =w call $puts(l %emptys)
  220. ret
  221. }
  222. export function $qbecall5(w %argw0, w %argw1, w %argw2, w %argw3, w %argw4, d %argd0, d %argd1, d %argd2, d %argd3, d %argd4, d %argd5, d %argd6, l %fmt, ...) {
  223. @start
  224. %vp =l alloc8 32
  225. vastart %vp
  226. %r =w call $print(l %fmt, l %vp)
  227. ret
  228. }
  229. export function $qbeprint6(w %argw0, w %argw1, w %argw2, w %argw3, w %argw4, w %argw5, w %argw6, w %argw7, w %argw8, w %argw9, d %argd0, d %argd1, d %argd2, d %argd3, d %argd4, d %argd5, d %argd6, d %argd7, d %argd8, d %argd9, l %fmt, ...) {
  230. @start
  231. %fmtdbl =l alloc4 4
  232. %fmtint =l alloc4 4
  233. %emptys =l alloc4 4
  234. storew 2122789, %fmtint
  235. storew 2123557, %fmtdbl
  236. storew 0, %emptys
  237. %vp =l alloc8 32
  238. %fmt1 =l add 1, %fmt
  239. vastart %vp
  240. @loop
  241. %p =l phi @start %fmt1, @casef %p1, @cased %p1
  242. %c =w loadsb %p
  243. %p1 =l add 3, %p
  244. jnz %c, @loop1, @end
  245. @loop1
  246. %isg =w ceqw %c, 103
  247. jnz %isg, @casef, @cased
  248. @casef
  249. %dbl =d vaarg %vp
  250. %r =w call $printf(l %fmtdbl, ..., d %dbl)
  251. jmp @loop
  252. @cased
  253. %int =w vaarg %vp
  254. %r =w call $printf(l %fmtint, ..., w %int)
  255. jmp @loop
  256. @end
  257. %r =w call $puts(l %emptys)
  258. ret
  259. }
  260. export function $qbecall6(w %argw0, w %argw1, w %argw2, w %argw3, w %argw4, w %argw5, w %argw6, w %argw7, w %argw8, w %argw9, d %argd0, d %argd1, d %argd2, d %argd3, d %argd4, d %argd5, d %argd6, d %argd7, d %argd8, d %argd9, l %fmt, ...) {
  261. @start
  262. %vp =l alloc8 32
  263. vastart %vp
  264. %r =w call $print(l %fmt, l %vp)
  265. ret
  266. }
  267. export function $qbeprint7(w %argw0, w %argw1, w %argw2, w %argw3, w %argw4, w %argw5, w %argw6, w %argw7, w %argw8, l %fmt, ...) {
  268. @start
  269. %fmtdbl =l alloc4 4
  270. %fmtint =l alloc4 4
  271. %emptys =l alloc4 4
  272. storew 2122789, %fmtint
  273. storew 2123557, %fmtdbl
  274. storew 0, %emptys
  275. %vp =l alloc8 32
  276. %fmt1 =l add 1, %fmt
  277. vastart %vp
  278. @loop
  279. %p =l phi @start %fmt1, @casef %p1, @cased %p1
  280. %c =w loadsb %p
  281. %p1 =l add 3, %p
  282. jnz %c, @loop1, @end
  283. @loop1
  284. %isg =w ceqw %c, 103
  285. jnz %isg, @casef, @cased
  286. @casef
  287. %dbl =d vaarg %vp
  288. %r =w call $printf(l %fmtdbl, ..., d %dbl)
  289. jmp @loop
  290. @cased
  291. %int =w vaarg %vp
  292. %r =w call $printf(l %fmtint, ..., w %int)
  293. jmp @loop
  294. @end
  295. %r =w call $puts(l %emptys)
  296. ret
  297. }
  298. export function $qbecall7(w %argw0, w %argw1, w %argw2, w %argw3, w %argw4, w %argw5, w %argw6, w %argw7, w %argw8, l %fmt, ...) {
  299. @start
  300. %vp =l alloc8 32
  301. vastart %vp
  302. %r =w call $print(l %fmt, l %vp)
  303. ret
  304. }
  305. # >>> driver
  306. # #include <stdarg.h>
  307. # #include <stdio.h>
  308. # extern void qbeprint0(char *, ...);
  309. # extern void qbecall0(char *, ...);
  310. # extern void qbeprint1(int argw0, char *, ...);
  311. # extern void qbecall1(int argw0, char *, ...);
  312. # extern void qbeprint2(double argd0, char *, ...);
  313. # extern void qbecall2(double argd0, char *, ...);
  314. # extern void qbeprint3(int argw0, int argw1, int argw2, int argw3, char *, ...);
  315. # extern void qbecall3(int argw0, int argw1, int argw2, int argw3, char *, ...);
  316. # extern void qbeprint4(double argd0, double argd1, double argd2, double argd3, double argd4, double argd5, char *, ...);
  317. # extern void qbecall4(double argd0, double argd1, double argd2, double argd3, double argd4, double argd5, char *, ...);
  318. # extern void qbeprint5(int argw0, int argw1, int argw2, int argw3, int argw4, double argd0, double argd1, double argd2, double argd3, double argd4, double argd5, double argd6, char *, ...);
  319. # extern void qbecall5(int argw0, int argw1, int argw2, int argw3, int argw4, double argd0, double argd1, double argd2, double argd3, double argd4, double argd5, double argd6, char *, ...);
  320. # extern void qbeprint6(int argw0, int argw1, int argw2, int argw3, int argw4, int argw5, int argw6, int argw7, int argw8, int argw9, double argd0, double argd1, double argd2, double argd3, double argd4, double argd5, double argd6, double argd7, double argd8, double argd9, char *, ...);
  321. # extern void qbecall6(int argw0, int argw1, int argw2, int argw3, int argw4, int argw5, int argw6, int argw7, int argw8, int argw9, double argd0, double argd1, double argd2, double argd3, double argd4, double argd5, double argd6, double argd7, double argd8, double argd9, char *, ...);
  322. # extern void qbeprint7(int argw0, int argw1, int argw2, int argw3, int argw4, int argw5, int argw6, int argw7, int argw8, char *, ...);
  323. # extern void qbecall7(int argw0, int argw1, int argw2, int argw3, int argw4, int argw5, int argw6, int argw7, int argw8, char *, ...);
  324. # int print(char *fmt, va_list *ap) {
  325. # return vprintf(fmt, *ap);
  326. # }
  327. # int main() {
  328. # puts("# (0 int, 0 double)");
  329. # qbeprint0("%d \n", 3);
  330. # qbecall0("%d \n", 3);
  331. # qbeprint0("%g \n", -9.5);
  332. # qbecall0("%g \n", -9.5);
  333. # qbeprint0("%d %g \n", -5, -5.536);
  334. # qbecall0("%d %g \n", -5, -5.536);
  335. # qbeprint0("%g %g \n", 4.729, 3.534);
  336. # qbecall0("%g %g \n", 4.729, 3.534);
  337. # qbeprint0("%d %d %d %d \n", 8, -9, -2, -10);
  338. # qbecall0("%d %d %d %d \n", 8, -9, -2, -10);
  339. # qbeprint0("%g %g %g %g \n", -5.627, 0.1071, -9.469, -6.023);
  340. # qbecall0("%g %g %g %g \n", -5.627, 0.1071, -9.469, -6.023);
  341. # qbeprint0("%d %g %d %g \n", 3, 0.8988, -6, 1.785);
  342. # qbecall0("%d %g %d %g \n", 3, 0.8988, -6, 1.785);
  343. # qbeprint0("%g %g %d %d \n", 6.189, -9.87, 6, 4);
  344. # qbecall0("%g %g %d %d \n", 6.189, -9.87, 6, 4);
  345. # qbeprint0("%d %d %g %g \n", -3, -7, 9.144, -3.268);
  346. # qbecall0("%d %d %g %g \n", -3, -7, 9.144, -3.268);
  347. # qbeprint0("\n");
  348. # qbecall0("\n");
  349. # puts("# (1 int, 0 double)");
  350. # qbeprint1(0, "%d \n", -9);
  351. # qbecall1(0, "%d \n", -9);
  352. # qbeprint1(0, "%g \n", -8.066);
  353. # qbecall1(0, "%g \n", -8.066);
  354. # qbeprint1(0, "%d %g \n", 7, 2.075);
  355. # qbecall1(0, "%d %g \n", 7, 2.075);
  356. # qbeprint1(0, "%g %g \n", 6.143, 4.595);
  357. # qbecall1(0, "%g %g \n", 6.143, 4.595);
  358. # qbeprint1(0, "%d %d %d %d \n", 1, 10, -3, 1);
  359. # qbecall1(0, "%d %d %d %d \n", 1, 10, -3, 1);
  360. # qbeprint1(0, "%g %g %g %g \n", 6.588, 2.37, 7.234, 1.547);
  361. # qbecall1(0, "%g %g %g %g \n", 6.588, 2.37, 7.234, 1.547);
  362. # qbeprint1(0, "%d %g %d %g \n", 4, -9.084, -6, -4.212);
  363. # qbecall1(0, "%d %g %d %g \n", 4, -9.084, -6, -4.212);
  364. # qbeprint1(0, "%g %g %d %d \n", -8.404, -5.344, -8, -5);
  365. # qbecall1(0, "%g %g %d %d \n", -8.404, -5.344, -8, -5);
  366. # qbeprint1(0, "%d %d %g %g \n", 3, -3, -2.596, -5.81);
  367. # qbecall1(0, "%d %d %g %g \n", 3, -3, -2.596, -5.81);
  368. # qbeprint1(0, "\n");
  369. # qbecall1(0, "\n");
  370. # puts("# (0 int, 1 double)");
  371. # qbeprint2(0, "%d \n", -5);
  372. # qbecall2(0, "%d \n", -5);
  373. # qbeprint2(0, "%g \n", 8.733);
  374. # qbecall2(0, "%g \n", 8.733);
  375. # qbeprint2(0, "%d %g \n", 3, 2.183);
  376. # qbecall2(0, "%d %g \n", 3, 2.183);
  377. # qbeprint2(0, "%g %g \n", -6.577, 4.583);
  378. # qbecall2(0, "%g %g \n", -6.577, 4.583);
  379. # qbeprint2(0, "%d %d %d %d \n", -7, -3, 10, 3);
  380. # qbecall2(0, "%d %d %d %d \n", -7, -3, 10, 3);
  381. # qbeprint2(0, "%g %g %g %g \n", 1.139, 3.692, 6.857, 5.52);
  382. # qbecall2(0, "%g %g %g %g \n", 1.139, 3.692, 6.857, 5.52);
  383. # qbeprint2(0, "%d %g %d %g \n", -6, -9.358, -4, -4.645);
  384. # qbecall2(0, "%d %g %d %g \n", -6, -9.358, -4, -4.645);
  385. # qbeprint2(0, "%g %g %d %d \n", -5.78, 8.858, 8, -4);
  386. # qbecall2(0, "%g %g %d %d \n", -5.78, 8.858, 8, -4);
  387. # qbeprint2(0, "%d %d %g %g \n", 3, -2, 8.291, -0.823);
  388. # qbecall2(0, "%d %d %g %g \n", 3, -2, 8.291, -0.823);
  389. # qbeprint2(0, "\n");
  390. # qbecall2(0, "\n");
  391. # puts("# (4 int, 0 double)");
  392. # qbeprint3(0, 0, 0, 0, "%d \n", -5);
  393. # qbecall3(0, 0, 0, 0, "%d \n", -5);
  394. # qbeprint3(0, 0, 0, 0, "%g \n", -5.067);
  395. # qbecall3(0, 0, 0, 0, "%g \n", -5.067);
  396. # qbeprint3(0, 0, 0, 0, "%d %g \n", 1, -4.745);
  397. # qbecall3(0, 0, 0, 0, "%d %g \n", 1, -4.745);
  398. # qbeprint3(0, 0, 0, 0, "%g %g \n", 1.692, 7.956);
  399. # qbecall3(0, 0, 0, 0, "%g %g \n", 1.692, 7.956);
  400. # qbeprint3(0, 0, 0, 0, "%d %d %d %d \n", -2, -6, 10, 0);
  401. # qbecall3(0, 0, 0, 0, "%d %d %d %d \n", -2, -6, 10, 0);
  402. # qbeprint3(0, 0, 0, 0, "%g %g %g %g \n", -8.182, -9.058, -7.807, 2.549);
  403. # qbecall3(0, 0, 0, 0, "%g %g %g %g \n", -8.182, -9.058, -7.807, 2.549);
  404. # qbeprint3(0, 0, 0, 0, "%d %g %d %g \n", 6, -1.557, -9, -2.368);
  405. # qbecall3(0, 0, 0, 0, "%d %g %d %g \n", 6, -1.557, -9, -2.368);
  406. # qbeprint3(0, 0, 0, 0, "%g %g %d %d \n", 9.922, 0.5823, 10, 8);
  407. # qbecall3(0, 0, 0, 0, "%g %g %d %d \n", 9.922, 0.5823, 10, 8);
  408. # qbeprint3(0, 0, 0, 0, "%d %d %g %g \n", -10, 5, 3.634, 0.7394);
  409. # qbecall3(0, 0, 0, 0, "%d %d %g %g \n", -10, 5, 3.634, 0.7394);
  410. # qbeprint3(0, 0, 0, 0, "\n");
  411. # qbecall3(0, 0, 0, 0, "\n");
  412. # puts("# (0 int, 6 double)");
  413. # qbeprint4(0, 0, 0, 0, 0, 0, "%d \n", -5);
  414. # qbecall4(0, 0, 0, 0, 0, 0, "%d \n", -5);
  415. # qbeprint4(0, 0, 0, 0, 0, 0, "%g \n", 2.819);
  416. # qbecall4(0, 0, 0, 0, 0, 0, "%g \n", 2.819);
  417. # qbeprint4(0, 0, 0, 0, 0, 0, "%d %g \n", -8, -1.305);
  418. # qbecall4(0, 0, 0, 0, 0, 0, "%d %g \n", -8, -1.305);
  419. # qbeprint4(0, 0, 0, 0, 0, 0, "%g %g \n", -0.9255, 9.076);
  420. # qbecall4(0, 0, 0, 0, 0, 0, "%g %g \n", -0.9255, 9.076);
  421. # qbeprint4(0, 0, 0, 0, 0, 0, "%d %d %d %d \n", 8, -5, 0, -7);
  422. # qbecall4(0, 0, 0, 0, 0, 0, "%d %d %d %d \n", 8, -5, 0, -7);
  423. # qbeprint4(0, 0, 0, 0, 0, 0, "%g %g %g %g \n", 8.253, 7.41, -4.031, 2.779);
  424. # qbecall4(0, 0, 0, 0, 0, 0, "%g %g %g %g \n", 8.253, 7.41, -4.031, 2.779);
  425. # qbeprint4(0, 0, 0, 0, 0, 0, "%d %g %d %g \n", 2, -6.943, 6, 0.7876);
  426. # qbecall4(0, 0, 0, 0, 0, 0, "%d %g %d %g \n", 2, -6.943, 6, 0.7876);
  427. # qbeprint4(0, 0, 0, 0, 0, 0, "%g %g %d %d \n", 5.573, 0.6071, -10, -4);
  428. # qbecall4(0, 0, 0, 0, 0, 0, "%g %g %d %d \n", 5.573, 0.6071, -10, -4);
  429. # qbeprint4(0, 0, 0, 0, 0, 0, "%d %d %g %g \n", -10, 9, 7.574, 6.633);
  430. # qbecall4(0, 0, 0, 0, 0, 0, "%d %d %g %g \n", -10, 9, 7.574, 6.633);
  431. # qbeprint4(0, 0, 0, 0, 0, 0, "\n");
  432. # qbecall4(0, 0, 0, 0, 0, 0, "\n");
  433. # puts("# (5 int, 7 double)");
  434. # qbeprint5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d \n", -4);
  435. # qbecall5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d \n", -4);
  436. # qbeprint5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g \n", -8.841);
  437. # qbecall5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g \n", -8.841);
  438. # qbeprint5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %g \n", 8, 8.939);
  439. # qbecall5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %g \n", 8, 8.939);
  440. # qbeprint5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g \n", -8.287, -0.2802);
  441. # qbecall5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g \n", -8.287, -0.2802);
  442. # qbeprint5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %d %d %d \n", -9, 5, 6, -8);
  443. # qbecall5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %d %d %d \n", -9, 5, 6, -8);
  444. # qbeprint5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g %g %g \n", -0.4944, 0.9961, -4.699, 7.449);
  445. # qbecall5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g %g %g \n", -0.4944, 0.9961, -4.699, 7.449);
  446. # qbeprint5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %g %d %g \n", -2, -5.764, 1, 4.599);
  447. # qbecall5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %g %d %g \n", -2, -5.764, 1, 4.599);
  448. # qbeprint5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g %d %d \n", -5.977, -3.766, 10, 3);
  449. # qbecall5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g %d %d \n", -5.977, -3.766, 10, 3);
  450. # qbeprint5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %d %g %g \n", -1, 0, -7.58, -5.506);
  451. # qbecall5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %d %g %g \n", -1, 0, -7.58, -5.506);
  452. # qbeprint5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "\n");
  453. # qbecall5(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "\n");
  454. # puts("# (10 int, 10 double)");
  455. # qbeprint6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d \n", -3);
  456. # qbecall6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d \n", -3);
  457. # qbeprint6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g \n", 1.766);
  458. # qbecall6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g \n", 1.766);
  459. # qbeprint6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %g \n", -6, -5.596);
  460. # qbecall6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %g \n", -6, -5.596);
  461. # qbeprint6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g \n", -8.58, 2.622);
  462. # qbecall6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g \n", -8.58, 2.622);
  463. # qbeprint6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %d %d %d \n", -6, 9, 8, -9);
  464. # qbecall6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %d %d %d \n", -6, 9, 8, -9);
  465. # qbeprint6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g %g %g \n", -5.24, 3.38, -5.715, -7.354);
  466. # qbecall6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g %g %g \n", -5.24, 3.38, -5.715, -7.354);
  467. # qbeprint6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %g %d %g \n", 9, 1.421, -1, 5.692);
  468. # qbecall6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %g %d %g \n", 9, 1.421, -1, 5.692);
  469. # qbeprint6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g %d %d \n", 6.15, -6.192, -8, -1);
  470. # qbecall6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g %d %d \n", 6.15, -6.192, -8, -1);
  471. # qbeprint6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %d %g %g \n", -2, -1, 4.582, 3.467);
  472. # qbecall6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %d %g %g \n", -2, -1, 4.582, 3.467);
  473. # qbeprint6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "\n");
  474. # qbecall6(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "\n");
  475. # puts("# (9 int, 0 double)");
  476. # qbeprint7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%d \n", 10);
  477. # qbecall7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%d \n", 10);
  478. # qbeprint7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%g \n", -8.032);
  479. # qbecall7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%g \n", -8.032);
  480. # qbeprint7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %g \n", -2, -3.214);
  481. # qbecall7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %g \n", -2, -3.214);
  482. # qbeprint7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g \n", 7.233, -5.027);
  483. # qbecall7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g \n", 7.233, -5.027);
  484. # qbeprint7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %d %d %d \n", -7, -1, -2, -5);
  485. # qbecall7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %d %d %d \n", -7, -1, -2, -5);
  486. # qbeprint7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g %g %g \n", -5.004, 8.465, -1.137, 7.227);
  487. # qbecall7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g %g %g \n", -5.004, 8.465, -1.137, 7.227);
  488. # qbeprint7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %g %d %g \n", 1, -8.988, 10, 6.721);
  489. # qbecall7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %g %d %g \n", 1, -8.988, 10, 6.721);
  490. # qbeprint7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g %d %d \n", 9.38, 8.527, 7, -7);
  491. # qbecall7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%g %g %d %d \n", 9.38, 8.527, 7, -7);
  492. # qbeprint7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %d %g %g \n", 0, -6, -1.979, -8.827);
  493. # qbecall7(0, 0, 0, 0, 0, 0, 0, 0, 0, "%d %d %g %g \n", 0, -6, -1.979, -8.827);
  494. # qbeprint7(0, 0, 0, 0, 0, 0, 0, 0, 0, "\n");
  495. # qbecall7(0, 0, 0, 0, 0, 0, 0, 0, 0, "\n");
  496. # }
  497. # <<<
  498. # >>> output
  499. # # (0 int, 0 double)
  500. # 3
  501. # 3
  502. # -9.5
  503. # -9.5
  504. # -5 -5.536
  505. # -5 -5.536
  506. # 4.729 3.534
  507. # 4.729 3.534
  508. # 8 -9 -2 -10
  509. # 8 -9 -2 -10
  510. # -5.627 0.1071 -9.469 -6.023
  511. # -5.627 0.1071 -9.469 -6.023
  512. # 3 0.8988 -6 1.785
  513. # 3 0.8988 -6 1.785
  514. # 6.189 -9.87 6 4
  515. # 6.189 -9.87 6 4
  516. # -3 -7 9.144 -3.268
  517. # -3 -7 9.144 -3.268
  518. #
  519. #
  520. # # (1 int, 0 double)
  521. # -9
  522. # -9
  523. # -8.066
  524. # -8.066
  525. # 7 2.075
  526. # 7 2.075
  527. # 6.143 4.595
  528. # 6.143 4.595
  529. # 1 10 -3 1
  530. # 1 10 -3 1
  531. # 6.588 2.37 7.234 1.547
  532. # 6.588 2.37 7.234 1.547
  533. # 4 -9.084 -6 -4.212
  534. # 4 -9.084 -6 -4.212
  535. # -8.404 -5.344 -8 -5
  536. # -8.404 -5.344 -8 -5
  537. # 3 -3 -2.596 -5.81
  538. # 3 -3 -2.596 -5.81
  539. #
  540. #
  541. # # (0 int, 1 double)
  542. # -5
  543. # -5
  544. # 8.733
  545. # 8.733
  546. # 3 2.183
  547. # 3 2.183
  548. # -6.577 4.583
  549. # -6.577 4.583
  550. # -7 -3 10 3
  551. # -7 -3 10 3
  552. # 1.139 3.692 6.857 5.52
  553. # 1.139 3.692 6.857 5.52
  554. # -6 -9.358 -4 -4.645
  555. # -6 -9.358 -4 -4.645
  556. # -5.78 8.858 8 -4
  557. # -5.78 8.858 8 -4
  558. # 3 -2 8.291 -0.823
  559. # 3 -2 8.291 -0.823
  560. #
  561. #
  562. # # (4 int, 0 double)
  563. # -5
  564. # -5
  565. # -5.067
  566. # -5.067
  567. # 1 -4.745
  568. # 1 -4.745
  569. # 1.692 7.956
  570. # 1.692 7.956
  571. # -2 -6 10 0
  572. # -2 -6 10 0
  573. # -8.182 -9.058 -7.807 2.549
  574. # -8.182 -9.058 -7.807 2.549
  575. # 6 -1.557 -9 -2.368
  576. # 6 -1.557 -9 -2.368
  577. # 9.922 0.5823 10 8
  578. # 9.922 0.5823 10 8
  579. # -10 5 3.634 0.7394
  580. # -10 5 3.634 0.7394
  581. #
  582. #
  583. # # (0 int, 6 double)
  584. # -5
  585. # -5
  586. # 2.819
  587. # 2.819
  588. # -8 -1.305
  589. # -8 -1.305
  590. # -0.9255 9.076
  591. # -0.9255 9.076
  592. # 8 -5 0 -7
  593. # 8 -5 0 -7
  594. # 8.253 7.41 -4.031 2.779
  595. # 8.253 7.41 -4.031 2.779
  596. # 2 -6.943 6 0.7876
  597. # 2 -6.943 6 0.7876
  598. # 5.573 0.6071 -10 -4
  599. # 5.573 0.6071 -10 -4
  600. # -10 9 7.574 6.633
  601. # -10 9 7.574 6.633
  602. #
  603. #
  604. # # (5 int, 7 double)
  605. # -4
  606. # -4
  607. # -8.841
  608. # -8.841
  609. # 8 8.939
  610. # 8 8.939
  611. # -8.287 -0.2802
  612. # -8.287 -0.2802
  613. # -9 5 6 -8
  614. # -9 5 6 -8
  615. # -0.4944 0.9961 -4.699 7.449
  616. # -0.4944 0.9961 -4.699 7.449
  617. # -2 -5.764 1 4.599
  618. # -2 -5.764 1 4.599
  619. # -5.977 -3.766 10 3
  620. # -5.977 -3.766 10 3
  621. # -1 0 -7.58 -5.506
  622. # -1 0 -7.58 -5.506
  623. #
  624. #
  625. # # (10 int, 10 double)
  626. # -3
  627. # -3
  628. # 1.766
  629. # 1.766
  630. # -6 -5.596
  631. # -6 -5.596
  632. # -8.58 2.622
  633. # -8.58 2.622
  634. # -6 9 8 -9
  635. # -6 9 8 -9
  636. # -5.24 3.38 -5.715 -7.354
  637. # -5.24 3.38 -5.715 -7.354
  638. # 9 1.421 -1 5.692
  639. # 9 1.421 -1 5.692
  640. # 6.15 -6.192 -8 -1
  641. # 6.15 -6.192 -8 -1
  642. # -2 -1 4.582 3.467
  643. # -2 -1 4.582 3.467
  644. #
  645. #
  646. # # (9 int, 0 double)
  647. # 10
  648. # 10
  649. # -8.032
  650. # -8.032
  651. # -2 -3.214
  652. # -2 -3.214
  653. # 7.233 -5.027
  654. # 7.233 -5.027
  655. # -7 -1 -2 -5
  656. # -7 -1 -2 -5
  657. # -5.004 8.465 -1.137 7.227
  658. # -5.004 8.465 -1.137 7.227
  659. # 1 -8.988 10 6.721
  660. # 1 -8.988 10 6.721
  661. # 9.38 8.527 7 -7
  662. # 9.38 8.527 7 -7
  663. # 0 -6 -1.979 -8.827
  664. # 0 -6 -1.979 -8.827
  665. #
  666. #
  667. # <<<