blob: 57eaa5cbbc95458a8d8e4f88899437ae2a2b5f6e [file] [log] [blame]
# Blackfin testcase for playing with TESTSET
# mach: bfin
.include "testutils.inc"
start
.macro _ts val:req
/* Load value to the external data storage */
imm32 R0, \val
[P4] = R0;
FLUSHINV[P4];
SSYNC;
mnop;
imm32 R1, 0xdeadbeef
imm32 R2, 0xdeadbeef
TESTSET (P4);
SSYNC;
mnop;
mnop;
/* TESTSET will set CC based on low byte == 0 */
.if \val & 0xff
if CC jump 1f;
.else
if ! CC jump 1f;
.endif
/* Regardless of CC, the byte MSB is set to 1 */
imm32 R1, \val | 0x80
/* Make sure the result is what we want */
R2 = [P4];
FLUSHINV[P4];
SSYNC;
mnop;
CC = R2 == R1;
if ! CC jump 1f;
jump 2f;
1: fail
2:
.endm
.macro ts val:req
_ts \val
_ts ~(\val)
.endm
loadsym P4, _data
ts 0x00000000
ts 0x00000011
ts 0x11111111
ts 0x11111101
ts 0x11111110
ts 0x111111bb
ts 0xaaaaaa00
ts 0xabcd2222
ts 0x000000bb
ts 0x55555555
ts 0x5555550a
ts 0x00100010
ts 0x00100100
ts 0x33333000
ts 0x000000aa
pass
.data
_data:
.long 0
.size _data, .-_data