64eef9bf95
Use bbci.l/bbsi.l instead of bbci/bbsi, as they are assembly macros that accept little-endian bit number and produce correct immediate for both little and big endian configurations. Choose value loaded into register for bbc/bbs opcodes based on configuration endianness. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
246 lines
3.2 KiB
ArmAsm
246 lines
3.2 KiB
ArmAsm
#include "macros.inc"
|
|
|
|
test_suite b
|
|
|
|
test bnone
|
|
movi a2, 0xa5a5ff00
|
|
movi a3, 0x5a5a00ff
|
|
bnone a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 0xa5a5ff01
|
|
bnone a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test beq
|
|
movi a2, 0
|
|
movi a3, 0
|
|
beq a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 1
|
|
beq a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test blt
|
|
movi a2, 6
|
|
movi a3, 7
|
|
blt a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 0xffffffff
|
|
blt a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 7
|
|
blt a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test bltu
|
|
movi a2, 6
|
|
movi a3, 7
|
|
bltu a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 7
|
|
bltu a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
movi a2, 0xffffffff
|
|
bltu a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test ball
|
|
movi a2, 0xa5a5ffa5
|
|
movi a3, 0xa5a5ff00
|
|
ball a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 0xa5a5a5a5
|
|
ball a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test bbc
|
|
movi a2, 0xfffffffd
|
|
#undef BIT
|
|
#if XCHAL_HAVE_BE
|
|
#define BIT 0xfffffffe
|
|
#else
|
|
#define BIT 0xffffff01
|
|
#endif
|
|
movi a3, BIT
|
|
bbc a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 8
|
|
#undef BIT
|
|
#if XCHAL_HAVE_BE
|
|
#define BIT 0xfffffffc
|
|
#else
|
|
#define BIT 0xffffff03
|
|
#endif
|
|
movi a3, BIT
|
|
bbc a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test bbci
|
|
movi a2, 0xfffdffff
|
|
bbci.l a2, 17, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 0x00020000
|
|
bbci.l a2, 17, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test bany
|
|
movi a2, 0xa5a5ff01
|
|
movi a3, 0x5a5a00ff
|
|
bany a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 0xa5a5ff00
|
|
bany a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test bne
|
|
movi a2, 1
|
|
movi a3, 0
|
|
bne a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 0
|
|
bne a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test bge
|
|
movi a2, 7
|
|
movi a3, 7
|
|
bge a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 6
|
|
bge a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
movi a2, 0xffffffff
|
|
bge a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test bgeu
|
|
movi a2, 7
|
|
movi a3, 7
|
|
bgeu a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 0xffffffff
|
|
bgeu a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 6
|
|
bgeu a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test bnall
|
|
movi a2, 0xa5a5a5a5
|
|
movi a3, 0xa5a5ff00
|
|
bnall a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 0xa5a5ffa5
|
|
bnall a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test bbs
|
|
movi a2, 8
|
|
#undef BIT
|
|
#if XCHAL_HAVE_BE
|
|
#define BIT 0xfffffffc
|
|
#else
|
|
#define BIT 0xffffff03
|
|
#endif
|
|
movi a3, BIT
|
|
bbs a2, a3, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 0xfffffffd
|
|
#undef BIT
|
|
#if XCHAL_HAVE_BE
|
|
#define BIT 0xfffffffe
|
|
#else
|
|
#define BIT 0xffffff01
|
|
#endif
|
|
movi a3, BIT
|
|
bbs a2, a3, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test bbsi
|
|
movi a2, 0x00020000
|
|
bbsi.l a2, 17, 1f
|
|
test_fail
|
|
1:
|
|
movi a2, 0xfffdffff
|
|
bbsi.l a2, 17, 1f
|
|
j 2f
|
|
1:
|
|
test_fail
|
|
2:
|
|
test_end
|
|
|
|
test_suite_end
|