nkeynes@357: .section .text nkeynes@357: .include "sh4/inc.s" nkeynes@357: ! nkeynes@357: ! Test ftrc nkeynes@357: nkeynes@357: .global _test_ftrc nkeynes@357: _test_ftrc: nkeynes@357: start_test nkeynes@357: nkeynes@357: xor r0,r0 nkeynes@357: lds r0, fpscr nkeynes@357: nkeynes@357: test_ftrc_1: ! Load 1.0 single precision nkeynes@357: add #1, r12 nkeynes@357: mov.l test_ftrc_1_input, r0 nkeynes@357: lds r0, fpul nkeynes@357: fsts fpul, fr0 nkeynes@357: ftrc fr0, fpul nkeynes@357: sts fpul, r0 nkeynes@357: mov.l test_ftrc_1_result, r1 nkeynes@357: cmp/eq r0,r1 nkeynes@357: bt test_ftrc_2 nkeynes@357: test_ftrc_1_fail: nkeynes@357: fail test_ftrc_str_k nkeynes@357: bra test_ftrc_2 nkeynes@357: nop nkeynes@357: nkeynes@357: .align 4 nkeynes@357: test_ftrc_1_input: nkeynes@357: .long 0x3F800000 nkeynes@357: test_ftrc_1_result: nkeynes@357: .long 0x00000001 nkeynes@357: nkeynes@357: test_ftrc_2: ! Load -1.0 double precision nkeynes@357: add #1, r12 nkeynes@357: setpr nkeynes@357: mov.l test_ftrc_2_input_a, r0 nkeynes@357: lds r0, fpul nkeynes@357: fsts fpul, fr0 nkeynes@357: mov.l test_ftrc_2_input_b, r0 nkeynes@357: lds r0, fpul nkeynes@357: fsts fpul, fr1 nkeynes@357: ftrc fr0, fpul nkeynes@357: sts fpul, r0 nkeynes@357: mov.l test_ftrc_2_result, r1 nkeynes@357: cmp/eq r0,r1 nkeynes@357: bt test_ftrc_3 nkeynes@357: test_ftrc_2_fail: nkeynes@357: fail test_ftrc_str_k nkeynes@357: bra test_ftrc_3 nkeynes@357: nop nkeynes@357: nkeynes@357: test_ftrc_2_input_a: nkeynes@357: .long 0xBFF00000 nkeynes@357: test_ftrc_2_input_b: nkeynes@357: .long 0x00000000 nkeynes@357: test_ftrc_2_result: nkeynes@357: .long 0xFFFFFFFF nkeynes@357: nkeynes@357: test_ftrc_3: ! pr=0, sz=1 nkeynes@357: add #1, r12 nkeynes@357: clrpr nkeynes@357: mov.l test_ftrc_3_input, r0 nkeynes@357: lds r0, fpul nkeynes@357: fsts fpul, fr0 nkeynes@357: fschg nkeynes@357: ftrc fr0, fpul nkeynes@357: sts fpul, r0 nkeynes@357: mov.l test_ftrc_3_result, r1 nkeynes@357: cmp/eq r0, r1 nkeynes@357: bt test_ftrc_4 nkeynes@357: test_ftrc_3_fail: nkeynes@357: fail test_ftrc_str_k nkeynes@357: bra test_ftrc_4 nkeynes@357: nop nkeynes@357: nkeynes@357: test_ftrc_3_input: nkeynes@357: .long 0xCE4CCCCD nkeynes@357: test_ftrc_3_result: nkeynes@357: .long 0xCCCCCCC0 nkeynes@357: nkeynes@357: test_ftrc_4: ! pr=1, sz=1 nkeynes@357: add #1, r12 nkeynes@357: fldi0 fr0 nkeynes@357: fldi1 fr1 nkeynes@357: setpr nkeynes@357: mov.l test_ftrc_4_input_a, r0 nkeynes@357: lds r0, fpul nkeynes@357: fsts fpul, fr0 nkeynes@357: mov.l test_ftrc_4_input_b, r0 nkeynes@357: lds r0, fpul nkeynes@357: fsts fpul, fr1 nkeynes@357: ftrc fr0, fpul nkeynes@357: sts fpul, r0 nkeynes@357: mov.l test_ftrc_4_result, r1 nkeynes@357: cmp/eq r0,r1 nkeynes@357: bt test_ftrc_5 nkeynes@357: test_ftrc_4_fail: nkeynes@357: fail test_ftrc_str_k nkeynes@357: bra test_ftrc_5 nkeynes@357: nop nkeynes@357: nkeynes@357: test_ftrc_4_input_a: nkeynes@357: .long 0x41DFFFFF nkeynes@357: test_ftrc_4_input_b: nkeynes@357: .long 0xFFC00000 nkeynes@357: test_ftrc_4_result: nkeynes@357: .long 0x7FFFFFFF nkeynes@357: nkeynes@357: nkeynes@357: test_ftrc_5: ! test w/ max +int, sz=0, pr=0, fr=1 nkeynes@357: add #1, r12 nkeynes@357: xor r0,r0 nkeynes@357: lds r0, fpscr nkeynes@357: fldi0 fr0 nkeynes@357: fldi0 fr1 nkeynes@357: frchg nkeynes@357: fldi0 fr0 nkeynes@357: fldi0 fr1 nkeynes@357: mov.l test_ftrc_5_input, r0 nkeynes@357: lds r0, fpul nkeynes@357: fsts fpul, fr0 nkeynes@357: ftrc fr0, fpul nkeynes@357: sts fpul, r0 nkeynes@357: mov.l test_ftrc_5_result, r1 nkeynes@357: cmp/eq r0, r1 nkeynes@357: bf test_ftrc_5_fail nkeynes@357: flds fr1, fpul nkeynes@357: sts fpul, r0 nkeynes@357: tst r0, r0 nkeynes@357: bf test_ftrc_5_fail nkeynes@357: lds r0, fpscr nkeynes@357: flds fr0, fpul nkeynes@357: sts fpul, r0 nkeynes@357: tst r0, r0 nkeynes@357: bt test_ftrc_6 nkeynes@357: test_ftrc_5_fail: nkeynes@357: fail test_ftrc_str_k nkeynes@357: bra test_ftrc_6 nkeynes@357: nop nkeynes@357: nkeynes@357: test_ftrc_5_input: nkeynes@357: .long 0x4F000000 nkeynes@357: test_ftrc_5_result: nkeynes@357: .long 0x7FFFFFFF nkeynes@357: nkeynes@357: test_ftrc_6: ! Test max -int nkeynes@357: add #1, r12 nkeynes@357: mov.l test_ftrc_6_input, r0 nkeynes@357: lds r0, fpul nkeynes@357: fsts fpul, fr5 nkeynes@357: ftrc fr5, fpul nkeynes@357: sts fpul, r2 nkeynes@357: mov.l test_ftrc_6_result, r1 nkeynes@357: cmp/eq r1, r2 nkeynes@357: bt test_ftrc_7 nkeynes@357: nkeynes@357: test_ftrc_6_fail: nkeynes@357: fail test_ftrc_str_k nkeynes@357: bra test_ftrc_7 nkeynes@357: nop nkeynes@357: nkeynes@357: test_ftrc_6_input: nkeynes@357: .long 0xCF000000 nkeynes@357: test_ftrc_6_result: nkeynes@357: .long 0x80000000 nkeynes@357: nkeynes@357: test_ftrc_7: ! Test >max +int nkeynes@357: add #1, r12 nkeynes@357: mov.l test_ftrc_7_input, r0 nkeynes@357: lds r0, fpul nkeynes@357: fsts fpul, fr7 nkeynes@357: ftrc fr7, fpul nkeynes@357: sts fpul, r2 nkeynes@357: mov.l test_ftrc_7_result, r1 nkeynes@357: cmp/eq r1, r2 nkeynes@357: bt test_ftrc_8 nkeynes@357: test_ftrc_7_fail: nkeynes@357: fail test_ftrc_str_k nkeynes@357: bra test_ftrc_7 nkeynes@357: nop nkeynes@357: nkeynes@357: test_ftrc_7_input: nkeynes@357: .long 0x7E111111 nkeynes@357: test_ftrc_7_result: nkeynes@357: .long 0x7FFFFFFF nkeynes@357: nkeynes@357: test_ftrc_8: ! test < min -int nkeynes@357: add #1, r12 nkeynes@357: mov.l test_ftrc_8_input, r0 nkeynes@357: lds r0, fpul nkeynes@357: fsts fpul, fr9 nkeynes@357: ftrc fr9, fpul nkeynes@357: sts fpul, r2 nkeynes@357: mov.l test_ftrc_8_result, r1 nkeynes@357: cmp/eq r1, r2 nkeynes@357: bt test_ftrc_end nkeynes@357: test_ftrc_8_fail: nkeynes@357: fail test_ftrc_str_k nkeynes@357: bra test_ftrc_8 nkeynes@357: nop nkeynes@357: nkeynes@357: test_ftrc_8_input: nkeynes@357: .long 0xFE111111 nkeynes@357: test_ftrc_8_result: nkeynes@357: .long 0x80000000 nkeynes@357: nkeynes@357: nkeynes@357: test_ftrc_end: nkeynes@357: end_test test_ftrc_str_k nkeynes@357: nkeynes@357: test_ftrc_str: nkeynes@357: .string "FTRC" nkeynes@357: nkeynes@357: .align 4 nkeynes@357: test_ftrc_str_k: nkeynes@357: .long test_ftrc_str