insn_ARITH_R.awl 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278
  1. // Precalculate constants
  2. // MD 0 = PI
  3. // MD 4 = -PI
  4. // MD 8 = PI/2
  5. // MD 12 = -PI/2
  6. // MD 16 = PI/4
  7. // MD 20 = -PI/4
  8. L __CNST_PI
  9. T MD 0
  10. NEGR
  11. T MD 4
  12. L __CNST_PI
  13. L 2.0
  14. /R
  15. T MD 8
  16. NEGR
  17. T MD 12
  18. L __CNST_PI
  19. L 4.0
  20. /R
  21. T MD 16
  22. NEGR
  23. T MD 20
  24. // Run tests
  25. __STWRST
  26. L 1.0
  27. L 1.0
  28. +R
  29. __ASSERT== __ACCU 1, 2.0
  30. __ASSERT== __ACCU 1, DW#16#40000000
  31. __ASSERT== __STW A1, 1
  32. __ASSERT== __STW A0, 0
  33. __ASSERT== __STW OV, 0
  34. __ASSERT== __STW OS, 0
  35. __STWRST
  36. L 1.0
  37. L -1.0
  38. +R
  39. __ASSERT== __ACCU 1, 0.0
  40. __ASSERT== __ACCU 1, 0
  41. __ASSERT== __STW A1, 0
  42. __ASSERT== __STW A0, 0
  43. __ASSERT== __STW OV, 0
  44. __ASSERT== __STW OS, 0
  45. __STWRST
  46. L -1.0
  47. L -1.0
  48. +R
  49. __ASSERT== __ACCU 1, -2.0
  50. __ASSERT== __ACCU 1, DW#16#C0000000
  51. __ASSERT== __STW A1, 0
  52. __ASSERT== __STW A0, 1
  53. __ASSERT== __STW OV, 0
  54. __ASSERT== __STW OS, 0
  55. __STWRST
  56. L 1.0
  57. L 1.0
  58. -R
  59. __ASSERT== __ACCU 1, 0.0
  60. __ASSERT== __ACCU 1, DW#16#00000000
  61. __ASSERT== __STW A1, 0
  62. __ASSERT== __STW A0, 0
  63. __ASSERT== __STW OV, 0
  64. __ASSERT== __STW OS, 0
  65. __STWRST
  66. L 1.0
  67. L -1.0
  68. -R
  69. __ASSERT== __ACCU 1, 2.0
  70. __ASSERT== __ACCU 1, DW#16#40000000
  71. __ASSERT== __STW A1, 1
  72. __ASSERT== __STW A0, 0
  73. __ASSERT== __STW OV, 0
  74. __ASSERT== __STW OS, 0
  75. __STWRST
  76. L -1.0
  77. L -1.0
  78. -R
  79. __ASSERT== __ACCU 1, 0.0
  80. __ASSERT== __ACCU 1, DW#16#00000000
  81. __ASSERT== __STW A1, 0
  82. __ASSERT== __STW A0, 0
  83. __ASSERT== __STW OV, 0
  84. __ASSERT== __STW OS, 0
  85. __STWRST
  86. L 3.0
  87. L 2.0
  88. *R
  89. __ASSERT== __ACCU 1, 6.0
  90. __ASSERT== __ACCU 1, DW#16#40C00000
  91. __ASSERT== __STW A1, 1
  92. __ASSERT== __STW A0, 0
  93. __ASSERT== __STW OV, 0
  94. __ASSERT== __STW OS, 0
  95. __STWRST
  96. L 3.0
  97. L -2.0
  98. *R
  99. __ASSERT== __ACCU 1, -6.0
  100. __ASSERT== __ACCU 1, DW#16#C0C00000
  101. __ASSERT== __STW A1, 0
  102. __ASSERT== __STW A0, 1
  103. __ASSERT== __STW OV, 0
  104. __ASSERT== __STW OS, 0
  105. __STWRST
  106. L -3.0
  107. L -2.0
  108. *R
  109. __ASSERT== __ACCU 1, 6.0
  110. __ASSERT== __ACCU 1, DW#16#40C00000
  111. __ASSERT== __STW A1, 1
  112. __ASSERT== __STW A0, 0
  113. __ASSERT== __STW OV, 0
  114. __ASSERT== __STW OS, 0
  115. __STWRST
  116. L 3.0
  117. L 2.0
  118. /R
  119. __ASSERT== __ACCU 1, 1.5
  120. __ASSERT== __ACCU 1, DW#16#3FC00000
  121. __ASSERT== __STW A1, 1
  122. __ASSERT== __STW A0, 0
  123. __ASSERT== __STW OV, 0
  124. __ASSERT== __STW OS, 0
  125. __STWRST
  126. L 3.0
  127. L -2.0
  128. /R
  129. __ASSERT== __ACCU 1, -1.5
  130. __ASSERT== __ACCU 1, DW#16#BFC00000
  131. __ASSERT== __STW A1, 0
  132. __ASSERT== __STW A0, 1
  133. __ASSERT== __STW OV, 0
  134. __ASSERT== __STW OS, 0
  135. __STWRST
  136. L -3.0
  137. L -2.0
  138. /R
  139. __ASSERT== __ACCU 1, 1.5
  140. __ASSERT== __ACCU 1, DW#16#3FC00000
  141. __ASSERT== __STW A1, 1
  142. __ASSERT== __STW A0, 0
  143. __ASSERT== __STW OV, 0
  144. __ASSERT== __STW OS, 0
  145. // Test: Inf * 0.0 = NaN
  146. __STWRST
  147. L __CNST_PINF
  148. L 0.0
  149. *R
  150. __ASSERT== __ACCU 1, __CNST_NNAN
  151. __ASSERT== __STW A1, 1
  152. __ASSERT== __STW A0, 1
  153. __ASSERT== __STW OV, 1
  154. __ASSERT== __STW OS, 1
  155. // Test: -Inf * 0.0 = NaN
  156. __STWRST
  157. L __CNST_NINF
  158. L 0.0
  159. *R
  160. __ASSERT== __ACCU 1, __CNST_NNAN
  161. __ASSERT== __STW A1, 1
  162. __ASSERT== __STW A0, 1
  163. __ASSERT== __STW OV, 1
  164. __ASSERT== __STW OS, 1
  165. // Test: denormalized
  166. __STWRST
  167. L DW#16#00000001
  168. L 2.0
  169. /R
  170. __ASSERT== __ACCU 1, 0.0
  171. __ASSERT== __STW A1, 0
  172. __ASSERT== __STW A0, 0
  173. __ASSERT== __STW OV, 1
  174. __ASSERT== __STW OS, 1
  175. // Test: pos / 0.0 = +inf
  176. __STWRST
  177. L 1.5
  178. L 0.0
  179. /R
  180. __ASSERT== __ACCU 1, __CNST_PINF
  181. __ASSERT== __STW A1, 1
  182. __ASSERT== __STW A0, 0
  183. __ASSERT== __STW OV, 1
  184. __ASSERT== __STW OS, 1
  185. // Test: neg / 0.0 = -inf
  186. __STWRST
  187. L -1.5
  188. L 0.0
  189. /R
  190. __ASSERT== __ACCU 1, __CNST_NINF
  191. __ASSERT== __STW A1, 0
  192. __ASSERT== __STW A0, 1
  193. __ASSERT== __STW OV, 1
  194. __ASSERT== __STW OS, 1
  195. // Test: -pos
  196. __STWRST
  197. L 1.5
  198. NEGR
  199. __ASSERT== __ACCU 1, -1.5
  200. __ASSERT== __STW A1, 0
  201. __ASSERT== __STW A0, 1
  202. __ASSERT== __STW OV, 0
  203. __ASSERT== __STW OS, 0
  204. // Test: -neg
  205. __STWRST
  206. L -1.5
  207. NEGR
  208. __ASSERT== __ACCU 1, 1.5
  209. __ASSERT== __STW A1, 1
  210. __ASSERT== __STW A0, 0
  211. __ASSERT== __STW OV, 0
  212. __ASSERT== __STW OS, 0
  213. // Test: abs(pos)
  214. __STWRST
  215. L 1.5
  216. ABS
  217. __ASSERT== __ACCU 1, 1.5
  218. // Test: abs(neg)
  219. __STWRST
  220. L -1.5
  221. ABS
  222. __ASSERT== __ACCU 1, 1.5
  223. // Test: pos^2
  224. __STWRST
  225. L 1.5
  226. SQR
  227. __ASSERT== __ACCU 1, 2.25
  228. __ASSERT== __STW A1, 1
  229. __ASSERT== __STW A0, 0
  230. __ASSERT== __STW OV, 0
  231. __ASSERT== __STW OS, 0
  232. // Test: neg^2
  233. __STWRST
  234. L -1.5
  235. SQR
  236. __ASSERT== __ACCU 1, 2.25
  237. __ASSERT== __STW A1, 1
  238. __ASSERT== __STW A0, 0
  239. __ASSERT== __STW OV, 0
  240. __ASSERT== __STW OS, 0
  241. // Test: sqrt(pos)
  242. __STWRST
  243. L 9.0
  244. SQRT
  245. __ASSERT== __ACCU 1, 3.0
  246. __ASSERT== __STW A1, 1
  247. __ASSERT== __STW A0, 0
  248. __ASSERT== __STW OV, 0
  249. __ASSERT== __STW OS, 0
  250. // Test: sqrt(-0.0)
  251. __STWRST
  252. L -0.0
  253. SQRT
  254. __ASSERT== __ACCU 1, -0.0
  255. __ASSERT== __STW A1, 0
  256. __ASSERT== __STW A0, 0
  257. __ASSERT== __STW OV, 0
  258. __ASSERT== __STW OS, 0
  259. // Test: sqrt(-0.5)
  260. __STWRST
  261. L -0.5
  262. SQRT
  263. __ASSERT== __ACCU 1, __CNST_PNAN
  264. __ASSERT== __STW A1, 1
  265. __ASSERT== __STW A0, 1
  266. __ASSERT== __STW OV, 1
  267. __ASSERT== __STW OS, 1
  268. // Test: sqrt(-1.5)
  269. __STWRST
  270. L -1.5
  271. SQRT
  272. __ASSERT== __ACCU 1, __CNST_PNAN
  273. __ASSERT== __STW A1, 1
  274. __ASSERT== __STW A0, 1
  275. __ASSERT== __STW OV, 1
  276. __ASSERT== __STW OS, 1
  277. // Test: exp(0.0)
  278. __STWRST
  279. L 0.0
  280. EXP
  281. __ASSERT== __ACCU 1, 1.0
  282. __ASSERT== __STW A1, 1
  283. __ASSERT== __STW A0, 0
  284. __ASSERT== __STW OV, 0
  285. __ASSERT== __STW OS, 0
  286. // Test: exp(1.5)
  287. __STWRST
  288. L 1.5
  289. EXP
  290. __ASSERT== __ACCU 1, DW#16#408F69FF
  291. __ASSERT== __STW A1, 1
  292. __ASSERT== __STW A0, 0
  293. __ASSERT== __STW OV, 0
  294. __ASSERT== __STW OS, 0
  295. // Test: exp(-1.5)
  296. __STWRST
  297. L -1.5
  298. EXP
  299. __ASSERT== __ACCU 1, DW#16#3E647C3C
  300. __ASSERT== __STW A1, 1
  301. __ASSERT== __STW A0, 0
  302. __ASSERT== __STW OV, 0
  303. __ASSERT== __STW OS, 0
  304. // Test: ln(0.0)
  305. __STWRST
  306. L 0.0
  307. LN
  308. __ASSERT== __ACCU 1, __CNST_PNAN
  309. __ASSERT== __STW A1, 1
  310. __ASSERT== __STW A0, 1
  311. __ASSERT== __STW OV, 1
  312. __ASSERT== __STW OS, 1
  313. // Test: ln(-0.0)
  314. __STWRST
  315. L -0.0
  316. LN
  317. __ASSERT== __ACCU 1, __CNST_PNAN
  318. __ASSERT== __STW A1, 1
  319. __ASSERT== __STW A0, 1
  320. __ASSERT== __STW OV, 1
  321. __ASSERT== __STW OS, 1
  322. // Test: ln(1.5)
  323. __STWRST
  324. L 1.5
  325. LN
  326. __ASSERT== __ACCU 1, DW#16#3ECF991F
  327. __ASSERT== __STW A1, 1
  328. __ASSERT== __STW A0, 0
  329. __ASSERT== __STW OV, 0
  330. __ASSERT== __STW OS, 0
  331. // Test: ln(-1.5)
  332. __STWRST
  333. L -1.5
  334. LN
  335. __ASSERT== __ACCU 1, __CNST_PNAN
  336. __ASSERT== __STW A1, 1
  337. __ASSERT== __STW A0, 1
  338. __ASSERT== __STW OV, 1
  339. __ASSERT== __STW OS, 1
  340. // Test: sin(0.0 deg)
  341. __STWRST
  342. L 0.0
  343. SIN
  344. __ASSERT== __ACCU 1, 0.0
  345. __ASSERT== __STW A1, 0
  346. __ASSERT== __STW A0, 0
  347. __ASSERT== __STW OV, 0
  348. __ASSERT== __STW OS, 0
  349. // Test: sin(-0.0 deg)
  350. __STWRST
  351. L -0.0
  352. SIN
  353. __ASSERT== __ACCU 1, 0.0
  354. __ASSERT== __STW A1, 0
  355. __ASSERT== __STW A0, 0
  356. __ASSERT== __STW OV, 0
  357. __ASSERT== __STW OS, 0
  358. // Test: sin(90.0 deg)
  359. __STWRST
  360. L MD 8 // PI/2
  361. SIN
  362. __ASSERT== __ACCU 1, 1.0
  363. __ASSERT== __STW A1, 1
  364. __ASSERT== __STW A0, 0
  365. __ASSERT== __STW OV, 0
  366. __ASSERT== __STW OS, 0
  367. // Test: sin(180.0 deg)
  368. __STWRST
  369. L MD 0 // PI
  370. SIN
  371. __ASSERT== __ACCU 1, 0.0
  372. __ASSERT== __STW A1, 0
  373. __ASSERT== __STW A0, 0
  374. __ASSERT== __STW OV, 0
  375. __ASSERT== __STW OS, 0
  376. // Test: sin(-90.0 deg)
  377. __STWRST
  378. L MD 12 // -PI/2
  379. SIN
  380. __ASSERT== __ACCU 1, -1.0
  381. __ASSERT== __STW A1, 0
  382. __ASSERT== __STW A0, 1
  383. __ASSERT== __STW OV, 0
  384. __ASSERT== __STW OS, 0
  385. // Test: sin(-180.0 deg)
  386. __STWRST
  387. L MD 4 // -PI
  388. SIN
  389. __ASSERT== __ACCU 1, 0.0
  390. __ASSERT== __STW A1, 0
  391. __ASSERT== __STW A0, 0
  392. __ASSERT== __STW OV, 0
  393. __ASSERT== __STW OS, 0
  394. // Test: cos(0.0 deg)
  395. __STWRST
  396. L 0.0
  397. COS
  398. __ASSERT== __ACCU 1, 1.0
  399. __ASSERT== __STW A1, 1
  400. __ASSERT== __STW A0, 0
  401. __ASSERT== __STW OV, 0
  402. __ASSERT== __STW OS, 0
  403. // Test: cos(-0.0 deg)
  404. __STWRST
  405. L -0.0
  406. COS
  407. __ASSERT== __ACCU 1, 1.0
  408. __ASSERT== __STW A1, 1
  409. __ASSERT== __STW A0, 0
  410. __ASSERT== __STW OV, 0
  411. __ASSERT== __STW OS, 0
  412. // Test: cos(90.0 deg)
  413. __STWRST
  414. L MD 8 // PI/2
  415. COS
  416. __ASSERT== __ACCU 1, 0.0
  417. __ASSERT== __STW A1, 0
  418. __ASSERT== __STW A0, 0
  419. __ASSERT== __STW OV, 0
  420. __ASSERT== __STW OS, 0
  421. // Test: cos(180.0 deg)
  422. __STWRST
  423. L MD 0 // PI
  424. COS
  425. __ASSERT== __ACCU 1, -1.0
  426. __ASSERT== __STW A1, 0
  427. __ASSERT== __STW A0, 1
  428. __ASSERT== __STW OV, 0
  429. __ASSERT== __STW OS, 0
  430. // Test: cos(-90.0 deg)
  431. __STWRST
  432. L MD 12 // -PI/2
  433. COS
  434. __ASSERT== __ACCU 1, 0.0
  435. __ASSERT== __STW A1, 0
  436. __ASSERT== __STW A0, 0
  437. __ASSERT== __STW OV, 0
  438. __ASSERT== __STW OS, 0
  439. // Test: cos(-180.0 deg)
  440. __STWRST
  441. L MD 4 // -PI
  442. COS
  443. __ASSERT== __ACCU 1, -1.0
  444. __ASSERT== __STW A1, 0
  445. __ASSERT== __STW A0, 1
  446. __ASSERT== __STW OV, 0
  447. __ASSERT== __STW OS, 0
  448. // Test: tan(0.0 deg)
  449. __STWRST
  450. L 0.0
  451. TAN
  452. __ASSERT== __ACCU 1, 0.0
  453. __ASSERT== __STW A1, 0
  454. __ASSERT== __STW A0, 0
  455. __ASSERT== __STW OV, 0
  456. __ASSERT== __STW OS, 0
  457. // Test: tan(-0.0 deg)
  458. __STWRST
  459. L -0.0
  460. TAN
  461. __ASSERT== __ACCU 1, 0.0
  462. __ASSERT== __STW A1, 0
  463. __ASSERT== __STW A0, 0
  464. __ASSERT== __STW OV, 0
  465. __ASSERT== __STW OS, 0
  466. // Test: tan(45.0 deg)
  467. __STWRST
  468. L MD 16 // PI/4
  469. TAN
  470. __ASSERT== __ACCU 1, 1.0
  471. __ASSERT== __STW A1, 1
  472. __ASSERT== __STW A0, 0
  473. __ASSERT== __STW OV, 0
  474. __ASSERT== __STW OS, 0
  475. // Test: tan(90.0 deg)
  476. __STWRST
  477. L MD 8 // PI/2
  478. TAN
  479. __ASSERT== __ACCU 1, DW#16#7F800000
  480. __ASSERT== __STW A1, 1
  481. __ASSERT== __STW A0, 0
  482. __ASSERT== __STW OV, 1
  483. __ASSERT== __STW OS, 1
  484. // Test: tan(180.0 deg)
  485. __STWRST
  486. L MD 0 // PI
  487. TAN
  488. __ASSERT== __ACCU 1, 0.0
  489. __ASSERT== __STW A1, 0
  490. __ASSERT== __STW A0, 0
  491. __ASSERT== __STW OV, 0
  492. __ASSERT== __STW OS, 0
  493. // Test: tan(-45.0 deg)
  494. __STWRST
  495. L MD 20 // -PI/4
  496. TAN
  497. __ASSERT== __ACCU 1, -1.0
  498. __ASSERT== __STW A1, 0
  499. __ASSERT== __STW A0, 1
  500. __ASSERT== __STW OV, 0
  501. __ASSERT== __STW OS, 0
  502. // Test: tan(-90.0 deg)
  503. __STWRST
  504. L MD 12 // -PI/2
  505. TAN
  506. __ASSERT== __ACCU 1, DW#16#FF800000
  507. __ASSERT== __STW A1, 0
  508. __ASSERT== __STW A0, 1
  509. __ASSERT== __STW OV, 1
  510. __ASSERT== __STW OS, 1
  511. // Test: tan(-180.0 deg)
  512. __STWRST
  513. L MD 4 // -PI
  514. TAN
  515. __ASSERT== __ACCU 1, 0.0
  516. __ASSERT== __STW A1, 0
  517. __ASSERT== __STW A0, 0
  518. __ASSERT== __STW OV, 0
  519. __ASSERT== __STW OS, 0
  520. // Test: asin(0.0)
  521. __STWRST
  522. L 0.0
  523. ASIN
  524. __ASSERT== __ACCU 1, 0.0
  525. __ASSERT== __STW A1, 0
  526. __ASSERT== __STW A0, 0
  527. __ASSERT== __STW OV, 0
  528. __ASSERT== __STW OS, 0
  529. // Test: asin(-0.0)
  530. __STWRST
  531. L -0.0
  532. ASIN
  533. __ASSERT== __ACCU 1, -0.0
  534. __ASSERT== __STW A1, 0
  535. __ASSERT== __STW A0, 0
  536. __ASSERT== __STW OV, 0
  537. __ASSERT== __STW OS, 0
  538. // Test: asin(1.0)
  539. __STWRST
  540. L 1.0
  541. ASIN
  542. __ASSERT== __ACCU 1, MD 8 // PI/2
  543. __ASSERT== __STW A1, 1
  544. __ASSERT== __STW A0, 0
  545. __ASSERT== __STW OV, 0
  546. __ASSERT== __STW OS, 0
  547. // Test: sin(-1.0)
  548. __STWRST
  549. L -1.0
  550. ASIN
  551. __ASSERT== __ACCU 1, MD 12 // -PI/2
  552. __ASSERT== __STW A1, 0
  553. __ASSERT== __STW A0, 1
  554. __ASSERT== __STW OV, 0
  555. __ASSERT== __STW OS, 0
  556. // Test: acos(1.0)
  557. __STWRST
  558. L 1.0
  559. ACOS
  560. __ASSERT== __ACCU 1, 0.0
  561. __ASSERT== __STW A1, 0
  562. __ASSERT== __STW A0, 0
  563. __ASSERT== __STW OV, 0
  564. __ASSERT== __STW OS, 0
  565. // Test: acos(0.0)
  566. __STWRST
  567. L 0.0
  568. ACOS
  569. __ASSERT== __ACCU 1, MD 8 // PI/2
  570. __ASSERT== __STW A1, 1
  571. __ASSERT== __STW A0, 0
  572. __ASSERT== __STW OV, 0
  573. __ASSERT== __STW OS, 0
  574. // Test: acos(-1.0)
  575. __STWRST
  576. L -1.0
  577. ACOS
  578. __ASSERT== __ACCU 1, MD 0 // PI
  579. __ASSERT== __STW A1, 1
  580. __ASSERT== __STW A0, 0
  581. __ASSERT== __STW OV, 0
  582. __ASSERT== __STW OS, 0
  583. // Test: atan(0.0)
  584. __STWRST
  585. L 0.0
  586. ATAN
  587. __ASSERT== __ACCU 1, 0.0
  588. __ASSERT== __STW A1, 0
  589. __ASSERT== __STW A0, 0
  590. __ASSERT== __STW OV, 0
  591. __ASSERT== __STW OS, 0
  592. // Test: atan(-0.0)
  593. __STWRST
  594. L -0.0
  595. ATAN
  596. __ASSERT== __ACCU 1, -0.0
  597. __ASSERT== __STW A1, 0
  598. __ASSERT== __STW A0, 0
  599. __ASSERT== __STW OV, 0
  600. __ASSERT== __STW OS, 0
  601. // Test: atan(1.0)
  602. __STWRST
  603. L 1.0
  604. ATAN
  605. __ASSERT== __ACCU 1, MD 16 // PI/4
  606. __ASSERT== __STW A1, 1
  607. __ASSERT== __STW A0, 0
  608. __ASSERT== __STW OV, 0
  609. __ASSERT== __STW OS, 0
  610. // Test: atan(inf)
  611. __STWRST
  612. L DW#16#7F800000
  613. ATAN
  614. __ASSERT== __ACCU 1, MD 8 // PI/2
  615. __ASSERT== __STW A1, 1
  616. __ASSERT== __STW A0, 0
  617. __ASSERT== __STW OV, 0
  618. __ASSERT== __STW OS, 0
  619. // Test: atan(-inf)
  620. __STWRST
  621. L DW#16#FF800000
  622. ATAN
  623. __ASSERT== __ACCU 1, MD 12 // -PI/2
  624. __ASSERT== __STW A1, 0
  625. __ASSERT== __STW A0, 1
  626. __ASSERT== __STW OV, 0
  627. __ASSERT== __STW OS, 0
  628. // Test: atan(-1.0)
  629. __STWRST
  630. L -1.0
  631. ATAN
  632. __ASSERT== __ACCU 1, MD 20 // -PI/4
  633. __ASSERT== __STW A1, 0
  634. __ASSERT== __STW A0, 1
  635. __ASSERT== __STW OV, 0
  636. __ASSERT== __STW OS, 0
  637. // Test: 1 -> 1.0
  638. __STWRST
  639. L 1
  640. DTR
  641. __ASSERT== __ACCU 1, 1.0
  642. // Test: -1 -> -1.0
  643. __STWRST
  644. L L#-1
  645. DTR
  646. __ASSERT== __ACCU 1, -1.0
  647. // Test: RND(1.1)
  648. __STWRST
  649. L 1.1
  650. RND
  651. __ASSERT== __ACCU 1, 1
  652. __ASSERT== __STW OV, 0
  653. __ASSERT== __STW OS, 0
  654. // Test: RND(1.5)
  655. __STWRST
  656. L 1.5
  657. RND
  658. __ASSERT== __ACCU 1, 2
  659. __ASSERT== __STW OV, 0
  660. __ASSERT== __STW OS, 0
  661. // Test: RND(2.5)
  662. __STWRST
  663. L 2.5
  664. RND
  665. __ASSERT== __ACCU 1, 2
  666. __ASSERT== __STW OV, 0
  667. __ASSERT== __STW OS, 0
  668. // Test: RND(-1.1)
  669. __STWRST
  670. L -1.1
  671. RND
  672. __ASSERT== __ACCU 1, L#-1
  673. __ASSERT== __STW OV, 0
  674. __ASSERT== __STW OS, 0
  675. // Test: RND(-1.5)
  676. __STWRST
  677. L -1.5
  678. RND
  679. __ASSERT== __ACCU 1, L#-2
  680. __ASSERT== __STW OV, 0
  681. __ASSERT== __STW OS, 0
  682. // Test: RND(-2.5)
  683. __STWRST
  684. L -2.5
  685. RND
  686. __ASSERT== __ACCU 1, L#-2
  687. __ASSERT== __STW OV, 0
  688. __ASSERT== __STW OS, 0
  689. // Test: RND(3000000000.0)
  690. __STWRST
  691. L 3000000000.0
  692. RND
  693. __ASSERT== __ACCU 1, 3000000000.0
  694. __ASSERT== __STW OV, 1
  695. __ASSERT== __STW OS, 1
  696. // Test: RND(nNAN)
  697. __STWRST
  698. L __CNST_NNAN
  699. RND
  700. __ASSERT== __ACCU 1, __CNST_NNAN
  701. __ASSERT== __STW OV, 1
  702. __ASSERT== __STW OS, 1
  703. // Test: RND(pNAN)
  704. __STWRST
  705. L __CNST_PNAN
  706. RND
  707. __ASSERT== __ACCU 1, __CNST_PNAN
  708. __ASSERT== __STW OV, 1
  709. __ASSERT== __STW OS, 1
  710. // Test: RND(nINF)
  711. __STWRST
  712. L __CNST_NINF
  713. RND
  714. __ASSERT== __ACCU 1, __CNST_NINF
  715. __ASSERT== __STW OV, 1
  716. __ASSERT== __STW OS, 1
  717. // Test: RND(pINF)
  718. __STWRST
  719. L __CNST_PINF
  720. RND
  721. __ASSERT== __ACCU 1, __CNST_PINF
  722. __ASSERT== __STW OV, 1
  723. __ASSERT== __STW OS, 1
  724. // Test: TRUNC(1.1)
  725. __STWRST
  726. L 1.1
  727. TRUNC
  728. __ASSERT== __ACCU 1, 1
  729. __ASSERT== __STW OV, 0
  730. __ASSERT== __STW OS, 0
  731. // Test: TRUNC(1.5)
  732. __STWRST
  733. L 1.5
  734. TRUNC
  735. __ASSERT== __ACCU 1, 1
  736. __ASSERT== __STW OV, 0
  737. __ASSERT== __STW OS, 0
  738. // Test: TRUNC(2.5)
  739. __STWRST
  740. L 2.5
  741. TRUNC
  742. __ASSERT== __ACCU 1, 2
  743. __ASSERT== __STW OV, 0
  744. __ASSERT== __STW OS, 0
  745. // Test: TRUNC(-1.1)
  746. __STWRST
  747. L -1.1
  748. TRUNC
  749. __ASSERT== __ACCU 1, L#-1
  750. __ASSERT== __STW OV, 0
  751. __ASSERT== __STW OS, 0
  752. // Test: TRUNC(-1.5)
  753. __STWRST
  754. L -1.5
  755. TRUNC
  756. __ASSERT== __ACCU 1, L#-1
  757. __ASSERT== __STW OV, 0
  758. __ASSERT== __STW OS, 0
  759. // Test: TRUNC(-2.5)
  760. __STWRST
  761. L -2.5
  762. TRUNC
  763. __ASSERT== __ACCU 1, L#-2
  764. __ASSERT== __STW OV, 0
  765. __ASSERT== __STW OS, 0
  766. // Test: TRUNC(3000000000.0)
  767. __STWRST
  768. L 3000000000.0
  769. TRUNC
  770. __ASSERT== __ACCU 1, 3000000000.0
  771. __ASSERT== __STW OV, 1
  772. __ASSERT== __STW OS, 1
  773. // Test: TRUNC(nNAN)
  774. __STWRST
  775. L __CNST_NNAN
  776. TRUNC
  777. __ASSERT== __ACCU 1, __CNST_NNAN
  778. __ASSERT== __STW OV, 1
  779. __ASSERT== __STW OS, 1
  780. // Test: TRUNC(pNAN)
  781. __STWRST
  782. L __CNST_PNAN
  783. TRUNC
  784. __ASSERT== __ACCU 1, __CNST_PNAN
  785. __ASSERT== __STW OV, 1
  786. __ASSERT== __STW OS, 1
  787. // Test: TRUNC(nINF)
  788. __STWRST
  789. L __CNST_NINF
  790. TRUNC
  791. __ASSERT== __ACCU 1, __CNST_NINF
  792. __ASSERT== __STW OV, 1
  793. __ASSERT== __STW OS, 1
  794. // Test: TRUNC(pINF)
  795. __STWRST
  796. L __CNST_PINF
  797. TRUNC
  798. __ASSERT== __ACCU 1, __CNST_PINF
  799. __ASSERT== __STW OV, 1
  800. __ASSERT== __STW OS, 1
  801. // Test: RND+(0.0)
  802. __STWRST
  803. L 0.0
  804. RND+
  805. __ASSERT== __ACCU 1, 0
  806. __ASSERT== __STW OV, 0
  807. __ASSERT== __STW OS, 0
  808. // Test: RND+(0.1)
  809. __STWRST
  810. L 0.1
  811. RND+
  812. __ASSERT== __ACCU 1, 1
  813. __ASSERT== __STW OV, 0
  814. __ASSERT== __STW OS, 0
  815. // Test: RND+(0.5)
  816. __STWRST
  817. L 0.5
  818. RND+
  819. __ASSERT== __ACCU 1, 1
  820. __ASSERT== __STW OV, 0
  821. __ASSERT== __STW OS, 0
  822. // Test: RND+(1.0)
  823. __STWRST
  824. L 1.0
  825. RND+
  826. __ASSERT== __ACCU 1, 1
  827. __ASSERT== __STW OV, 0
  828. __ASSERT== __STW OS, 0
  829. // Test: RND+(1.5)
  830. __STWRST
  831. L 1.5
  832. RND+
  833. __ASSERT== __ACCU 1, 2
  834. __ASSERT== __STW OV, 0
  835. __ASSERT== __STW OS, 0
  836. // Test: RND+(2.5)
  837. __STWRST
  838. L 2.5
  839. RND+
  840. __ASSERT== __ACCU 1, 3
  841. __ASSERT== __STW OV, 0
  842. __ASSERT== __STW OS, 0
  843. // Test: RND+(-0.1)
  844. __STWRST
  845. L -0.1
  846. RND+
  847. __ASSERT== __ACCU 1, 0
  848. __ASSERT== __STW OV, 0
  849. __ASSERT== __STW OS, 0
  850. // Test: RND+(-0.5)
  851. __STWRST
  852. L -0.5
  853. RND+
  854. __ASSERT== __ACCU 1, 0
  855. __ASSERT== __STW OV, 0
  856. __ASSERT== __STW OS, 0
  857. // Test: RND+(-1.0)
  858. __STWRST
  859. L -1.0
  860. RND+
  861. __ASSERT== __ACCU 1, L#-1
  862. __ASSERT== __STW OV, 0
  863. __ASSERT== __STW OS, 0
  864. // Test: RND+(-1.5)
  865. __STWRST
  866. L -1.5
  867. RND+
  868. __ASSERT== __ACCU 1, L#-1
  869. __ASSERT== __STW OV, 0
  870. __ASSERT== __STW OS, 0
  871. // Test: RND+(-2.5)
  872. __STWRST
  873. L -2.5
  874. RND+
  875. __ASSERT== __ACCU 1, L#-2
  876. __ASSERT== __STW OV, 0
  877. __ASSERT== __STW OS, 0
  878. // Test: RND+(3000000000.0)
  879. __STWRST
  880. L 3000000000.0
  881. RND+
  882. __ASSERT== __ACCU 1, 3000000000.0
  883. __ASSERT== __STW OV, 1
  884. __ASSERT== __STW OS, 1
  885. // Test: RND+(nNAN)
  886. __STWRST
  887. L __CNST_NNAN
  888. RND+
  889. __ASSERT== __ACCU 1, __CNST_NNAN
  890. __ASSERT== __STW OV, 1
  891. __ASSERT== __STW OS, 1
  892. // Test: RND+(pNAN)
  893. __STWRST
  894. L __CNST_PNAN
  895. RND+
  896. __ASSERT== __ACCU 1, __CNST_PNAN
  897. __ASSERT== __STW OV, 1
  898. __ASSERT== __STW OS, 1
  899. // Test: RND+(nINF)
  900. __STWRST
  901. L __CNST_NINF
  902. RND+
  903. __ASSERT== __ACCU 1, __CNST_NINF
  904. __ASSERT== __STW OV, 1
  905. __ASSERT== __STW OS, 1
  906. // Test: RND+(pINF)
  907. __STWRST
  908. L __CNST_PINF
  909. RND+
  910. __ASSERT== __ACCU 1, __CNST_PINF
  911. __ASSERT== __STW OV, 1
  912. __ASSERT== __STW OS, 1
  913. // Test: RND-(0.0)
  914. __STWRST
  915. L 0.0
  916. RND-
  917. __ASSERT== __ACCU 1, 0
  918. __ASSERT== __STW OV, 0
  919. __ASSERT== __STW OS, 0
  920. // Test: RND-(0.1)
  921. __STWRST
  922. L 0.1
  923. RND-
  924. __ASSERT== __ACCU 1, 0
  925. __ASSERT== __STW OV, 0
  926. __ASSERT== __STW OS, 0
  927. // Test: RND-(0.5)
  928. __STWRST
  929. L 0.5
  930. RND-
  931. __ASSERT== __ACCU 1, 0
  932. __ASSERT== __STW OV, 0
  933. __ASSERT== __STW OS, 0
  934. // Test: RND-(1.0)
  935. __STWRST
  936. L 1.0
  937. RND-
  938. __ASSERT== __ACCU 1, 1
  939. __ASSERT== __STW OV, 0
  940. __ASSERT== __STW OS, 0
  941. // Test: RND-(1.5)
  942. __STWRST
  943. L 1.5
  944. RND-
  945. __ASSERT== __ACCU 1, 1
  946. __ASSERT== __STW OV, 0
  947. __ASSERT== __STW OS, 0
  948. // Test: RND-(2.5)
  949. __STWRST
  950. L 2.5
  951. RND-
  952. __ASSERT== __ACCU 1, 2
  953. __ASSERT== __STW OV, 0
  954. __ASSERT== __STW OS, 0
  955. // Test: RND-(-0.1)
  956. __STWRST
  957. L -0.1
  958. RND-
  959. __ASSERT== __ACCU 1, L#-1
  960. __ASSERT== __STW OV, 0
  961. __ASSERT== __STW OS, 0
  962. // Test: RND-(-0.5)
  963. __STWRST
  964. L -0.5
  965. RND-
  966. __ASSERT== __ACCU 1, L#-1
  967. __ASSERT== __STW OV, 0
  968. __ASSERT== __STW OS, 0
  969. // Test: RND-(-1.0)
  970. __STWRST
  971. L -1.0
  972. RND-
  973. __ASSERT== __ACCU 1, L#-1
  974. __ASSERT== __STW OV, 0
  975. __ASSERT== __STW OS, 0
  976. // Test: RND-(-1.5)
  977. __STWRST
  978. L -1.5
  979. RND-
  980. __ASSERT== __ACCU 1, L#-2
  981. __ASSERT== __STW OV, 0
  982. __ASSERT== __STW OS, 0
  983. // Test: RND-(-2.5)
  984. __STWRST
  985. L -2.5
  986. RND-
  987. __ASSERT== __ACCU 1, L#-3
  988. __ASSERT== __STW OV, 0
  989. __ASSERT== __STW OS, 0
  990. // Test: RND-(3000000000.0)
  991. __STWRST
  992. L 3000000000.0
  993. RND-
  994. __ASSERT== __ACCU 1, 3000000000.0
  995. __ASSERT== __STW OV, 1
  996. __ASSERT== __STW OS, 1
  997. // Test: RND-(nNAN)
  998. __STWRST
  999. L __CNST_NNAN
  1000. RND-
  1001. __ASSERT== __ACCU 1, __CNST_NNAN
  1002. __ASSERT== __STW OV, 1
  1003. __ASSERT== __STW OS, 1
  1004. // Test: RND-(pNAN)
  1005. __STWRST
  1006. L __CNST_PNAN
  1007. RND-
  1008. __ASSERT== __ACCU 1, __CNST_PNAN
  1009. __ASSERT== __STW OV, 1
  1010. __ASSERT== __STW OS, 1
  1011. // Test: RND-(nINF)
  1012. __STWRST
  1013. L __CNST_NINF
  1014. RND-
  1015. __ASSERT== __ACCU 1, __CNST_NINF
  1016. __ASSERT== __STW OV, 1
  1017. __ASSERT== __STW OS, 1
  1018. // Test: RND-(pINF)
  1019. __STWRST
  1020. L __CNST_PINF
  1021. RND-
  1022. __ASSERT== __ACCU 1, __CNST_PINF
  1023. __ASSERT== __STW OV, 1
  1024. __ASSERT== __STW OS, 1
  1025. CALL SFC 46 // STOP CPU