filename | test/sh4/sub.s |
changeset | 393:5e5335b61373 |
author | nkeynes |
date | Fri Dec 02 18:18:04 2011 +1000 (12 years ago) |
permissions | -rw-r--r-- |
last change | SH4 shadow-mode tweaks - Fix exceptions generated by the translator to account for the excepting instruction(s) in the cycle counts. - Compare floating point regs bitwise rather than with FP comparisons (otherwise can fail due to nan != nan) - Dump the translated block when we abort with an inconsistency |
file | annotate | diff | log | raw |
nkeynes@393 | 1 | .section .text |
nkeynes@393 | 2 | .include "sh4/inc.s" |
nkeynes@393 | 3 | |
nkeynes@393 | 4 | .global _test_sub |
nkeynes@393 | 5 | _test_sub: |
nkeynes@393 | 6 | start_test |
nkeynes@393 | 7 | |
nkeynes@393 | 8 | test_sub_1: ! test subing 0+0 = 0 |
nkeynes@393 | 9 | add #1, r12 |
nkeynes@393 | 10 | xor r0,r0 |
nkeynes@393 | 11 | xor r1,r1 |
nkeynes@393 | 12 | xor r2,r2 |
nkeynes@393 | 13 | sett |
nkeynes@393 | 14 | sub r0,r1 |
nkeynes@393 | 15 | bf test_sub_1_fail |
nkeynes@393 | 16 | cmp/eq r1, r2 |
nkeynes@393 | 17 | bt test_sub_2 |
nkeynes@393 | 18 | test_sub_1_fail: |
nkeynes@393 | 19 | fail test_sub_str_k |
nkeynes@393 | 20 | |
nkeynes@393 | 21 | test_sub_2: ! test 0+ constant 1 = 1 |
nkeynes@393 | 22 | add #1, r12 |
nkeynes@393 | 23 | xor r0, r0 |
nkeynes@393 | 24 | xor r1, r1 |
nkeynes@393 | 25 | mov.l test_sub_2_input, r0 |
nkeynes@393 | 26 | mov.l test_sub_2_result, r2 |
nkeynes@393 | 27 | clrt |
nkeynes@393 | 28 | sub r0, r1 |
nkeynes@393 | 29 | bt test_sub_2_fail |
nkeynes@393 | 30 | cmp/eq r1, r2 |
nkeynes@393 | 31 | bt test_sub_3 |
nkeynes@393 | 32 | test_sub_2_fail: |
nkeynes@393 | 33 | fail test_sub_str_k |
nkeynes@393 | 34 | bra test_sub_3 |
nkeynes@393 | 35 | nop |
nkeynes@393 | 36 | |
nkeynes@393 | 37 | .align 4 |
nkeynes@393 | 38 | test_sub_2_input: |
nkeynes@393 | 39 | .long 0x00000001 |
nkeynes@393 | 40 | test_sub_2_result: |
nkeynes@393 | 41 | .long 0xFFFFFFFF |
nkeynes@393 | 42 | |
nkeynes@393 | 43 | test_sub_3: ! test 0 + constant -1 = -1 |
nkeynes@393 | 44 | add #1, r12 |
nkeynes@393 | 45 | mov.l test_sub_3_input_1, r0 |
nkeynes@393 | 46 | mov r0, r1 |
nkeynes@393 | 47 | mov.l test_sub_3_input_2, r1 |
nkeynes@393 | 48 | sett |
nkeynes@393 | 49 | sub r0, r1 |
nkeynes@393 | 50 | bf test_sub_3_fail |
nkeynes@393 | 51 | mov.l test_sub_3_result, r2 |
nkeynes@393 | 52 | cmp/eq r1, r2 |
nkeynes@393 | 53 | bt test_sub_4 |
nkeynes@393 | 54 | test_sub_3_fail: |
nkeynes@393 | 55 | fail test_sub_str_k |
nkeynes@393 | 56 | bra test_sub_4 |
nkeynes@393 | 57 | nop |
nkeynes@393 | 58 | |
nkeynes@393 | 59 | .align 4 |
nkeynes@393 | 60 | test_sub_3_input_1: |
nkeynes@393 | 61 | .long 0xFFFFFF84 |
nkeynes@393 | 62 | test_sub_3_input_2: |
nkeynes@393 | 63 | .long 0x43217000 |
nkeynes@393 | 64 | test_sub_3_result: |
nkeynes@393 | 65 | .long 0x4321707C |
nkeynes@393 | 66 | |
nkeynes@393 | 67 | test_sub_4: ! Test 0 result |
nkeynes@393 | 68 | add #1, r12 |
nkeynes@393 | 69 | mov.l test_sub_4_op1, r2 |
nkeynes@393 | 70 | mov.l test_sub_4_op2, r1 |
nkeynes@393 | 71 | mov r2, r3 |
nkeynes@393 | 72 | sub r1, r3 |
nkeynes@393 | 73 | mov.l test_sub_4_result_1, r0 |
nkeynes@393 | 74 | cmp/eq r0, r3 |
nkeynes@393 | 75 | bf test_sub_4_fail |
nkeynes@393 | 76 | mov r2, r3 |
nkeynes@393 | 77 | sub r3, r1 |
nkeynes@393 | 78 | mov.l test_sub_4_result_2, r2 |
nkeynes@393 | 79 | cmp/eq r1, r2 |
nkeynes@393 | 80 | bt test_sub_5 |
nkeynes@393 | 81 | test_sub_4_fail: |
nkeynes@393 | 82 | fail test_sub_str_k |
nkeynes@393 | 83 | bra test_sub_5 |
nkeynes@393 | 84 | nop |
nkeynes@393 | 85 | test_sub_4_op1: |
nkeynes@393 | 86 | .long 0x00000001 |
nkeynes@393 | 87 | test_sub_4_op2: |
nkeynes@393 | 88 | .long 0xFFFFFFFF |
nkeynes@393 | 89 | test_sub_4_result_1: |
nkeynes@393 | 90 | .long 0x00000002 |
nkeynes@393 | 91 | test_sub_4_result_2: |
nkeynes@393 | 92 | .long 0xFFFFFFFE |
nkeynes@393 | 93 | |
nkeynes@393 | 94 | test_sub_5: |
nkeynes@393 | 95 | add #1, r12 |
nkeynes@393 | 96 | mov.l test_sub_5_op, r2 |
nkeynes@393 | 97 | sett |
nkeynes@393 | 98 | sub r2, r2 |
nkeynes@393 | 99 | bf test_sub_5_fail |
nkeynes@393 | 100 | tst r2, r2 |
nkeynes@393 | 101 | bt test_sub_end |
nkeynes@393 | 102 | test_sub_5_fail: |
nkeynes@393 | 103 | fail test_sub_str_k |
nkeynes@393 | 104 | bra test_sub_end |
nkeynes@393 | 105 | nop |
nkeynes@393 | 106 | |
nkeynes@393 | 107 | test_sub_5_op: |
nkeynes@393 | 108 | .long 0xABCD1234 |
nkeynes@393 | 109 | |
nkeynes@393 | 110 | test_sub_end: |
nkeynes@393 | 111 | end_test test_sub_str_k |
nkeynes@393 | 112 | |
nkeynes@393 | 113 | test_sub_str: |
nkeynes@393 | 114 | .string "SUB" |
nkeynes@393 | 115 | |
nkeynes@393 | 116 | .align 4 |
nkeynes@393 | 117 | test_sub_str_k: |
nkeynes@393 | 118 | .long test_sub_str |
nkeynes@393 | 119 |
.