1*4b169a6bSchristos# Blackfin testcase for ABS instruction 2*4b169a6bSchristos# mach: bfin 3*4b169a6bSchristos 4*4b169a6bSchristos#include "test.h" 5*4b169a6bSchristos 6*4b169a6bSchristos .include "testutils.inc" 7*4b169a6bSchristos 8*4b169a6bSchristos start 9*4b169a6bSchristos 10*4b169a6bSchristos .global _test 11*4b169a6bSchristos_test: 12*4b169a6bSchristos R6 = ASTAT; 13*4b169a6bSchristos R0.H = 0x1234; 14*4b169a6bSchristos R0.L = 0x5678; 15*4b169a6bSchristos R1 = ABS R0; 16*4b169a6bSchristos R7 = ASTAT; 17*4b169a6bSchristos R2.H = 0x1234; 18*4b169a6bSchristos R2.L = 0x5678; 19*4b169a6bSchristos CC = R1 == R2; 20*4b169a6bSchristos IF !CC JUMP 1f; 21*4b169a6bSchristos /* CLEARED: AZ AN V V_COPY */ 22*4b169a6bSchristos R3.H = HI(_AZ|_AN|_V|_V_COPY); 23*4b169a6bSchristos R3.L = LO(_AZ|_AN|_V|_V_COPY); 24*4b169a6bSchristos R4 = R7 & R3; 25*4b169a6bSchristos CC = R4 == 0; 26*4b169a6bSchristos IF !CC JUMP 1f; 27*4b169a6bSchristos /* SET: */ 28*4b169a6bSchristos R3.H = HI(0); 29*4b169a6bSchristos R3.L = LO(0); 30*4b169a6bSchristos R4 = R7 & R3; 31*4b169a6bSchristos CC = R3 == R4; 32*4b169a6bSchristos IF !CC JUMP 1f; 33*4b169a6bSchristos /* UNAFFECTED: CC AQ RND_MOD AV0 AV0S AV1 AV1S VS AC0 AC0_COPY AC1 */ 34*4b169a6bSchristos R3.H = HI(_CC|_AQ|_RND_MOD|_AV0|_AV0S|_AV1|_AV1S|_VS|_AC0|_AC0_COPY|_AC1); 35*4b169a6bSchristos R3.L = LO(_CC|_AQ|_RND_MOD|_AV0|_AV0S|_AV1|_AV1S|_VS|_AC0|_AC0_COPY|_AC1); 36*4b169a6bSchristos R4 = R6 & R3; 37*4b169a6bSchristos R5 = R7 & R3; 38*4b169a6bSchristos CC = R4 == R5; 39*4b169a6bSchristos IF !CC JUMP 1f; 40*4b169a6bSchristos pass 41*4b169a6bSchristos1: 42*4b169a6bSchristos fail 43