# Blackfin testcase for ashift # mach: bfin .include "testutils.inc" .macro ashift_test in:req, shift:req, out:req, opt r0 = \in (Z); r2.L = \shift; r2.h = ASHIFT R0.L BY R2.L \opt; DBGA (r2.h, \out); .endm start /* * 16-bit ashift and lshift uses a 6-bit signed magnitude, which * gives a range from -32 to 31. In the case where the magnitude * is -32, make sure the answer is correct. */ ashift_test 0x8001, 33, 0xffff; ashift_test 0x8001, 32, 0xffff; ashift_test 0x8001, 31, 0x0000; ashift_test 0x8001, 30, 0x0000; ashift_test 0x8001, 29, 0x0000; ashift_test 0x8001, 28, 0x0000; ashift_test 0x8001, 27, 0x0000; ashift_test 0x8001, 26, 0x0000; ashift_test 0x8001, 25, 0x0000; ashift_test 0x8001, 24, 0x0000; ashift_test 0x8001, 23, 0x0000; ashift_test 0x8001, 22, 0x0000; ashift_test 0x8001, 21, 0x0000; ashift_test 0x8001, 20, 0x0000; ashift_test 0x8001, 19, 0x0000; ashift_test 0x8001, 18, 0x0000; ashift_test 0x8001, 17, 0x0000; ashift_test 0x8001, 16, 0x0000; ashift_test 0x8001, 15, 0x8000; ashift_test 0x8001, 14, 0x4000; ashift_test 0x8001, 13, 0x2000; ashift_test 0x8001, 12, 0x1000; ashift_test 0x8001, 11, 0x0800; ashift_test 0x8001, 10, 0x0400; ashift_test 0x8001, 9, 0x0200; ashift_test 0x8001, 8, 0x0100; ashift_test 0x8001, 7, 0x0080; ashift_test 0x8001, 6, 0x0040; ashift_test 0x8001, 5, 0x0020; ashift_test 0x8001, 4, 0x0010; ashift_test 0x8001, 3, 0x0008; ashift_test 0x8001, 2, 0x0004; ashift_test 0x8001, 1, 0x0002; ashift_test 0x8001, 0, 0x8001; ashift_test 0x8001, -1, 0xc000; ashift_test 0x8001, -2, 0xe000; ashift_test 0x8001, -3, 0xf000; ashift_test 0x8001, -4, 0xf800; ashift_test 0x8001, -5, 0xfc00; ashift_test 0x8001, -6, 0xfe00; ashift_test 0x8001, -7, 0xff00; ashift_test 0x8001, -8, 0xff80; ashift_test 0x8001, -9, 0xffc0; ashift_test 0x8001, -10, 0xffe0; ashift_test 0x8001, -11, 0xfff0; ashift_test 0x8001, -12, 0xfff8; ashift_test 0x8001, -13, 0xfffc; ashift_test 0x8001, -14, 0xfffe; ashift_test 0x8001, -15, 0xffff; ashift_test 0x8001, -16, 0xffff; ashift_test 0x8001, -17, 0xffff; ashift_test 0x8001, -18, 0xffff; ashift_test 0x8001, -19, 0xffff; ashift_test 0x8001, -20, 0xffff; ashift_test 0x8001, -21, 0xffff; ashift_test 0x8001, -22, 0xffff; ashift_test 0x8001, -23, 0xffff; ashift_test 0x8001, -24, 0xffff; ashift_test 0x8001, -25, 0xffff; ashift_test 0x8001, -26, 0xffff; ashift_test 0x8001, -27, 0xffff; ashift_test 0x8001, -28, 0xffff; ashift_test 0x8001, -29, 0xffff; ashift_test 0x8001, -30, 0xffff; ashift_test 0x8001, -31, 0xffff; ashift_test 0x8001, -32, 0xffff; ashift_test 0x8001, -33, 0x0; ashift_test 0x8001, -34, 0x0; ashift_test 0x8001, 33, 0xffff, (S); ashift_test 0x8001, 32, 0xffff, (S); ashift_test 0x8001, 31, 0x8000, (S); ashift_test 0x8001, 30, 0x8000, (S); ashift_test 0x8001, 29, 0x8000, (S); ashift_test 0x8001, 28, 0x8000, (S); ashift_test 0x8001, 27, 0x8000, (S); ashift_test 0x8001, 26, 0x8000, (S); ashift_test 0x8001, 25, 0x8000, (S); ashift_test 0x8001, 24, 0x8000, (S); ashift_test 0x8001, 23, 0x8000, (S); ashift_test 0x8001, 22, 0x8000, (S); ashift_test 0x8001, 21, 0x8000, (S); ashift_test 0x8001, 20, 0x8000, (S); ashift_test 0x8001, 19, 0x8000, (S); ashift_test 0x8001, 18, 0x8000, (S); ashift_test 0x8001, 17, 0x8000, (S); ashift_test 0x8001, 16, 0x8000, (S); ashift_test 0x8001, 15, 0x8000, (S); ashift_test 0x8001, 14, 0x8000, (S); ashift_test 0x8001, 13, 0x8000, (S); ashift_test 0x8001, 12, 0x8000, (S); ashift_test 0x8001, 11, 0x8000, (S); ashift_test 0x8001, 10, 0x8000, (S); ashift_test 0x8001, 9, 0x8000, (S); ashift_test 0x8001, 8, 0x8000, (S); ashift_test 0x8001, 7, 0x8000, (S); ashift_test 0x8001, 6, 0x8000, (S); ashift_test 0x8001, 5, 0x8000, (S); ashift_test 0x8001, 4, 0x8000, (S); ashift_test 0x8001, 3, 0x8000, (S); ashift_test 0x8001, 2, 0x8000, (S); ashift_test 0x8001, 1, 0x8000, (S); ashift_test 0x8001, 0, 0x8001, (S); ashift_test 0x8001, -1, 0xc000, (S); ashift_test 0x8001, -2, 0xe000, (S); ashift_test 0x8001, -3, 0xf000, (S); ashift_test 0x8001, -4, 0xf800, (S); ashift_test 0x8001, -5, 0xfc00, (S); ashift_test 0x8001, -6, 0xfe00, (S); ashift_test 0x8001, -7, 0xff00, (S); ashift_test 0x8001, -8, 0xff80, (S); ashift_test 0x8001, -9, 0xffc0, (S); ashift_test 0x8001, -10, 0xffe0, (S); ashift_test 0x8001, -11, 0xfff0, (S); ashift_test 0x8001, -12, 0xfff8, (S); ashift_test 0x8001, -13, 0xfffc, (S); ashift_test 0x8001, -14, 0xfffe, (S); ashift_test 0x8001, -15, 0xffff, (S); ashift_test 0x8001, -16, 0xffff, (S); ashift_test 0x8001, -17, 0xffff, (S); ashift_test 0x8001, -18, 0xffff, (S); ashift_test 0x8001, -19, 0xffff, (S); ashift_test 0x8001, -20, 0xffff, (S); ashift_test 0x8001, -21, 0xffff, (S); ashift_test 0x8001, -22, 0xffff, (S); ashift_test 0x8001, -23, 0xffff, (S); ashift_test 0x8001, -24, 0xffff, (S); ashift_test 0x8001, -25, 0xffff, (S); ashift_test 0x8001, -26, 0xffff, (S); ashift_test 0x8001, -27, 0xffff, (S); ashift_test 0x8001, -28, 0xffff, (S); ashift_test 0x8001, -29, 0xffff, (S); ashift_test 0x8001, -30, 0xffff, (S); ashift_test 0x8001, -31, 0xffff, (S); ashift_test 0x8001, -32, 0xffff, (S); ashift_test 0x8001, -33, 0x8000, (S); ashift_test 0x8001, -34, 0x8000, (S); ashift_test 0x4002, 33, 0x0; ashift_test 0x4002, 32, 0x0; ashift_test 0x4002, 31, 0x0; ashift_test 0x4002, 30, 0x0; ashift_test 0x4002, 20, 0x0; ashift_test 0x4002, 19, 0x0; ashift_test 0x4002, 18, 0x0; ashift_test 0x4002, 17, 0x0; ashift_test 0x4002, 16, 0x0; ashift_test 0x4002, 15, 0x0; ashift_test 0x4002, 14, 0x8000; ashift_test 0x4002, 13, 0x4000; ashift_test 0x4002, 12, 0x2000; ashift_test 0x4002, 11, 0x1000; ashift_test 0x4002, 10, 0x0800; ashift_test 0x4002, 9, 0x0400; ashift_test 0x4002, 8, 0x0200; ashift_test 0x4002, 7, 0x0100; ashift_test 0x4002, 6, 0x0080; ashift_test 0x4002, 5, 0x0040; ashift_test 0x4002, 4, 0x0020; ashift_test 0x4002, 3, 0x0010; ashift_test 0x4002, 2, 0x0008; ashift_test 0x4002, 1, 0x8004; ashift_test 0x4002, 0, 0x4002; ashift_test 0x4002, -1, 0x2001; ashift_test 0x4002, -2, 0x1000; ashift_test 0x4002, -3, 0x0800; ashift_test 0x4002, -4, 0x0400; ashift_test 0x4002, -5, 0x0200; ashift_test 0x4002, -6, 0x0100; ashift_test 0x4002, -7, 0x0080; ashift_test 0x4002, -8, 0x0040; ashift_test 0x4002, -9, 0x0020; ashift_test 0x4002, -10, 0x0010; ashift_test 0x4002, -11, 0x0008; ashift_test 0x4002, -12, 0x0004; ashift_test 0x4002, -13, 0x0002; ashift_test 0x4002, -14, 0x0001; ashift_test 0x4002, -15, 0x0; ashift_test 0x4002, -16, 0x0; ashift_test 0x4002, -17, 0x0; ashift_test 0x4002, -31, 0x0; ashift_test 0x4002, -32, 0x0; ashift_test 0x4002, -33, 0x0; ashift_test 0x4002, -34, 0x0; ashift_test 0x4002, 33, 0x0, (S); ashift_test 0x4002, 32, 0x0, (S); ashift_test 0x4002, 31, 0x7fff, (S); ashift_test 0x4002, 30, 0x7fff, (S); ashift_test 0x4002, 20, 0x7fff, (S); ashift_test 0x4002, 19, 0x7fff, (S); ashift_test 0x4002, 18, 0x7fff, (S); ashift_test 0x4002, 17, 0x7fff, (S); ashift_test 0x4002, 16, 0x7fff, (S); ashift_test 0x4002, 15, 0x7fff, (S); ashift_test 0x4002, 14, 0x7fff, (S); ashift_test 0x4002, 13, 0x7fff, (S); ashift_test 0x4002, 12, 0x7fff, (S); ashift_test 0x4002, 11, 0x7fff, (S); ashift_test 0x4002, 10, 0x7fff, (S); ashift_test 0x4002, 9, 0x7fff, (S); ashift_test 0x4002, 8, 0x7fff, (S); ashift_test 0x4002, 7, 0x7fff, (S); ashift_test 0x4002, 6, 0x7fff, (S); ashift_test 0x4002, 5, 0x7fff, (S); ashift_test 0x4002, 4, 0x7fff, (S); ashift_test 0x4002, 3, 0x7fff, (S); ashift_test 0x4002, 2, 0x7fff, (S); ashift_test 0x4002, 1, 0x7fff, (S); ashift_test 0x4002, 0, 0x4002, (S); ashift_test 0x4002, -1, 0x2001, (S); ashift_test 0x4002, -2, 0x1000, (S); ashift_test 0x4002, -3, 0x0800, (S); ashift_test 0x4002, -4, 0x0400, (S); ashift_test 0x4002, -5, 0x0200, (S); ashift_test 0x4002, -6, 0x0100, (S); ashift_test 0x4002, -7, 0x0080, (S); ashift_test 0x4002, -8, 0x0040, (S); ashift_test 0x4002, -9, 0x0020, (S); ashift_test 0x4002, -10, 0x0010, (S); ashift_test 0x4002, -11, 0x0008, (S); ashift_test 0x4002, -12, 0x0004, (S); ashift_test 0x4002, -13, 0x0002, (S); ashift_test 0x4002, -14, 0x0001, (S); ashift_test 0x4002, -15, 0x0000, (S); ashift_test 0x4002, -16, 0x0000, (S); ashift_test 0x4002, -17, 0x0000, (S); ashift_test 0x4002, -31, 0x0000, (S); ashift_test 0x4002, -32, 0x0000, (S); ashift_test 0x4002, -33, 0x7fff, (S); ashift_test 0x4002, -34, 0x7fff, (S); ashift_test 0x0001, 33, 0x0000, (S); ashift_test 0x0001, 32, 0x0000, (S); ashift_test 0x0001, 31, 0x7fff, (S); ashift_test 0x0001, 30, 0x7fff, (S); ashift_test 0x0001, 29, 0x7fff, (S); ashift_test 0x0001, 28, 0x7fff, (S); ashift_test 0x0001, 27, 0x7fff, (S); ashift_test 0x0001, 26, 0x7fff, (S); ashift_test 0x0001, 25, 0x7fff, (S); ashift_test 0x0001, 24, 0x7fff, (S); ashift_test 0x0001, 23, 0x7fff, (S); ashift_test 0x0001, 22, 0x7fff, (S); ashift_test 0x0001, 21, 0x7fff, (S); ashift_test 0x0001, 20, 0x7fff, (S); ashift_test 0x0001, 19, 0x7fff, (S); ashift_test 0x0001, 18, 0x7fff, (S); ashift_test 0x0001, 17, 0x7fff, (S); ashift_test 0x0001, 16, 0x7fff, (S); ashift_test 0x0001, 15, 0x7fff, (S); ashift_test 0x0001, 14, 0x4000, (S); ashift_test 0x0001, 13, 0x2000, (S); ashift_test 0x0001, 12, 0x1000, (S); ashift_test 0x0001, 11, 0x0800, (S); ashift_test 0x0001, 10, 0x0400, (S); ashift_test 0x0001, 9, 0x0200, (S); ashift_test 0x0001, 8, 0x0100, (S); ashift_test 0x0001, 7, 0x0080, (S); ashift_test 0x0001, 6, 0x0040, (S); ashift_test 0x0001, 5, 0x0020, (S); ashift_test 0x0001, 4, 0x0010, (S); ashift_test 0x0001, 3, 0x0008, (S); ashift_test 0x0001, 2, 0x0004, (S); ashift_test 0x0001, 1, 0x0002, (S); ashift_test 0x0001, 0, 0x0001, (S); ashift_test 0x0001, -1, 0x0000, (S); ashift_test 0x0001, -2, 0x0000, (S); ashift_test 0x0001, -3, 0x0000, (S); ashift_test 0x0001, -4, 0x0000, (S); ashift_test 0x0001, -5, 0x0000, (S); ashift_test 0x0001, -6, 0x0000, (S); ashift_test 0x0001, -7, 0x0000, (S); ashift_test 0x0001, -8, 0x0000, (S); ashift_test 0x0001, -9, 0x0000, (S); ashift_test 0x0001, -10, 0x0000, (S); ashift_test 0x0001, -11, 0x0000, (S); ashift_test 0x0001, -12, 0x0000, (S); ashift_test 0x0001, -13, 0x0000, (S); ashift_test 0x0001, -14, 0x0, (S); ashift_test 0x0001, -15, 0x0, (S); ashift_test 0x0001, -16, 0x0, (S); ashift_test 0x0001, -17, 0x0, (S); ashift_test 0x0001, -18, 0x0, (S); ashift_test 0x0001, -19, 0x0, (S); ashift_test 0x0001, -20, 0x0, (S); ashift_test 0x0001, -21, 0x0, (S); ashift_test 0x0001, -22, 0x0, (S); ashift_test 0x0001, -23, 0x0, (S); ashift_test 0x0001, -24, 0x0, (S); ashift_test 0x0001, -25, 0x0, (S); ashift_test 0x0001, -26, 0x0, (S); ashift_test 0x0001, -27, 0x0, (S); ashift_test 0x0001, -28, 0x0, (S); ashift_test 0x0001, -29, 0x0, (S); ashift_test 0x0001, -30, 0x0, (S); ashift_test 0x0001, -31, 0x0, (S); ashift_test 0x0001, -32, 0x0, (S); ashift_test 0x0001, -33, 0x7fff, (S); ashift_test 0x0001, -34, 0x7fff, (S); pass