floatx.asm 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  1. ;
  2. ; floatx.asm
  3. ;
  4. ; Test hexadecimal floating-point numbers
  5. %define Inf __Infinity__
  6. %define NaN __QNaN__
  7. ; 16-bit
  8. dw 1.0
  9. dw 0x1.0
  10. dw 2.0
  11. dw 0x2.0
  12. dw 0x1.0p+1
  13. dw 0x1.0p-1
  14. dw 0x0.0
  15. dw 0x1.23456789
  16. dw 0x0.123456789
  17. dw 0x0.0000123456789
  18. dw 0x1.23456789p10
  19. dw 0x1.23456789p+10
  20. dw 0x1.23456789p-10
  21. dw 0x0.123456789p10
  22. dw 0x0.123456789p+10
  23. dw 0x0.123456789abcdef0123456789abcdef012345p-10
  24. dw 0x0.0000123456789
  25. dw 0x0.0000123456789p+10
  26. dw 0x0.0000123456789p-10
  27. dw 0x1.0p-25 ; Underflow
  28. dw 0x1.01p-25 ; Rounds to denorm
  29. dw 0x1.0p-24 ; Smallest denorm
  30. dw 0x1.ffffffffffffffffffffffffffffp-16 ; Rounds to denorm
  31. dw 0x1.0p-15 ; Denorm
  32. dw 0x1.ffffffffffffffffffffffffffffp-15 ; Rounds to normal
  33. dw 0x1.0p-14 ; Smallest non-denorm
  34. dw 0x1.0p+15 ; Biggest possible exponent
  35. dw 0x1.ffffffffffffffffffffffffffffp+15 ; Rounds to infinity
  36. dw Inf ; Infinity
  37. dw NaN
  38. ; 32-bit
  39. dd 1.0
  40. dd 0x1.0
  41. dd 2.0
  42. dd 0x2.0
  43. dd 0x1.0p+1
  44. dd 0x1.0p-1
  45. dd 0x0.0
  46. dd 0x1.23456789
  47. dd 0x0.123456789
  48. dd 0x0.0000123456789
  49. dd 0x1.23456789p10
  50. dd 0x1.23456789p+10
  51. dd 0x1.23456789p-10
  52. dd 0x0.123456789p10
  53. dd 0x0.123456789p+10
  54. dd 0x0.123456789abcdef0123456789abcdef012345p-10
  55. dd 0x0.0000123456789
  56. dd 0x0.0000123456789p+10
  57. dd 0x0.0000123456789p-10
  58. dd 0x123456789.0
  59. dd 0x0000123456789.0
  60. dd 0x123456789.0p+0
  61. dd 0x123456789.0p+64
  62. dd 0x1.0p-150 ; Underflow
  63. dd 0x1.01p-150 ; Rounds to denorm
  64. dd 0x1.0p-149 ; Smallest denorm
  65. dd 0x1.ffffffffffffffffffffffffffffp-128 ; Rounds to denorm
  66. dd 0x1.0p-127 ; Denorm
  67. dd 0x1.ffffffffffffffffffffffffffffp-127 ; Rounds to normal
  68. dd 0x1.0p-126 ; Smallest non-denorm
  69. dd 0x1.0p+127 ; Biggest possible exponent
  70. dd 0x1.ffffffffffffffffffffffffffffp+127 ; Rounds to infinity
  71. dd Inf ; Infinity
  72. dd NaN
  73. ; 64-bit
  74. dq 1.0
  75. dq 0x1.0
  76. dq 2.0
  77. dq 0x2.0
  78. dq 0x1.0p+1
  79. dq 0x1.0p-1
  80. dq 0x0.0
  81. dq 0x1.23456789
  82. dq 0x0.123456789
  83. dq 0x0.0000123456789
  84. dq 0x1.23456789p10
  85. dq 0x1.23456789p+10
  86. dq 0x1.23456789p-10
  87. dq 0x0.123456789p10
  88. dq 0x0.123456789p+10
  89. dq 0x0.123456789abcdef0123456789abcdef012345p-10
  90. dq 0x0.0000123456789
  91. dq 0x0.0000123456789p+10
  92. dq 0x0.0000123456789p-10
  93. dq 0x123456789.0
  94. dq 0x0000123456789.0
  95. dq 0x123456789.0p+0
  96. dq 0x123456789.0p+300
  97. dq 0x1.0p-1075 ; Underflow
  98. dq 0x1.01p-1075 ; Rounds to denorm
  99. dq 0x1.0p-1074 ; Smallest denorm
  100. dq 0x1.ffffffffffffffffffffffffffffp-1024 ; Rounds to denorm
  101. dq 0x1.0p-1023 ; Denorm
  102. dq 0x1.ffffffffffffffffffffffffffffp-1023 ; Rounds to normal
  103. dq 0x1.0p-1022 ; Smallest non-denorm
  104. dq 0x1.0p+1023 ; Biggest possible exponent
  105. dq 0x1.ffffffffffffffffffffffffffffp+1023 ; Rounds to infinity
  106. dq Inf ; Infinity
  107. dq NaN
  108. ; 80-bit
  109. dt 1.0
  110. dt 0x1.0
  111. dt 2.0
  112. dt 0x2.0
  113. dt 0x1.0p+1
  114. dt 0x1.0p-1
  115. dt 0x0.0
  116. dt 0x1.23456789
  117. dt 0x0.123456789
  118. dt 0x0.0000123456789
  119. dt 0x1.23456789p10
  120. dt 0x1.23456789p+10
  121. dt 0x1.23456789p-10
  122. dt 0x0.123456789p10
  123. dt 0x0.123456789p+10
  124. dt 0x0.123456789abcdef0123456789abcdef012345p-10
  125. dt 0x0.0000123456789
  126. dt 0x0.0000123456789p+10
  127. dt 0x0.0000123456789p-10
  128. dt 0x123456789.0
  129. dt 0x0000123456789.0
  130. dt 0x123456789.0p+0
  131. dt 0x123456789.0p+1024
  132. dt 0x1.0p-16446 ; Underflow
  133. dt 0x1.01p-16446 ; Rounds to denorm
  134. dt 0x1.0p-16445 ; Smallest denorm
  135. dt 0x1.ffffffffffffffffffffffffffffp-16384 ; Rounds to denorm
  136. dt 0x1.0p-16383 ; Denorm
  137. dt 0x1.ffffffffffffffffffffffffffffp-16383 ; Rounds to normal
  138. dt 0x1.0p-16382 ; Smallest non-denorm
  139. dt 0x1.0p+16383 ; Biggest possible exponent
  140. dt 0x1.ffffffffffffffffffffffffffffp+16383 ; Rounds to infinity
  141. dt Inf ; Infinity
  142. dt NaN
  143. ; 128-bit
  144. do 1.0
  145. do 0x1.0
  146. do 2.0
  147. do 0x2.0
  148. do 0x1.0p+1
  149. do 0x1.0p-1
  150. do 0x0.0
  151. do 0x1.23456789
  152. do 0x0.123456789
  153. do 0x0.0000123456789
  154. do 0x1.23456789p10
  155. do 0x1.23456789p+10
  156. do 0x1.23456789p-10
  157. do 0x0.123456789p10
  158. do 0x0.123456789p+10
  159. do 0x0.123456789abcdef0123456789abcdef012345p-10
  160. do 0x0.0000123456789
  161. do 0x0.0000123456789p+10
  162. do 0x0.0000123456789p-10
  163. do 0x123456789.0
  164. do 0x0000123456789.0
  165. do 0x123456789.0p+0
  166. do 0x123456789.0p+1024
  167. do 0x1.0p-16495 ; Underflow
  168. do 0x1.01p-16495 ; Rounds to denorm
  169. do 0x1.0p-16494 ; Smallest denorm
  170. do 0x1.ffffffffffffffffffffffffffffffffp-16384 ; Rounds to denorm
  171. do 0x1.0p-16383 ; Denorm
  172. do 0x1.ffffffffffffffffffffffffffffffffp-16383 ; Rounds to normal
  173. do 0x1.0p-16382 ; Smallest non-denorm
  174. do 0x1.0p+16383 ; Biggest possible exponent
  175. do 0x1.ffffffffffffffffffffffffffffffffp+16383 ; Rounds to infinity
  176. do Inf ; Infinity
  177. do NaN
  178. ; 16-bit
  179. dw 1.0
  180. dw 0h1.0
  181. dw 2.0
  182. dw 0h2.0
  183. dw 0h1.0p+1
  184. dw 0h1.0p-1
  185. dw 0h0.0
  186. dw 0h1.23456789
  187. dw 0h0.123456789
  188. dw 0h0.0000123456789
  189. dw 0h1.23456789p10
  190. dw 0h1.23456789p+10
  191. dw 0h1.23456789p-10
  192. dw 0h0.123456789p10
  193. dw 0h0.123456789p+10
  194. dw 0h0.123456789abcdef0123456789abcdef012345p-10
  195. dw 0h0.0000123456789
  196. dw 0h0.0000123456789p+10
  197. dw 0h0.0000123456789p-10
  198. dw 0h1.0p-25 ; Underflow
  199. dw 0h1.0p-24 ; Smallest denorm
  200. dw 0h1.ffffffffffffffffffffffffffffp-16 ; Rounds to denorm
  201. dw 0h1.0p-15 ; Denorm
  202. dw 0h1.ffffffffffffffffffffffffffffp-15 ; Rounds to normal
  203. dw 0h1.0p-14 ; Smallest non-denorm
  204. dw 0h1.0p+15 ; Biggest possible exponent
  205. dw 0h1.ffffffffffffffffffffffffffffp+15 ; Rounds to infinity
  206. dw Inf ; Infinity
  207. dw NaN
  208. ; 32-bit
  209. dd 1.0
  210. dd 0h1.0
  211. dd 2.0
  212. dd 0h2.0
  213. dd 0h1.0p+1
  214. dd 0h1.0p-1
  215. dd 0h0.0
  216. dd 0h1.23456789
  217. dd 0h0.123456789
  218. dd 0h0.0000123456789
  219. dd 0h1.23456789p10
  220. dd 0h1.23456789p+10
  221. dd 0h1.23456789p-10
  222. dd 0h0.123456789p10
  223. dd 0h0.123456789p+10
  224. dd 0h0.123456789abcdef0123456789abcdef012345p-10
  225. dd 0h0.0000123456789
  226. dd 0h0.0000123456789p+10
  227. dd 0h0.0000123456789p-10
  228. dd 0h123456789.0
  229. dd 0h0000123456789.0
  230. dd 0h123456789.0p+0
  231. dd 0h123456789.0p+64
  232. dd 0h1.0p-150 ; Underflow
  233. dd 0h1.0p-149 ; Smallest denorm
  234. dd 0h1.ffffffffffffffffffffffffffffp-128 ; Rounds to denorm
  235. dd 0h1.0p-127 ; Denorm
  236. dd 0h1.ffffffffffffffffffffffffffffp-127 ; Rounds to normal
  237. dd 0h1.0p-126 ; Smallest non-denorm
  238. dd 0h1.0p+127 ; Biggest possible exponent
  239. dd 0h1.ffffffffffffffffffffffffffffp+127 ; Rounds to infinity
  240. dd Inf ; Infinity
  241. dd NaN
  242. ; 64-bit
  243. dq 1.0
  244. dq 0h1.0
  245. dq 2.0
  246. dq 0h2.0
  247. dq 0h1.0p+1
  248. dq 0h1.0p-1
  249. dq 0h0.0
  250. dq 0h1.23456789
  251. dq 0h0.123456789
  252. dq 0h0.0000123456789
  253. dq 0h1.23456789p10
  254. dq 0h1.23456789p+10
  255. dq 0h1.23456789p-10
  256. dq 0h0.123456789p10
  257. dq 0h0.123456789p+10
  258. dq 0h0.123456789abcdef0123456789abcdef012345p-10
  259. dq 0h0.0000123456789
  260. dq 0h0.0000123456789p+10
  261. dq 0h0.0000123456789p-10
  262. dq 0h123456789.0
  263. dq 0h0000123456789.0
  264. dq 0h123456789.0p+0
  265. dq 0h123456789.0p+300
  266. dq 0h1.0p-1075 ; Underflow
  267. dq 0h1.0p-1074 ; Smallest denorm
  268. dq 0h1.ffffffffffffffffffffffffffffp-1024 ; Rounds to denorm
  269. dq 0h1.0p-1023 ; Denorm
  270. dq 0h1.ffffffffffffffffffffffffffffp-1023 ; Rounds to normal
  271. dq 0h1.0p-1022 ; Smallest non-denorm
  272. dq 0h1.0p+1023 ; Biggest possible exponent
  273. dq 0h1.ffffffffffffffffffffffffffffp+1023 ; Rounds to infinity
  274. dq Inf ; Infinity
  275. dq NaN
  276. ; 80-bit
  277. dt 1.0
  278. dt 0h1.0
  279. dt 2.0
  280. dt 0h2.0
  281. dt 0h1.0p+1
  282. dt 0h1.0p-1
  283. dt 0h0.0
  284. dt 0h1.23456789
  285. dt 0h0.123456789
  286. dt 0h0.0000123456789
  287. dt 0h1.23456789p10
  288. dt 0h1.23456789p+10
  289. dt 0h1.23456789p-10
  290. dt 0h0.123456789p10
  291. dt 0h0.123456789p+10
  292. dt 0h0.123456789abcdef0123456789abcdef012345p-10
  293. dt 0h0.0000123456789
  294. dt 0h0.0000123456789p+10
  295. dt 0h0.0000123456789p-10
  296. dt 0h123456789.0
  297. dt 0h0000123456789.0
  298. dt 0h123456789.0p+0
  299. dt 0h123456789.0p+1024
  300. dt 0h1.0p-16446 ; Underflow
  301. dt 0h1.0p-16445 ; Smallest denorm
  302. dt 0h1.ffffffffffffffffffffffffffffp-16384 ; Rounds to denorm
  303. dt 0h1.0p-16383 ; Denorm
  304. dt 0h1.ffffffffffffffffffffffffffffp-16383 ; Rounds to normal
  305. dt 0h1.0p-16382 ; Smallest non-denorm
  306. dt 0h1.0p+16383 ; Biggest possible exponent
  307. dt 0h1.ffffffffffffffffffffffffffffp+16383 ; Rounds to infinity
  308. dt Inf ; Infinity
  309. dt NaN
  310. ; 128-bit
  311. do 1.0
  312. do 0h1.0
  313. do 2.0
  314. do 0h2.0
  315. do 0h1.0p+1
  316. do 0h1.0p-1
  317. do 0h0.0
  318. do 0h1.23456789
  319. do 0h0.123456789
  320. do 0h0.0000123456789
  321. do 0h1.23456789p10
  322. do 0h1.23456789p+10
  323. do 0h1.23456789p-10
  324. do 0h0.123456789p10
  325. do 0h0.123456789p+10
  326. do 0h0.123456789abcdef0123456789abcdef012345p-10
  327. do 0h0.0000123456789
  328. do 0h0.0000123456789p+10
  329. do 0h0.0000123456789p-10
  330. do 0h123456789.0
  331. do 0h0000123456789.0
  332. do 0h123456789.0p+0
  333. do 0h123456789.0p+1024
  334. do 0h1.0p-16495 ; Underflow
  335. do 0h1.0p-16494 ; Smallest denorm
  336. do 0h1.ffffffffffffffffffffffffffffffffp-16384 ; Rounds to denorm
  337. do 0h1.0p-16383 ; Denorm
  338. do 0h1.ffffffffffffffffffffffffffffffffp-16383 ; Rounds to normal
  339. do 0h1.0p-16382 ; Smallest non-denorm
  340. do 0h1.0p+16383 ; Biggest possible exponent
  341. do 0h1.ffffffffffffffffffffffffffffffffp+16383 ; Rounds to infinity
  342. do Inf ; Infinity
  343. do NaN
  344. ; 16-bit
  345. dw 1.0
  346. dw $1.0
  347. dw 2.0
  348. dw $2.0
  349. dw $1.0p+1
  350. dw $1.0p-1
  351. dw $0.0
  352. dw $1.23456789
  353. dw $0.123456789
  354. dw $0.0000123456789
  355. dw $1.23456789p10
  356. dw $1.23456789p+10
  357. dw $1.23456789p-10
  358. dw $0.123456789p10
  359. dw $0.123456789p+10
  360. dw $0.123456789abcdef0123456789abcdef012345p-10
  361. dw $0.0000123456789
  362. dw $0.0000123456789p+10
  363. dw $0.0000123456789p-10
  364. dw $1.0p-25 ; Underflow
  365. dw $1.0p-24 ; Smallest denorm
  366. dw $1.ffffffffffffffffffffffffffffp-16 ; Rounds to denorm
  367. dw $1.0p-15 ; Denorm
  368. dw $1.ffffffffffffffffffffffffffffp-15 ; Rounds to normal
  369. dw $1.0p-14 ; Smallest non-denorm
  370. dw $1.0p+15 ; Biggest possible exponent
  371. dw $1.ffffffffffffffffffffffffffffp+15 ; Rounds to infinity
  372. dw Inf ; Infinity
  373. dw NaN
  374. ; 32-bit
  375. dd 1.0
  376. dd $1.0
  377. dd 2.0
  378. dd $2.0
  379. dd $1.0p+1
  380. dd $1.0p-1
  381. dd $0.0
  382. dd $1.23456789
  383. dd $0.123456789
  384. dd $0.0000123456789
  385. dd $1.23456789p10
  386. dd $1.23456789p+10
  387. dd $1.23456789p-10
  388. dd $0.123456789p10
  389. dd $0.123456789p+10
  390. dd $0.123456789abcdef0123456789abcdef012345p-10
  391. dd $0.0000123456789
  392. dd $0.0000123456789p+10
  393. dd $0.0000123456789p-10
  394. dd $123456789.0
  395. dd $0000123456789.0
  396. dd $123456789.0p+0
  397. dd $123456789.0p+64
  398. dd $1.0p-150 ; Underflow
  399. dd $1.0p-149 ; Smallest denorm
  400. dd $1.ffffffffffffffffffffffffffffp-128 ; Rounds to denorm
  401. dd $1.0p-127 ; Denorm
  402. dd $1.ffffffffffffffffffffffffffffp-127 ; Rounds to normal
  403. dd $1.0p-126 ; Smallest non-denorm
  404. dd $1.0p+127 ; Biggest possible exponent
  405. dd $1.ffffffffffffffffffffffffffffp+127 ; Rounds to infinity
  406. dd Inf ; Infinity
  407. dd NaN
  408. ; 64-bit
  409. dq 1.0
  410. dq $1.0
  411. dq 2.0
  412. dq $2.0
  413. dq $1.0p+1
  414. dq $1.0p-1
  415. dq $0.0
  416. dq $1.23456789
  417. dq $0.123456789
  418. dq $0.0000123456789
  419. dq $1.23456789p10
  420. dq $1.23456789p+10
  421. dq $1.23456789p-10
  422. dq $0.123456789p10
  423. dq $0.123456789p+10
  424. dq $0.123456789abcdef0123456789abcdef012345p-10
  425. dq $0.0000123456789
  426. dq $0.0000123456789p+10
  427. dq $0.0000123456789p-10
  428. dq $123456789.0
  429. dq $0000123456789.0
  430. dq $123456789.0p+0
  431. dq $123456789.0p+300
  432. dq $1.0p-1075 ; Underflow
  433. dq $1.0p-1074 ; Smallest denorm
  434. dq $1.ffffffffffffffffffffffffffffp-1024 ; Rounds to denorm
  435. dq $1.0p-1023 ; Denorm
  436. dq $1.ffffffffffffffffffffffffffffp-1023 ; Rounds to normal
  437. dq $1.0p-1022 ; Smallest non-denorm
  438. dq $1.0p+1023 ; Biggest possible exponent
  439. dq $1.ffffffffffffffffffffffffffffp+1023 ; Rounds to infinity
  440. dq Inf ; Infinity
  441. dq NaN
  442. ; 80-bit
  443. dt 1.0
  444. dt $1.0
  445. dt 2.0
  446. dt $2.0
  447. dt $1.0p+1
  448. dt $1.0p-1
  449. dt $0.0
  450. dt $1.23456789
  451. dt $0.123456789
  452. dt $0.0000123456789
  453. dt $1.23456789p10
  454. dt $1.23456789p+10
  455. dt $1.23456789p-10
  456. dt $0.123456789p10
  457. dt $0.123456789p+10
  458. dt $0.123456789abcdef0123456789abcdef012345p-10
  459. dt $0.0000123456789
  460. dt $0.0000123456789p+10
  461. dt $0.0000123456789p-10
  462. dt $123456789.0
  463. dt $0000123456789.0
  464. dt $123456789.0p+0
  465. dt $123456789.0p+1024
  466. dt $1.0p-16446 ; Underflow
  467. dt $1.0p-16445 ; Smallest denorm
  468. dt $1.ffffffffffffffffffffffffffffp-16384 ; Rounds to denorm
  469. dt $1.0p-16383 ; Denorm
  470. dt $1.ffffffffffffffffffffffffffffp-16383 ; Rounds to normal
  471. dt $1.0p-16382 ; Smallest non-denorm
  472. dt $1.0p+16383 ; Biggest possible exponent
  473. dt $1.ffffffffffffffffffffffffffffp+16383 ; Rounds to infinity
  474. dt Inf ; Infinity
  475. dt NaN
  476. ; 128-bit
  477. do 1.0
  478. do $1.0
  479. do 2.0
  480. do $2.0
  481. do $1.0p+1
  482. do $1.0p-1
  483. do $0.0
  484. do $1.23456789
  485. do $0.123456789
  486. do $0.0000123456789
  487. do $1.23456789p10
  488. do $1.23456789p+10
  489. do $1.23456789p-10
  490. do $0.123456789p10
  491. do $0.123456789p+10
  492. do $0.123456789abcdef0123456789abcdef012345p-10
  493. do $0.0000123456789
  494. do $0.0000123456789p+10
  495. do $0.0000123456789p-10
  496. do $123456789.0
  497. do $0000123456789.0
  498. do $123456789.0p+0
  499. do $123456789.0p+1024
  500. do $1.0p-16495 ; Underflow
  501. do $1.0p-16494 ; Smallest denorm
  502. do $1.ffffffffffffffffffffffffffffffffp-16384 ; Rounds to denorm
  503. do $1.0p-16383 ; Denorm
  504. do $1.ffffffffffffffffffffffffffffffffp-16383 ; Rounds to normal
  505. do $1.0p-16382 ; Smallest non-denorm
  506. do $1.0p+16383 ; Biggest possible exponent
  507. do $1.ffffffffffffffffffffffffffffffffp+16383 ; Rounds to infinity
  508. do Inf ; Infinity
  509. do NaN