Home | History | Annotate | Line # | Download | only in bfin
      1 //  Test ALU   RND RND12 RND20
      2 # mach: bfin
      3 
      4 .include "testutils.inc"
      5 	start
      6 
      7 
      8 // positive saturation
      9 	R0 = 0xffffffff;
     10 	A0.w = R0;
     11 	A1.w = R0;
     12 	R0 = 0x7f (X);
     13 	A0.x = R0;
     14 	A1.x = R0;
     15 	R3 = A1 + A0, R4 = A1 - A0 (S);
     16 	DBGA ( R3.H , 0x7fff );	DBGA ( R3.L , 0xffff );
     17 	DBGA ( R4.H , 0x0000 );	DBGA ( R4.L , 0x0000 );
     18 
     19 // neg saturation
     20 	R0 = 0;
     21 	A0.w = R0;
     22 	A1.w = R0;
     23 	R0 = 0x80 (X);
     24 	A0.x = R0;
     25 	A1.x = R0;
     26 	R3 = A1 + A0, R4 = A1 - A0 (S);
     27 	DBGA ( R3.H , 0x8000 );	DBGA ( R3.L , 0x0000 );
     28 	DBGA ( R4.H , 0x0000 );	DBGA ( R4.L , 0x0000 );
     29 
     30 // positive saturation
     31 	R0 = 0xfffffff0;
     32 	A0.w = R0;
     33 	A1.w = R0;
     34 	R0 = 0x01;
     35 	A0.x = R0;
     36 	A1.x = R0;
     37 	R3 = A1 + A0, R4 = A1 - A0 (S);
     38 	DBGA ( R3.H , 0x7fff );	DBGA ( R3.L , 0xffff );
     39 	DBGA ( R4.H , 0x0000 );	DBGA ( R4.L , 0x0000 );
     40 
     41 // no sat
     42 	R0 = 0xfffffff0;
     43 	A0.w = R0;
     44 	A1.w = R0;
     45 	R0 = 0x01;
     46 	A0.x = R0;
     47 	A1.x = R0;
     48 	R3 = A1 + A0, R4 = A1 - A0 (NS);
     49 	DBGA ( R3.H , 0xffff );	DBGA ( R3.L , 0xffe0 );
     50 	DBGA ( R4.H , 0x0000 );	DBGA ( R4.L , 0x0000 );
     51 
     52 // add and sub +1 -1
     53 	R0 = 0x00000001;
     54 	A0.w = R0;
     55 	R0 = 0xffffffff;
     56 	A1.w = R0;
     57 	R0 = 0;
     58 	A0.x = R0;
     59 	R0 = 0xff (X);
     60 	A1.x = R0;
     61 	R3 = A1 + A0, R4 = A1 - A0 (NS);
     62 	DBGA ( R3.H , 0x0000 );	DBGA ( R3.L , 0x0000 ); // 0
     63 	DBGA ( R4.H , 0xffff );	DBGA ( R4.L , 0xfffe ); // -2
     64 
     65 // should get the same with saturation
     66 	R3 = A1 + A0, R4 = A1 - A0 (S);
     67 	DBGA ( R3.H , 0x0000 );	DBGA ( R3.L , 0x0000 ); // 0
     68 	DBGA ( R4.H , 0xffff );	DBGA ( R4.L , 0xfffe ); // -2
     69 
     70 // add and sub -1 +1 but with reverse order of A0 A1
     71 	R0 = 0x00000001;
     72 	A0.w = R0;
     73 	R0 = 0xffffffff;
     74 	A1.w = R0;
     75 	R0 = 0;
     76 	A0.x = R0;
     77 	R0 = 0xff (X);
     78 	A1.x = R0;
     79 	R3 = A0 + A1, R4 = A0 - A1 (NS);
     80 	DBGA ( R3.H , 0x0000 );	DBGA ( R3.L , 0x0000 );
     81 	DBGA ( R4.H , 0x0000 );	DBGA ( R4.L , 0x0002 );
     82 
     83 	pass
     84