filename | test/sh4/cmpstr.s |
changeset | 364:d738f6883d4a |
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@364 | 1 | .section .text |
nkeynes@364 | 2 | .include "sh4/inc.s" |
nkeynes@364 | 3 | ! |
nkeynes@364 | 4 | ! Test cmp/xx |
nkeynes@364 | 5 | |
nkeynes@364 | 6 | .global _test_cmpstr |
nkeynes@364 | 7 | _test_cmpstr: |
nkeynes@364 | 8 | start_test |
nkeynes@364 | 9 | mov.l r11, @-r15 |
nkeynes@364 | 10 | mov.l r10, @-r15 |
nkeynes@364 | 11 | |
nkeynes@364 | 12 | test_cmpstr_1: ! CMP/STR r2,r2 |
nkeynes@364 | 13 | add #1, r12 |
nkeynes@364 | 14 | mova test_cmpstr_str, r0 |
nkeynes@364 | 15 | cmp/str r0, r0 |
nkeynes@364 | 16 | bt test_cmpstr_2 |
nkeynes@364 | 17 | fail test_cmpstr_str_k |
nkeynes@364 | 18 | |
nkeynes@364 | 19 | test_cmpstr_2: |
nkeynes@364 | 20 | mova test_cmpstr_data, r0 |
nkeynes@364 | 21 | mov r0, r11 |
nkeynes@364 | 22 | mov #6, r10 |
nkeynes@364 | 23 | |
nkeynes@364 | 24 | test_cmpstr_2_loop: |
nkeynes@364 | 25 | add #1, r12 |
nkeynes@364 | 26 | mov.l @r11+, r2 |
nkeynes@364 | 27 | mov.l @r11+, r3 |
nkeynes@364 | 28 | mov.l @r11+, r4 |
nkeynes@364 | 29 | cmp/str r2, r3 |
nkeynes@364 | 30 | movt r0 |
nkeynes@364 | 31 | cmp/eq r0, r4 |
nkeynes@364 | 32 | bt test_cmpstr_2_ok |
nkeynes@364 | 33 | fail test_cmpstr_str_k |
nkeynes@364 | 34 | test_cmpstr_2_ok: |
nkeynes@364 | 35 | dt r10 |
nkeynes@364 | 36 | bf test_cmpstr_2_loop |
nkeynes@364 | 37 | |
nkeynes@364 | 38 | test_cmpstr_end: |
nkeynes@364 | 39 | mov.l @r15+, r10 |
nkeynes@364 | 40 | mov.l @r15+, r11 |
nkeynes@364 | 41 | end_test test_cmpstr_str_k |
nkeynes@364 | 42 | |
nkeynes@364 | 43 | test_cmpstr_data: |
nkeynes@364 | 44 | .long 0x81828384 |
nkeynes@364 | 45 | .long 0x82838485 |
nkeynes@364 | 46 | .long 0x00000000 |
nkeynes@364 | 47 | |
nkeynes@364 | 48 | .long 0x01040302 |
nkeynes@364 | 49 | .long 0x02010304 |
nkeynes@364 | 50 | .long 0x00000001 |
nkeynes@364 | 51 | |
nkeynes@364 | 52 | .long 0xAA55AA55 |
nkeynes@364 | 53 | .long 0x55AA55AA |
nkeynes@364 | 54 | .long 0x00000000 |
nkeynes@364 | 55 | |
nkeynes@364 | 56 | .long 0x12345678 |
nkeynes@364 | 57 | .long 0x12345678 |
nkeynes@364 | 58 | .long 0x00000001 |
nkeynes@364 | 59 | |
nkeynes@364 | 60 | .long 0xABCD01DC |
nkeynes@364 | 61 | .long 0xABCD01DD |
nkeynes@364 | 62 | .long 0x00000001 |
nkeynes@364 | 63 | |
nkeynes@364 | 64 | .long 0x12003423 |
nkeynes@364 | 65 | .long 0x12342300 |
nkeynes@364 | 66 | .long 0x00000001 |
nkeynes@364 | 67 | |
nkeynes@364 | 68 | test_cmpstr_str_k: |
nkeynes@364 | 69 | .long test_cmpstr_str |
nkeynes@364 | 70 | test_cmpstr_str: |
nkeynes@364 | 71 | .string "CMP/STR" |
nkeynes@364 | 72 |
.