branch.tst 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563
  1. #if __WORDSIZE == 64
  2. # define I7f 0x7fffffffffffffff
  3. # define I80 0x8000000000000000
  4. # define I81 0x8000000000000001
  5. # define Iff 0xffffffffffffffff
  6. #else
  7. # define I7f 0x7fffffff
  8. # define I80 0x80000000
  9. # define I81 0x80000001
  10. # define Iff 0xffffffff
  11. #endif
  12. .data 12
  13. ok:
  14. .c "ok\n"
  15. . $($NaN = 0.0 / 0.0)
  16. #define BOP(N, Ls, Rs, Lu, Ru, R0, R1) \
  17. movi %R0 Ls \
  18. movi %R1 Rs \
  19. b##N##r N##r_##R0##_##R1 %R0 %R1 \
  20. calli @abort \
  21. N##r_##R0##_##R1: \
  22. b##N##i N##i_##R0##_##R1 %R0 Rs \
  23. calli @abort \
  24. N##i_##R0##_##R1: \
  25. movi %R0 Lu \
  26. movi %R1 Ru \
  27. b##N##r_u N##r_u_##R0##_##R1 %R0 %R1 \
  28. calli @abort \
  29. N##r_u_##R0##_##R1: \
  30. b##N##i_u N##i_u_##R0##_##R1 %R0 Ru \
  31. calli @abort \
  32. N##i_u_##R0##_##R1: \
  33. movi %R0 Ls \
  34. movi %R1 Rs \
  35. N##r %R0 %R0 %R1 \
  36. beqi _##N##r_##R0##_##R1 %R0 1 \
  37. calli @abort \
  38. _##N##r_##R0##_##R1: \
  39. movi %R0 Ls \
  40. N##i %R1 %R0 Rs \
  41. beqi _##N##i_##R0##_##R1 %R1 1 \
  42. calli @abort \
  43. _##N##i_##R0##_##R1: \
  44. movi %R0 Lu \
  45. movi %R1 Ru \
  46. N##r_u %R0 %R0 %R1 \
  47. beqi _##N##r_u_##R0##_##R1 %R0 1 \
  48. calli @abort \
  49. _##N##r_u_##R0##_##R1: \
  50. movi %R0 Lu \
  51. N##i_u %R1 %R0 Ru \
  52. beqi _##N##i_u_##R0##_##R1 %R1 1 \
  53. calli @abort \
  54. _##N##i_u_##R0##_##R1:
  55. #define EB(N, L, R, R0, R1) \
  56. movi %R0 L \
  57. movi %R1 R \
  58. b##N##r N##r_##R0##_##R1 %R0 %R1 \
  59. calli @abort \
  60. N##r_##R0##_##R1: \
  61. b##N##i N##i_##R0##_##R1 %R0 R \
  62. calli @abort \
  63. N##i_##R0##_##R1: \
  64. movi %R0 L \
  65. movi %R1 R \
  66. N##r %R0 %R0 %R1 \
  67. beqi _##N##r_##R0##_##R1 %R0 1 \
  68. calli @abort \
  69. _##N##r_##R0##_##R1: \
  70. movi %R0 L \
  71. N##i %R1 %R0 R \
  72. beqi _##N##i_##R0##_##R1 %R1 1 \
  73. calli @abort \
  74. _##N##i_##R0##_##R1:
  75. #define XEB(N, L, R, R0, R1) \
  76. movi %R0 L \
  77. movi %R1 R \
  78. b##N##r N##r_##R0##_##R1 %R0 %R1 \
  79. calli @abort \
  80. N##r_##R0##_##R1: \
  81. b##N##i N##i_##R0##_##R1 %R0 R \
  82. calli @abort \
  83. N##i_##R0##_##R1:
  84. #define XBOP(N, Ls, Rs, Lu, Ru, R0, R1) \
  85. movi %R0 Ls \
  86. movi %R1 Rs \
  87. b##N##r N##r_##R0##_##R1 %R0 %R1 \
  88. calli @abort \
  89. N##r_##R0##_##R1: \
  90. movi %R0 Ls \
  91. b##N##i N##i_##R0##_##R1 %R0 Rs \
  92. calli @abort \
  93. N##i_##R0##_##R1: \
  94. movi %R0 Lu \
  95. movi %R1 Ru \
  96. b##N##r_u N##r_u_##R0##_##R1 %R0 %R1 \
  97. calli @abort \
  98. N##r_u_##R0##_##R1: \
  99. movi %R0 Lu \
  100. b##N##i_u N##i_u_##R0##_##R1 %R0 Ru \
  101. calli @abort \
  102. N##i_u_##R0##_##R1:
  103. #define BOPI(N, Ls, Rs, Lu, Ru) \
  104. BOP(N, Ls, Rs, Lu, Ru, v0, v1) \
  105. BOP(N, Ls, Rs, Lu, Ru, v0, v2) \
  106. BOP(N, Ls, Rs, Lu, Ru, v0, r0) \
  107. BOP(N, Ls, Rs, Lu, Ru, v0, r1) \
  108. BOP(N, Ls, Rs, Lu, Ru, v0, r2) \
  109. BOP(N, Ls, Rs, Lu, Ru, v1, v0) \
  110. BOP(N, Ls, Rs, Lu, Ru, v1, v2) \
  111. BOP(N, Ls, Rs, Lu, Ru, v1, r0) \
  112. BOP(N, Ls, Rs, Lu, Ru, v1, r1) \
  113. BOP(N, Ls, Rs, Lu, Ru, v1, r2) \
  114. BOP(N, Ls, Rs, Lu, Ru, v2, v0) \
  115. BOP(N, Ls, Rs, Lu, Ru, v2, v1) \
  116. BOP(N, Ls, Rs, Lu, Ru, v2, r0) \
  117. BOP(N, Ls, Rs, Lu, Ru, v2, r1) \
  118. BOP(N, Ls, Rs, Lu, Ru, v2, r2) \
  119. BOP(N, Ls, Rs, Lu, Ru, r0, v0) \
  120. BOP(N, Ls, Rs, Lu, Ru, r0, v1) \
  121. BOP(N, Ls, Rs, Lu, Ru, r0, v2) \
  122. BOP(N, Ls, Rs, Lu, Ru, r0, r1) \
  123. BOP(N, Ls, Rs, Lu, Ru, r0, r2) \
  124. BOP(N, Ls, Rs, Lu, Ru, r1, v0) \
  125. BOP(N, Ls, Rs, Lu, Ru, r1, v1) \
  126. BOP(N, Ls, Rs, Lu, Ru, r1, v2) \
  127. BOP(N, Ls, Rs, Lu, Ru, r1, r0) \
  128. BOP(N, Ls, Rs, Lu, Ru, r1, r2) \
  129. BOP(N, Ls, Rs, Lu, Ru, r2, v0) \
  130. BOP(N, Ls, Rs, Lu, Ru, r2, v1) \
  131. BOP(N, Ls, Rs, Lu, Ru, r2, v2) \
  132. BOP(N, Ls, Rs, Lu, Ru, r2, r0) \
  133. BOP(N, Ls, Rs, Lu, Ru, r2, r1)
  134. #define EBI(N, L, R) \
  135. EB(N, L, R, v0, v1) \
  136. EB(N, L, R, v0, v2) \
  137. EB(N, L, R, v0, r0) \
  138. EB(N, L, R, v0, r1) \
  139. EB(N, L, R, v0, r2) \
  140. EB(N, L, R, v1, v0) \
  141. EB(N, L, R, v1, v2) \
  142. EB(N, L, R, v1, r0) \
  143. EB(N, L, R, v1, r1) \
  144. EB(N, L, R, v1, r2) \
  145. EB(N, L, R, v2, v0) \
  146. EB(N, L, R, v2, v1) \
  147. EB(N, L, R, v2, r0) \
  148. EB(N, L, R, v2, r1) \
  149. EB(N, L, R, v2, r2) \
  150. EB(N, L, R, r0, v0) \
  151. EB(N, L, R, r0, v1) \
  152. EB(N, L, R, r0, v2) \
  153. EB(N, L, R, r0, r1) \
  154. EB(N, L, R, r0, r2) \
  155. EB(N, L, R, r1, v0) \
  156. EB(N, L, R, r1, v1) \
  157. EB(N, L, R, r1, v2) \
  158. EB(N, L, R, r1, r0) \
  159. EB(N, L, R, r1, r2) \
  160. EB(N, L, R, r2, v0) \
  161. EB(N, L, R, r2, v1) \
  162. EB(N, L, R, r2, v2) \
  163. EB(N, L, R, r2, r0) \
  164. EB(N, L, R, r2, r1)
  165. #define XEBI(N, L, R) \
  166. XEB(N, L, R, v0, v1) \
  167. XEB(N, L, R, v0, v2) \
  168. XEB(N, L, R, v0, r0) \
  169. XEB(N, L, R, v0, r1) \
  170. XEB(N, L, R, v0, r2) \
  171. XEB(N, L, R, v1, v0) \
  172. XEB(N, L, R, v1, v2) \
  173. XEB(N, L, R, v1, r0) \
  174. XEB(N, L, R, v1, r1) \
  175. XEB(N, L, R, v1, r2) \
  176. XEB(N, L, R, v2, v0) \
  177. XEB(N, L, R, v2, v1) \
  178. XEB(N, L, R, v2, r0) \
  179. XEB(N, L, R, v2, r1) \
  180. XEB(N, L, R, v2, r2) \
  181. XEB(N, L, R, r0, v0) \
  182. XEB(N, L, R, r0, v1) \
  183. XEB(N, L, R, r0, v2) \
  184. XEB(N, L, R, r0, r1) \
  185. XEB(N, L, R, r0, r2) \
  186. XEB(N, L, R, r1, v0) \
  187. XEB(N, L, R, r1, v1) \
  188. XEB(N, L, R, r1, v2) \
  189. XEB(N, L, R, r1, r0) \
  190. XEB(N, L, R, r1, r2) \
  191. XEB(N, L, R, r2, v0) \
  192. XEB(N, L, R, r2, v1) \
  193. XEB(N, L, R, r2, v2) \
  194. XEB(N, L, R, r2, r0) \
  195. XEB(N, L, R, r2, r1)
  196. #define XBOPI(N, Ls, Rs, Lu, Ru) \
  197. XBOP(N, Ls, Rs, Lu, Ru, v0, v1) \
  198. XBOP(N, Ls, Rs, Lu, Ru, v0, v2) \
  199. XBOP(N, Ls, Rs, Lu, Ru, v0, r0) \
  200. XBOP(N, Ls, Rs, Lu, Ru, v0, r1) \
  201. XBOP(N, Ls, Rs, Lu, Ru, v0, r2) \
  202. XBOP(N, Ls, Rs, Lu, Ru, v1, v0) \
  203. XBOP(N, Ls, Rs, Lu, Ru, v1, v2) \
  204. XBOP(N, Ls, Rs, Lu, Ru, v1, r0) \
  205. XBOP(N, Ls, Rs, Lu, Ru, v1, r1) \
  206. XBOP(N, Ls, Rs, Lu, Ru, v1, r2) \
  207. XBOP(N, Ls, Rs, Lu, Ru, v2, v0) \
  208. XBOP(N, Ls, Rs, Lu, Ru, v2, v1) \
  209. XBOP(N, Ls, Rs, Lu, Ru, v2, r0) \
  210. XBOP(N, Ls, Rs, Lu, Ru, v2, r1) \
  211. XBOP(N, Ls, Rs, Lu, Ru, v2, r2) \
  212. XBOP(N, Ls, Rs, Lu, Ru, r0, v0) \
  213. XBOP(N, Ls, Rs, Lu, Ru, r0, v1) \
  214. XBOP(N, Ls, Rs, Lu, Ru, r0, v2) \
  215. XBOP(N, Ls, Rs, Lu, Ru, r0, r1) \
  216. XBOP(N, Ls, Rs, Lu, Ru, r0, r2) \
  217. XBOP(N, Ls, Rs, Lu, Ru, r1, v0) \
  218. XBOP(N, Ls, Rs, Lu, Ru, r1, v1) \
  219. XBOP(N, Ls, Rs, Lu, Ru, r1, v2) \
  220. XBOP(N, Ls, Rs, Lu, Ru, r1, r0) \
  221. XBOP(N, Ls, Rs, Lu, Ru, r1, r2) \
  222. XBOP(N, Ls, Rs, Lu, Ru, r2, v0) \
  223. XBOP(N, Ls, Rs, Lu, Ru, r2, v1) \
  224. XBOP(N, Ls, Rs, Lu, Ru, r2, v2) \
  225. XBOP(N, Ls, Rs, Lu, Ru, r2, r0) \
  226. XBOP(N, Ls, Rs, Lu, Ru, r2, r1)
  227. #define TBOPF(N, T, L, R) \
  228. movi_##T %f0 L \
  229. movi_##T %f1 R \
  230. b##N##r##_##T N##r_##T %f0 %f1 \
  231. calli @abort \
  232. N##r_##T: \
  233. b##N##i##_##T N##i_##T %f0 R \
  234. calli @abort \
  235. N##i_##T: \
  236. movi_##T %f1 $NaN \
  237. b##N##r##_##T N##r_##T##_##u %f0 %f1 \
  238. jmpi N##r_##T##_##u0 \
  239. N##r_##T##_##u: \
  240. calli @abort \
  241. N##r##_##T##_##u0: \
  242. b##N##i##_##T N##i_##T##_##u %f0 $NaN \
  243. jmpi N##i_##T##_##u0 \
  244. N##i##_##T##_##u: \
  245. calli @abort \
  246. N##i##_##T##_##u0:
  247. #define BOPF(N, L, R) \
  248. TBOPF(N, f, L, R) \
  249. TBOPF(N, d, L, R)
  250. #define TUBOPF(N, T, L, R) \
  251. movi_##T %f0 L \
  252. movi_##T %f1 R \
  253. b##N##r##_##T N##r_##T %f0 %f1 \
  254. calli @abort \
  255. N##r_##T: \
  256. b##N##i##_##T N##i_##T %f0 R \
  257. calli @abort \
  258. N##i_##T: \
  259. movi_##T %f1 $NaN \
  260. b##N##r##_##T N##r_##T##_##u %f0 %f1 \
  261. calli @abort \
  262. N##r_##T##_##u: \
  263. b##N##i##_##T N##i_##T##_##u %f0 $NaN \
  264. calli @abort \
  265. N##i##_##T##_##u:
  266. #define UBOPF(N, L, R) \
  267. TUBOPF(N, f, L, R) \
  268. TUBOPF(N, d, L, R)
  269. .code
  270. prolog
  271. movi %r0 -1
  272. movi %r1 1
  273. bltr xltr_r0_r1 %r0 %r1
  274. calli @abort
  275. xltr_r0_r1:
  276. blti xlti_r0_r1 %r0 1
  277. calli @abort
  278. xlti_r0_r1:
  279. movi %r0 1
  280. movi %r1 -1
  281. bltr_u xltru_r0_r1 %r0 %r1
  282. calli @abort
  283. xltru_r0_r1:
  284. blti_u xltiu_r0_r1 %r0 -1
  285. calli @abort
  286. xltiu_r0_r1:
  287. movi %r0 -1
  288. movi %r1 -1
  289. bler xler_r0_r1 %r0 %r1
  290. calli @abort
  291. xler_r0_r1:
  292. blti xlei_r0_r1 %r0 1
  293. calli @abort
  294. xlei_r0_r1:
  295. movi %r0 1
  296. movi %r1 -1
  297. bltr_u xlteu_r0_r1 %r0 %r1
  298. calli @abort
  299. xlteu_r0_r1:
  300. blei_u xleiu_r0_r1 %r0 -1
  301. calli @abort
  302. xleiu_r0_r1:
  303. movi %r0 32
  304. movi %r1 32
  305. beqr xeqr_r0_r1 %r0 %r1
  306. calli @abort
  307. xeqr_r0_r1:
  308. beqi xeqi_r0_r1 %r0 32
  309. calli @abort
  310. xeqi_r0_r1:
  311. movi %r0 -2
  312. movi %r1 -2
  313. bger xger_r0_r1 %r0 %r1
  314. calli @abort
  315. xger_r0_r1:
  316. bgei xgei_r0_r1 %r0 -2
  317. calli @abort
  318. xgei_r0_r1:
  319. movi %r0 2
  320. movi %r1 2
  321. bger_u xgeru_r0_r1 %r0 %r1
  322. calli @abort
  323. xgeru_r0_r1:
  324. bgei_u xgeiu_r0_r1 %r0 2
  325. calli @abort
  326. xgeiu_r0_r1:
  327. movi %r0 2
  328. movi %r1 -2
  329. bgtr xgtr_r0_r1 %r0 %r1
  330. calli @abort
  331. xgtr_r0_r1:
  332. bgti xgti_r0_r1 %r0 -2
  333. calli @abort
  334. xgti_r0_r1:
  335. movi %r0 -2
  336. movi %r1 2
  337. bgtr_u xgtru_r0_r1 %r0 %r1
  338. calli @abort
  339. xgtru_r0_r1:
  340. bgti_u xgtiu_r0_r1 %r0 2
  341. calli @abort
  342. xgtiu_r0_r1:
  343. movi %r0 -3
  344. movi %r1 3
  345. bner xner_r0_r1 %r0 %r1
  346. calli @abort
  347. xner_r0_r1:
  348. bnei xnei_r0_r1 %r0 3
  349. calli @abort
  350. xnei_r0_r1:
  351. movi %r0 1
  352. movi %r1 3
  353. bmsr xmsr_r0_r1 %r0 %r1
  354. calli @abort
  355. xmsr_r0_r1:
  356. bmsi xmsi_r0_r1 %r0 3
  357. calli @abort
  358. xmsi_r0_r1:
  359. movi %r0 1
  360. movi %r1 2
  361. bmcr xmcr_r0_r1 %r0 %r1
  362. calli @abort
  363. xmcr_r0_r1:
  364. bmci xmci_r0_r1 %r0 2
  365. calli @abort
  366. xmci_r0_r1:
  367. movi %r0 I7f
  368. movi %r1 1
  369. boaddr xoaddr_r0_r1 %r0 %r1
  370. calli @abort
  371. xoaddr_r0_r1:
  372. movi %r0 Iff
  373. movi %r1 1
  374. boaddr_u xoaddr_u_r0_r1 %r0 %r1
  375. calli @abort
  376. xoaddr_u_r0_r1:
  377. movi %r0 I7f
  378. boaddi xoaddi_r0_r1 %r0 1
  379. calli @abort
  380. xoaddi_r0_r1:
  381. movi %r0 Iff
  382. boaddi_u xoaddi_u_r0_r1 %r0 1
  383. calli @abort
  384. xoaddi_u_r0_r1:
  385. movi %r0 I80
  386. movi %r1 1
  387. bxaddr xxaddr_r0_r1 %r0 %r1
  388. calli @abort
  389. xxaddr_r0_r1:
  390. movi %r0 I80
  391. bxaddi xxaddi_r0_r1 %r0 1
  392. calli @abort
  393. xxaddi_r0_r1:
  394. movi %r0 I7f
  395. movi %r1 1
  396. bxaddr_u xxaddr_u_r0_r1 %r0 %r1
  397. calli @abort
  398. xxaddr_u_r0_r1:
  399. movi %r0 I7f
  400. bxaddi_u xxaddi_u_r0_r1 %r0 1
  401. calli @abort
  402. xxaddi_u_r0_r1:
  403. movi %r0 I80
  404. movi %r1 1
  405. bosubr xosubr_r0_r1 %r0 %r1
  406. calli @abort
  407. xosubr_r0_r1:
  408. movi %r0 0
  409. movi %r1 1
  410. bosubr_u xosubr_u_r0_r1 %r0 %r1
  411. calli @abort
  412. xosubr_u_r0_r1:
  413. movi %r0 I80
  414. bosubi xosubi_r0_r1 %r0 1
  415. calli @abort
  416. xosubi_r0_r1:
  417. movi %r0 0
  418. bosubi_u xosubi_u_r0_r1 %r0 1
  419. calli @abort
  420. xosubi_u_r0_r1:
  421. movi %r0 I81
  422. movi %r1 1
  423. bxsubr xxsubr_r0_r1 %r0 %r1
  424. calli @abort
  425. xxsubr_r0_r1:
  426. movi %r0 I81
  427. bxsubi xxsubi_r0_r1 %r0 1
  428. calli @abort
  429. xxsubi_r0_r1:
  430. movi %r0 I80
  431. movi %r1 1
  432. bxsubr_u xxsubr_u_r0_r1 %r0 %r1
  433. calli @abort
  434. xxsubr_u_r0_r1:
  435. movi %r0 I80
  436. bxsubi_u xxsubi_u_r0_r1 %r0 1
  437. calli @abort
  438. xxsubi_u_r0_r1:
  439. movi_f %f0 1
  440. movi_f %f1 2
  441. bltr_f xltr_f_f0_f1 %f0 %f1
  442. calli @abort
  443. xltr_f_f0_f1:
  444. blti_f xlti_f_f0_f1 %f0 2
  445. calli @abort
  446. xlti_f_f0_f1:
  447. movi_f %f0 -1
  448. movi_f %f1 -1
  449. bler_f xler_f_f0_f1 %f0 %f1
  450. calli @abort
  451. xler_f_f0_f1:
  452. blei_f xlei_f_f0_f1 %f0 -1
  453. calli @abort
  454. xlei_f_f0_f1:
  455. movi_f %f0 -2
  456. movi_f %f1 -2
  457. beqr_f xeqr_f_f0_f1 %f0 %f1
  458. calli @abort
  459. xeqr_f_f0_f1:
  460. beqi_f xeqi_f_f0_f1 %f0 -2
  461. calli @abort
  462. xeqi_f_f0_f1:
  463. movi_f %f0 -3
  464. movi_f %f1 -3
  465. bger_f xger_f_f0_f1 %f0 %f1
  466. calli @abort
  467. xger_f_f0_f1:
  468. bgei_f xgei_f_f0_f1 %f0 -3
  469. calli @abort
  470. xgei_f_f0_f1:
  471. movi_f %f0 2
  472. movi_f %f1 1
  473. bgtr_f xgtr_f_f0_f1 %f0 %f1
  474. calli @abort
  475. xgtr_f_f0_f1:
  476. bgti_f xgti_f_f0_f1 %f0 1
  477. calli @abort
  478. xgti_f_f0_f1:
  479. movi_f %f0 0
  480. movi_f %f1 2
  481. bner_f xner_f_f0_f1 %f0 %f1
  482. calli @abort
  483. xner_f_f0_f1:
  484. bnei_f xnei_f_f0_f1 %f0 2
  485. calli @abort
  486. xnei_f_f0_f1:
  487. BOPI(lt, -1, 1, 1, -1)
  488. BOPI(le, -1, -1, 1, 1)
  489. EBI(eq, 32, 32)
  490. BOPI(ge, -2, -2, 2, 2)
  491. BOPI(gt, 2, -2, -2, 2)
  492. EBI(ne, 3, -3)
  493. XEBI(ms, 1, 3)
  494. XEBI(mc, 1, 2)
  495. XBOPI(oadd, I7f, 1, Iff, 1)
  496. XBOPI(xadd, I80, 1, I7f, 1)
  497. XBOPI(osub, I80, 1, 0, 1)
  498. XBOPI(xsub, I81, 1, I80, 1)
  499. BOPF(lt, 1, 2)
  500. BOPF(le, 2, 2)
  501. BOPF(eq, 3, 3)
  502. BOPF(ge, 3, 3)
  503. BOPF(gt, 4, 3)
  504. UBOPF(ne, 4, 3)
  505. UBOPF(unlt, 1, 2)
  506. UBOPF(unle, 2, 2)
  507. UBOPF(uneq, 3, 3)
  508. UBOPF(unge, 3, 3)
  509. UBOPF(ungt, 4, 3)
  510. BOPF(ltgt, 4, 3)
  511. movi_f %f0 5
  512. movi_f %f1 5
  513. bordr_f ordr_f %f0 %f1
  514. calli @abort
  515. ordr_f:
  516. bordi_f ordi_f %f0 1
  517. calli @abort
  518. ordi_f:
  519. bordi_f ordi_f_u %f0 $NaN
  520. jmpi ordi_f_u0
  521. ordi_f_u:
  522. calli @abort
  523. ordi_f_u0:
  524. movi_f %f0 5
  525. movi_f %f1 5
  526. bunordr_f unordr_f %f0 %f1
  527. jmpi unordr_f_0
  528. unordr_f:
  529. calli @abort
  530. unordr_f_0:
  531. bunordi_f unordi_f %f0 1
  532. jmpi unordi_f_0
  533. unordi_f:
  534. calli @abort
  535. unordi_f_0:
  536. bunordi_f unordi_f_1 %f0 $NaN
  537. calli @abort
  538. unordi_f_1:
  539. // just to know did not crash or abort
  540. prepare
  541. pushargi ok
  542. ellipsis
  543. finishi @printf
  544. ret
  545. epilog