nkeynes@226: .section .text nkeynes@226: .include "sh4/inc.s" nkeynes@226: ! nkeynes@226: ! Test AND #imm, R0 operation nkeynes@226: ! Test AND #imm, @(r0,GBR) nkeynes@226: nkeynes@226: .global _test_andi nkeynes@226: _test_andi: nkeynes@226: start_test nkeynes@226: nkeynes@226: test_andi_1: ! test and ff, 0 nkeynes@226: add #1, r12 nkeynes@226: xor r0, r0 nkeynes@226: xor r1, r1 nkeynes@226: and #255, r0 nkeynes@226: cmp/eq r0, r1 nkeynes@226: bt test_andi_2 nkeynes@226: fail test_andi_str_k nkeynes@226: nkeynes@226: test_andi_2: ! test 0-extend nkeynes@226: add #1, r12 nkeynes@226: mov.l test_andi_2_op1, r0 nkeynes@226: and #255, r0 nkeynes@226: mov.l test_andi_2_result, r4 nkeynes@226: cmp/eq r0, r4 nkeynes@226: bt test_andi_3 nkeynes@226: fail test_andi_str_k nkeynes@226: bra test_andi_3 nkeynes@226: nop nkeynes@226: nkeynes@226: test_andi_2_op1: nkeynes@226: .long 0x98765432 nkeynes@226: test_andi_2_result: nkeynes@226: .long 0x00000032 nkeynes@226: nkeynes@226: test_andi_3: ! Test single-bit AND nkeynes@226: add #1, r12 nkeynes@226: mov.l test_andi_3_op1, r0 nkeynes@226: and #128, r0 nkeynes@226: mov.l test_andi_3_result, r3 nkeynes@226: cmp/eq r0, r3 nkeynes@226: bt test_andi_4 nkeynes@226: fail test_andi_str_k nkeynes@226: bra test_andi_4 nkeynes@226: nop nkeynes@226: test_andi_3_op1: nkeynes@226: .long 0x123456AB nkeynes@226: test_andi_3_result: nkeynes@226: .long 0x00000080 nkeynes@226: nkeynes@226: test_andi_4: ! Test GBR version nkeynes@226: add #1, r12 nkeynes@226: stc gbr, r4 nkeynes@226: mov.l test_andi_4_gbr, r0 nkeynes@226: ldc r0, gbr nkeynes@226: mov.l test_andi_4_op1, r0 nkeynes@226: and.b #254, @(r0,gbr) nkeynes@228: add #1, r0 nkeynes@228: and.b #67, @(r0,gbr) nkeynes@228: add #2, r0 nkeynes@228: and.b #227, @(r0,gbr) nkeynes@226: ldc r4, gbr nkeynes@226: mov.l test_andi_4_output, r1 nkeynes@226: mov.l test_andi_4_result, r2 nkeynes@226: cmp/eq r1, r2 nkeynes@226: bt test_andi_5 nkeynes@226: fail test_andi_str_k nkeynes@226: bra test_andi_5 nkeynes@226: nop nkeynes@226: test_andi_4_gbr: nkeynes@226: .long test_andi_4_gbr nkeynes@226: test_andi_4_op1: nkeynes@226: .long 0x00000008 nkeynes@226: test_andi_4_output: nkeynes@226: .long 0x123456AB nkeynes@226: test_andi_4_result: nkeynes@228: .long 0x023442AA nkeynes@226: nkeynes@226: test_andi_5: nkeynes@226: test_andi_end: nkeynes@226: end_test test_andi_str_k nkeynes@226: nkeynes@226: test_andi_str: nkeynes@226: .string "ANDi" nkeynes@226: nkeynes@226: .align 4 nkeynes@226: test_andi_str_k: nkeynes@226: .long test_andi_str nkeynes@226: