blob: 6b3e8ca26e491b4f95c4020063a66ffa1e7ee0c9 [file] [log] [blame]
# Test ASTAT bits with logical left shift (<<=)
# mach: bfin
.include "testutils.inc"
#include "test.h"
start
.macro __do val:req, shift:req, exp:req
# First test when ASTAT starts with all bits cleared
imm32 R2, \val;
ASTAT = R0;
R2 <<= \shift;
R3 = ASTAT;
CHECKREG R2, (\val << \shift);
CHECKREG R3, \exp;
# Then test when ASTAT starts with all bits set
imm32 R2, \val;
ASTAT = R1;
R2 <<= \shift;
R3 = ASTAT;
CHECKREG R3, (\exp) | ~(_AZ|_AN|_V|_V_COPY);
.endm
.macro _do shift:req, val:req
# Automatically test all shifted values
.if ((\val << \shift) & 0xffffffff) == 0
__do \val, \shift, _AZ
.else
.if (\val << \shift) == 0x80000000
__do \val, \shift, _AN
.else
__do \val, \shift, 0
.endif
.endif
.if (\val << 1) & 0xffffffff
_do \shift, (\val << 1)
.endif
.endm
.macro do shift:req
_l_shft_\shift:
_do \shift, 1
.endm
R0 = 0;
R1 = -1;
do 0
do 1
do 2
do 3
do 4
do 5
do 6
do 7
do 8
do 9
do 10
do 11
do 12
do 13
do 14
do 15
do 16
do 17
do 18
do 19
do 20
do 21
do 22
do 23
do 24
do 25
do 26
do 27
do 28
do 29
do 30
do 31
pass