1// Shifter test program. 2// Test instructions 3// RL5 = EXPADJ R4 BY RL2; 4# mach: bfin 5 6.include "testutils.inc" 7 start 8 9 10 R0.L = 30; // large norm of small value 11 R0.H = 1; // make sure high half is not used 12 R1.L = 0x0000; 13 R1.H = 0x1000; // small norm (2) of large value 14 R7.L = EXPADJ( R1 , R0.L ); 15 DBGA ( R7.L , 0x0002 ); 16 17 R0.L = 3; // small norm of large value 18 R0.H = 1; // make sure high half is not used 19 R1.L = 0x0000; 20 R1.H = 0xff00; // small norm (2) of large value 21 R7.L = EXPADJ( R1 , R0.L ); 22 DBGA ( R7.L , 0x0003 ); 23 24 R0.L = 3; 25 R0.H = 1; 26 R1.L = 0xffff; 27 R1.H = 0xffff; 28 R7.L = EXPADJ( R1 , R0.L ); 29 DBGA ( R7.L , 0x0003 ); 30 31 R0.L = 31; 32 R0.H = 1; 33 R1.L = 0x0000; // norm=0 34 R1.H = 0x8000; 35 R7.L = EXPADJ( R1 , R0.L ); 36 DBGA ( R7.L , 0x0000 ); 37 38// RL5 = EXPADJ/EXPADJ R4 BY RL2; 39 40 R0.L = 15; 41 R1.L = 0x0800; 42 R1.H = 0x1000; 43 R7.L = EXPADJ( R1 , R0.L ) (V); 44 DBGA ( R7.L , 0x0002 ); 45 46 R0.L = 15; 47 R1.L = 0x1000; 48 R1.H = 0x0800; 49 R7.L = EXPADJ( R1 , R0.L ) (V); 50 DBGA ( R7.L , 0x0002 ); 51 52 R0.L = 1; 53 R1.L = 0x0800; 54 R1.H = 0x1000; 55 R7.L = EXPADJ( R1 , R0.L ) (V); 56 DBGA ( R7.L , 0x0001 ); 57 58 R0.L = 14; 59 R1.L = 0xff00; 60 R1.H = 0xfff0; 61 R7.L = EXPADJ( R1 , R0.L ) (V); 62 DBGA ( R7.L , 0x0007 ); 63 64// RL5 = EXPADJ RL4 BY RL2; 65 66 R0.L = 14; 67 R1.L = 0xff00; 68 R1.H = 0x1000; 69 R7.L = EXPADJ( R1.L , R0.L ); 70 DBGA ( R7.L , 0x0007 ); 71 72 R0.L = 3; 73 R1.L = 0xff00; 74 R1.H = 0x1000; 75 R7.L = EXPADJ( R1.L , R0.L ); 76 DBGA ( R7.L , 0x0003 ); 77 78 R0.L = 14; 79 R1.L = 0x1000; 80 R1.H = 0xff00; 81 R7.L = EXPADJ( R1.H , R0.L ); 82 DBGA ( R7.L , 0x0007 ); 83 84 pass 85