]> oss.titaniummirror.com Git - msp430-binutils.git/blobdiff - gas/testsuite/gas/bfin/shift2.s
Imported binutils-2.20
[msp430-binutils.git] / gas / testsuite / gas / bfin / shift2.s
index 69377bcd101e46e757728cb86acc6f90cec707e7..99115a65b7f0daf1469f357866b4c0d62c6e9a9c 100755 (executable)
-\r
-.EXTERN MY_LABEL2;\r
-.section .text;\r
-\r
-//\r
-//9 SHIFT/ROTATE OPERATIONS\r
-//\r
-\r
-//Preg = ( Preg + Preg ) << 1 ; /* dest_reg = (dest_reg + src_reg) x 2 (a) */\r
-P0 = (P0+P0)<<1;\r
-P0 = (P0+P1)<<1;\r
-P2 = (P2+P0)<<1;\r
-P1 = (P1+P2)<<1;\r
-\r
-//P0 = (P2+P0)<<1;\r
-\r
-//Preg = ( Preg + Preg ) << 2 ; /* dest_reg = (dest_reg + src_reg) x 4 (a) */\r
-P0 = (P0+P0)<<2;\r
-P0 = (P0+P1)<<2;\r
-P2 = (P2+P0)<<2;\r
-P1 = (P1+P2)<<2;\r
-\r
-//P0 = (P2+P0)<<2;\r
-\r
-//Dreg = (Dreg + Dreg) << 1 ; /* dest_reg = (dest_reg + src_reg) x 2 (a) */\r
-R0 = (R0+R0)<<1;\r
-R0 = (R0+R1)<<1;\r
-R2 = (R2+R0)<<1;\r
-R1 = (R1+R2)<<1;\r
-\r
-//R0 = (R2+R0)<<1;\r
-\r
-\r
-//Dreg = (Dreg + Dreg) << 2 ; /* dest_reg = (dest_reg + src_reg) x 4 (a) */\r
-R0 = (R0+R0)<<2;\r
-R0 = (R0+R1)<<2;\r
-R2 = (R2+R0)<<2;\r
-R1 = (R1+R2)<<2;\r
-\r
-//R0 = (R2+R0)<<2;\r
-\r
-//Preg = Preg + ( Preg << 1 ) ; /* adder_pntr + (src_pntr x 2) (a) */\r
-P0 = P0 + (P0 << 1);\r
-P0 = P0 + (P1 << 1);\r
-P0 = P0 + (P2 << 1);\r
-P0 = P1 + (P2 << 1);\r
-P0 = P2 + (P3 << 1);\r
-P1 = P0 + (P0 << 1);\r
-P1 = P0 + (P1 << 1);\r
-P1 = P0 + (P2 << 1);\r
-P1 = P1 + (P2 << 1);\r
-P1 = P2 + (P3 << 1);\r
-\r
-//Preg = Preg + ( Preg << 2 ) ; /* adder_pntr + (src_pntr x 4) (a) */\r
-P0 = P0 + (P0 << 2);\r
-P0 = P0 + (P1 << 2);\r
-P0 = P0 + (P2 << 2);\r
-P0 = P1 + (P2 << 2);\r
-P0 = P2 + (P3 << 2);\r
-P1 = P0 + (P0 << 2);\r
-P1 = P0 + (P1 << 2);\r
-P1 = P0 + (P2 << 2);\r
-P1 = P1 + (P2 << 2);\r
-P1 = P2 + (P3 << 2);\r
-\r
-//Dreg >>>= uimm5 ; /* arithmetic right shift (a) */\r
-R0 >>>= 0;\r
-R0 >>>= 31;\r
-R0 >>>= 5;\r
-R5 >>>= 0;\r
-R5 >>>= 31;\r
-R5 >>>= 5;\r
-\r
-//Dreg <<= uimm5 ; /* logical left shift (a) */\r
-R0 <<= 0;\r
-R0 <<= 31;\r
-R0 <<= 5;\r
-R5 <<= 0;\r
-R5 <<= 31;\r
-R5 <<= 5;\r
-//Dreg_lo_hi = Dreg_lo_hi >>> uimm4 ; /* arithmetic right shift (b) */\r
-R0.L = R0.L >>> 0;\r
-R0.L = R0.L >>> 15;\r
-R0.L = R0.H >>> 0;\r
-R0.L = R0.H >>> 15;\r
-R0.H = R0.L >>> 0;\r
-R0.H = R0.L >>> 15;\r
-R0.H = R0.H >>> 0;\r
-R0.H = R0.H >>> 15;\r
-\r
-R0.L = R1.L >>> 0;\r
-R0.L = R1.L >>> 15;\r
-R0.L = R1.H >>> 0;\r
-R0.L = R1.H >>> 15;\r
-R0.H = R1.L >>> 0;\r
-R0.H = R1.L >>> 15;\r
-R0.H = R1.H >>> 0;\r
-R0.H = R1.H >>> 15;\r
-\r
-R0.L = R7.L >>> 0;\r
-R1.L = R6.L >>> 15;\r
-R2.L = R5.H >>> 0;\r
-R3.L = R4.H >>> 15;\r
-R4.H = R3.L >>> 0;\r
-R5.H = R2.L >>> 15;\r
-R6.H = R1.H >>> 0;\r
-R7.H = R0.H >>> 15;\r
-\r
-//Dreg_lo_hi = Dreg_lo_hi << uimm4 (S) ; /* arithmetic left shift (b) */\r
-R0.L = R0.L << 0(S);\r
-R0.L = R0.L << 15(S);\r
-R0.L = R0.H << 0(S);\r
-R0.L = R0.H << 15(S);\r
-R0.H = R0.L << 0(S);\r
-R0.H = R0.L << 15(S);\r
-R0.H = R0.H << 0(S);\r
-R0.H = R0.H << 15(S);\r
-\r
-R0.L = R1.L << 0(S);\r
-R0.L = R1.L << 15(S);\r
-R0.L = R1.H << 0(S);\r
-R0.L = R1.H << 15(S);\r
-R0.H = R1.L << 0(S);\r
-R0.H = R1.L << 15(S);\r
-R0.H = R1.H << 0(S);\r
-R0.H = R1.H << 15(S);\r
-\r
-R0.L = R7.L << 0(S);\r
-R1.L = R6.L << 15(S);\r
-R2.L = R5.H << 0(S);\r
-R3.L = R4.H << 15(S);\r
-R4.H = R3.L << 0(S);\r
-R5.H = R2.L << 15(S);\r
-R6.H = R1.H << 0(S);\r
-R7.H = R0.H << 15(S);\r
-//Dreg = Dreg >>> uimm5 ; /* arithmetic right shift (b) */\r
-R0 = R0 >>> 0;\r
-R0 = R0 >>> 31;\r
-R0 = R1 >>> 0;\r
-R0 = R1 >>> 31;\r
-R7 = R0 >>> 0;\r
-R6 = R1 >>> 31;\r
-R5 = R2 >>> 0;\r
-R4 = R3 >>> 31;\r
-R3 = R4 >>> 0;\r
-R2 = R5 >>> 31;\r
-R1 = R6 >>> 0;\r
-R0 = R7 >>> 31;\r
-\r
-//Dreg = Dreg << uimm5 (S) ; /* arithmetic left shift (b) */\r
-R0 = R0 << 0(S);\r
-R0 = R0 << 31(S);\r
-R0 = R1 << 0(S);\r
-R0 = R1 << 31(S);\r
-R7 = R0 << 0(S);\r
-R6 = R1 << 31(S);\r
-R5 = R2 << 0(S);\r
-R4 = R3 << 31(S);\r
-R3 = R4 << 0(S);\r
-R2 = R5 << 31(S);\r
-R1 = R6 << 0(S);\r
-R0 = R7 << 31(S);\r
-//A0 = A0 >>> uimm5 ; /* arithmetic right shift (b) */\r
-A0 = A0 >>> 0;\r
-A0 = A0 >>> 15;\r
-A0 = A0 >>> 31;\r
-\r
-//A0 = A0 << uimm5 ; /* logical left shift (b) */\r
-A0 = A0 << 0;\r
-A0 = A0 << 15;\r
-A0 = A0 << 31;\r
-\r
-//A1 = A1 >>> uimm5 ; /* arithmetic right shift (b) */\r
-A1 = A1 >>> 0;\r
-A1 = A1 >>> 15;\r
-A1 = A1 >>> 31;\r
-\r
-//A1 = A1 << uimm5 ; /* logical left shift (b) */\r
-A1 = A1 << 0;\r
-A1 = A1 << 15;\r
-A1 = A1 << 31;\r
-\r
-//Dreg >>>= Dreg ; /* arithmetic right shift (a) */\r
-R0 >>>= R0;\r
-R0 >>>= R1;\r
-R1 >>>= R0;\r
-R1 >>>= R7;\r
-\r
-//Dreg <<= Dreg ; /* logical left shift (a) */\r
-R0 <<= R0;\r
-R0 <<= R1;\r
-R1 <<= R0;\r
-R1 <<= R7;\r
-\r
-//Dreg_lo_hi = ASHIFT Dreg_lo_hi BY Dreg_lo (opt_sat) ; /* arithmetic right shift (b) */\r
-r3.l = ashift r0.h by r7.l ; /* shift, half-word */\r
-r3.h = ashift r0.l by r7.l ;\r
-r3.h = ashift r0.h by r7.l ;\r
-r3.l = ashift r0.l by r7.l ;\r
-r3.l = ashift r0.h by r7.l(s) ; /* shift, half-word, saturated */\r
-r3.h = ashift r0.l by r7.l(s) ; /* shift, half-word, saturated */\r
-r3.h = ashift r0.h by r7.l(s) ;\r
-r3.l = ashift r0.l by r7.l (s) ;\r
-\r
-//Dreg = ASHIFT Dreg BY Dreg_lo (opt_sat) ; /* arithmetic right shift (b) */\r
-r4 = ashift r2 by r7.l ; /* shift, word */\r
-r4 = ashift r2 by r7.l (s) ; /* shift, word, saturated */\r
-\r
-//A0 = ASHIFT A0 BY Dreg_lo ; /* arithmetic right shift (b)*/\r
-A0 = ashift A0 by r7.l ; /* shift, Accumulator */\r
-\r
-//A1 = ASHIFT A1 BY Dreg_lo ; /* arithmetic right shift (b)*/\r
-A1 = ashift A1 by r7.l ; /* shift, Accumulator */\r
-\r
-p3 = p2 >> 1 ; /* pointer right shift by 1 */\r
-p3 = p3 >> 2 ; /* pointer right shift by 2 */\r
-p4 = p5 << 1 ; /* pointer left shift by 1 */\r
-p0 = p1 << 2 ; /* pointer left shift by 2 */\r
-r3 >>= 17 ; /* data right shift */\r
-r3 <<= 17 ; /* data left shift */\r
-r3.l = r0.l >> 4 ; /* data right shift, half-word register */\r
-r3.l = r0.h >> 4 ; /* same as above; half-word register combinations are arbitrary */\r
-r3.h = r0.l << 12 ; /* data left shift, half-word register */\r
-r3.h = r0.h << 14 ; /* same as above; half-word register combinations are arbitrary */\r
-\r
-r3 = r6 >> 4 ; /* right shift, 32-bit word */\r
-r3 = r6 << 4 ; /* left shift, 32-bit word */\r
-\r
-a0 = a0 >> 7 ; /* Accumulator right shift */\r
-a1 = a1 >> 25 ; /* Accumulator right shift */\r
-a0 = a0 << 7 ; /* Accumulator left shift */\r
-a1 = a1 << 14 ; /* Accumulator left shift */\r
-\r
-r3 >>= r0 ; /* data right shift */\r
-r3 <<= r1 ; /* data left shift */\r
-\r
-r3.l = lshift r0.l by r2.l ; /* shift direction controlled by sign of R2.L */\r
-r3.h = lshift r0.l by r2.l ;\r
-\r
-a0 = lshift a0 by r7.l ;\r
-a1 = lshift a1 by r7.l ;\r
-\r
-r4 = rot r1 by 31 ; /* rotate left */\r
-r4 = rot r1 by -32 ; /* rotate right */\r
-r4 = rot r1 by 5 ; /* rotate right */\r
-\r
-a0 = rot a0 by 22 ; /* rotate Accumulator left */\r
-a0 = rot a0 by -32 ; /* rotate Accumulator left */\r
-a0 = rot a0 by 31 ; /* rotate Accumulator left */\r
-\r
-a1 = rot a1 by -32 ; /* rotate Accumulator right */\r
-a1 = rot a1 by 31 ; /* rotate Accumulator right */\r
-a1 = rot a1 by 22 ; /* rotate Accumulator right */\r
-\r
-r4 = rot r1 by r2.l ;\r
-a0 = rot a0 by r3.l ;\r
-a1 = rot a1 by r7.l ;\r
-\r
-r0.l = r1.l << 0;\r
-r0.l = r1.l << 1;\r
-r0.l = r1.l << 2;\r
-r0.l = r1.l << 4;\r
-r0.l = r1.l >> 0;\r
-r0.l = r1.l >> 1;\r
-r0.l = r1.l >> 2;\r
-r0.l = r1.l >> 4;\r
-r0.l = r1.l >>> 1;\r
-r0.l = r1.l >>> 2;\r
-r0.l = r1.l >>> 4;\r
-\r
-r0.l = r1.h << 0;\r
-r0.l = r1.h << 1;\r
-r0.l = r1.h << 2;\r
-r0.l = r1.h << 4;\r
-r0.l = r1.h >> 0;\r
-r0.l = r1.h >> 1;\r
-r0.l = r1.h >> 2;\r
-r0.l = r1.h >> 4;\r
-r0.l = r1.h >>> 1;\r
-r0.l = r1.h >>> 2;\r
-r0.l = r1.h >>> 4;\r
-\r
-r0.l = r1.h << 0 (S);\r
-r0.l = r1.h << 1 (S);\r
-r0.l = r1.h << 2 (S);\r
-r0.l = r1.h << 4 (S);\r
-r0.l = r1.h >>> 1 (S);\r
-r0.l = r1.h >>> 2 (S);\r
-r0.l = r1.h >>> 4 (S);\r
-\r
+
+.EXTERN MY_LABEL2;
+.section .text;
+
+//
+//9 SHIFT/ROTATE OPERATIONS
+//
+
+//Preg = ( Preg + Preg ) << 1 ; /* dest_reg = (dest_reg + src_reg) x 2 (a) */
+P0 = (P0+P0)<<1;
+P0 = (P0+P1)<<1;
+P2 = (P2+P0)<<1;
+P1 = (P1+P2)<<1;
+
+//P0 = (P2+P0)<<1;
+
+//Preg = ( Preg + Preg ) << 2 ; /* dest_reg = (dest_reg + src_reg) x 4 (a) */
+P0 = (P0+P0)<<2;
+P0 = (P0+P1)<<2;
+P2 = (P2+P0)<<2;
+P1 = (P1+P2)<<2;
+
+//P0 = (P2+P0)<<2;
+
+//Dreg = (Dreg + Dreg) << 1 ; /* dest_reg = (dest_reg + src_reg) x 2 (a) */
+R0 = (R0+R0)<<1;
+R0 = (R0+R1)<<1;
+R2 = (R2+R0)<<1;
+R1 = (R1+R2)<<1;
+
+//R0 = (R2+R0)<<1;
+
+
+//Dreg = (Dreg + Dreg) << 2 ; /* dest_reg = (dest_reg + src_reg) x 4 (a) */
+R0 = (R0+R0)<<2;
+R0 = (R0+R1)<<2;
+R2 = (R2+R0)<<2;
+R1 = (R1+R2)<<2;
+
+//R0 = (R2+R0)<<2;
+
+//Preg = Preg + ( Preg << 1 ) ; /* adder_pntr + (src_pntr x 2) (a) */
+P0 = P0 + (P0 << 1);
+P0 = P0 + (P1 << 1);
+P0 = P0 + (P2 << 1);
+P0 = P1 + (P2 << 1);
+P0 = P2 + (P3 << 1);
+P1 = P0 + (P0 << 1);
+P1 = P0 + (P1 << 1);
+P1 = P0 + (P2 << 1);
+P1 = P1 + (P2 << 1);
+P1 = P2 + (P3 << 1);
+
+//Preg = Preg + ( Preg << 2 ) ; /* adder_pntr + (src_pntr x 4) (a) */
+P0 = P0 + (P0 << 2);
+P0 = P0 + (P1 << 2);
+P0 = P0 + (P2 << 2);
+P0 = P1 + (P2 << 2);
+P0 = P2 + (P3 << 2);
+P1 = P0 + (P0 << 2);
+P1 = P0 + (P1 << 2);
+P1 = P0 + (P2 << 2);
+P1 = P1 + (P2 << 2);
+P1 = P2 + (P3 << 2);
+
+//Dreg >>>= uimm5 ; /* arithmetic right shift (a) */
+R0 >>>= 0;
+R0 >>>= 31;
+R0 >>>= 5;
+R5 >>>= 0;
+R5 >>>= 31;
+R5 >>>= 5;
+
+//Dreg <<= uimm5 ; /* logical left shift (a) */
+R0 <<= 0;
+R0 <<= 31;
+R0 <<= 5;
+R5 <<= 0;
+R5 <<= 31;
+R5 <<= 5;
+//Dreg_lo_hi = Dreg_lo_hi >>> uimm4 ; /* arithmetic right shift (b) */
+R0.L = R0.L >>> 0;
+R0.L = R0.L >>> 15;
+R0.L = R0.H >>> 0;
+R0.L = R0.H >>> 15;
+R0.H = R0.L >>> 0;
+R0.H = R0.L >>> 15;
+R0.H = R0.H >>> 0;
+R0.H = R0.H >>> 15;
+
+R0.L = R1.L >>> 0;
+R0.L = R1.L >>> 15;
+R0.L = R1.H >>> 0;
+R0.L = R1.H >>> 15;
+R0.H = R1.L >>> 0;
+R0.H = R1.L >>> 15;
+R0.H = R1.H >>> 0;
+R0.H = R1.H >>> 15;
+
+R0.L = R7.L >>> 0;
+R1.L = R6.L >>> 15;
+R2.L = R5.H >>> 0;
+R3.L = R4.H >>> 15;
+R4.H = R3.L >>> 0;
+R5.H = R2.L >>> 15;
+R6.H = R1.H >>> 0;
+R7.H = R0.H >>> 15;
+
+//Dreg_lo_hi = Dreg_lo_hi << uimm4 (S) ; /* arithmetic left shift (b) */
+R0.L = R0.L << 0(S);
+R0.L = R0.L << 15(S);
+R0.L = R0.H << 0(S);
+R0.L = R0.H << 15(S);
+R0.H = R0.L << 0(S);
+R0.H = R0.L << 15(S);
+R0.H = R0.H << 0(S);
+R0.H = R0.H << 15(S);
+
+R0.L = R1.L << 0(S);
+R0.L = R1.L << 15(S);
+R0.L = R1.H << 0(S);
+R0.L = R1.H << 15(S);
+R0.H = R1.L << 0(S);
+R0.H = R1.L << 15(S);
+R0.H = R1.H << 0(S);
+R0.H = R1.H << 15(S);
+
+R0.L = R7.L << 0(S);
+R1.L = R6.L << 15(S);
+R2.L = R5.H << 0(S);
+R3.L = R4.H << 15(S);
+R4.H = R3.L << 0(S);
+R5.H = R2.L << 15(S);
+R6.H = R1.H << 0(S);
+R7.H = R0.H << 15(S);
+//Dreg = Dreg >>> uimm5 ; /* arithmetic right shift (b) */
+R0 = R0 >>> 0;
+R0 = R0 >>> 31;
+R0 = R1 >>> 0;
+R0 = R1 >>> 31;
+R7 = R0 >>> 0;
+R6 = R1 >>> 31;
+R5 = R2 >>> 0;
+R4 = R3 >>> 31;
+R3 = R4 >>> 0;
+R2 = R5 >>> 31;
+R1 = R6 >>> 0;
+R0 = R7 >>> 31;
+
+//Dreg = Dreg << uimm5 (S) ; /* arithmetic left shift (b) */
+R0 = R0 << 0(S);
+R0 = R0 << 31(S);
+R0 = R1 << 0(S);
+R0 = R1 << 31(S);
+R7 = R0 << 0(S);
+R6 = R1 << 31(S);
+R5 = R2 << 0(S);
+R4 = R3 << 31(S);
+R3 = R4 << 0(S);
+R2 = R5 << 31(S);
+R1 = R6 << 0(S);
+R0 = R7 << 31(S);
+//A0 = A0 >>> uimm5 ; /* arithmetic right shift (b) */
+A0 = A0 >>> 0;
+A0 = A0 >>> 15;
+A0 = A0 >>> 31;
+
+//A0 = A0 << uimm5 ; /* logical left shift (b) */
+A0 = A0 << 0;
+A0 = A0 << 15;
+A0 = A0 << 31;
+
+//A1 = A1 >>> uimm5 ; /* arithmetic right shift (b) */
+A1 = A1 >>> 0;
+A1 = A1 >>> 15;
+A1 = A1 >>> 31;
+
+//A1 = A1 << uimm5 ; /* logical left shift (b) */
+A1 = A1 << 0;
+A1 = A1 << 15;
+A1 = A1 << 31;
+
+//Dreg >>>= Dreg ; /* arithmetic right shift (a) */
+R0 >>>= R0;
+R0 >>>= R1;
+R1 >>>= R0;
+R1 >>>= R7;
+
+//Dreg <<= Dreg ; /* logical left shift (a) */
+R0 <<= R0;
+R0 <<= R1;
+R1 <<= R0;
+R1 <<= R7;
+
+//Dreg_lo_hi = ASHIFT Dreg_lo_hi BY Dreg_lo (opt_sat) ; /* arithmetic right shift (b) */
+r3.l = ashift r0.h by r7.l ; /* shift, half-word */
+r3.h = ashift r0.l by r7.l ;
+r3.h = ashift r0.h by r7.l ;
+r3.l = ashift r0.l by r7.l ;
+r3.l = ashift r0.h by r7.l(s) ; /* shift, half-word, saturated */
+r3.h = ashift r0.l by r7.l(s) ; /* shift, half-word, saturated */
+r3.h = ashift r0.h by r7.l(s) ;
+r3.l = ashift r0.l by r7.l (s) ;
+
+//Dreg = ASHIFT Dreg BY Dreg_lo (opt_sat) ; /* arithmetic right shift (b) */
+r4 = ashift r2 by r7.l ; /* shift, word */
+r4 = ashift r2 by r7.l (s) ; /* shift, word, saturated */
+
+//A0 = ASHIFT A0 BY Dreg_lo ; /* arithmetic right shift (b)*/
+A0 = ashift A0 by r7.l ; /* shift, Accumulator */
+
+//A1 = ASHIFT A1 BY Dreg_lo ; /* arithmetic right shift (b)*/
+A1 = ashift A1 by r7.l ; /* shift, Accumulator */
+
+p3 = p2 >> 1 ; /* pointer right shift by 1 */
+p3 = p3 >> 2 ; /* pointer right shift by 2 */
+p4 = p5 << 1 ; /* pointer left shift by 1 */
+p0 = p1 << 2 ; /* pointer left shift by 2 */
+r3 >>= 17 ; /* data right shift */
+r3 <<= 17 ; /* data left shift */
+r3.l = r0.l >> 4 ; /* data right shift, half-word register */
+r3.l = r0.h >> 4 ; /* same as above; half-word register combinations are arbitrary */
+r3.h = r0.l << 12 ; /* data left shift, half-word register */
+r3.h = r0.h << 14 ; /* same as above; half-word register combinations are arbitrary */
+
+r3 = r6 >> 4 ; /* right shift, 32-bit word */
+r3 = r6 << 4 ; /* left shift, 32-bit word */
+
+a0 = a0 >> 7 ; /* Accumulator right shift */
+a1 = a1 >> 25 ; /* Accumulator right shift */
+a0 = a0 << 7 ; /* Accumulator left shift */
+a1 = a1 << 14 ; /* Accumulator left shift */
+
+r3 >>= r0 ; /* data right shift */
+r3 <<= r1 ; /* data left shift */
+
+r3.l = lshift r0.l by r2.l ; /* shift direction controlled by sign of R2.L */
+r3.h = lshift r0.l by r2.l ;
+
+a0 = lshift a0 by r7.l ;
+a1 = lshift a1 by r7.l ;
+
+r4 = rot r1 by 31 ; /* rotate left */
+r4 = rot r1 by -32 ; /* rotate right */
+r4 = rot r1 by 5 ; /* rotate right */
+
+a0 = rot a0 by 22 ; /* rotate Accumulator left */
+a0 = rot a0 by -32 ; /* rotate Accumulator left */
+a0 = rot a0 by 31 ; /* rotate Accumulator left */
+
+a1 = rot a1 by -32 ; /* rotate Accumulator right */
+a1 = rot a1 by 31 ; /* rotate Accumulator right */
+a1 = rot a1 by 22 ; /* rotate Accumulator right */
+
+r4 = rot r1 by r2.l ;
+a0 = rot a0 by r3.l ;
+a1 = rot a1 by r7.l ;
+
+r0.l = r1.l << 0;
+r0.l = r1.l << 1;
+r0.l = r1.l << 2;
+r0.l = r1.l << 4;
+r0.l = r1.l >> 0;
+r0.l = r1.l >> 1;
+r0.l = r1.l >> 2;
+r0.l = r1.l >> 4;
+r0.l = r1.l >>> 1;
+r0.l = r1.l >>> 2;
+r0.l = r1.l >>> 4;
+
+r0.l = r1.h << 0;
+r0.l = r1.h << 1;
+r0.l = r1.h << 2;
+r0.l = r1.h << 4;
+r0.l = r1.h >> 0;
+r0.l = r1.h >> 1;
+r0.l = r1.h >> 2;
+r0.l = r1.h >> 4;
+r0.l = r1.h >>> 1;
+r0.l = r1.h >>> 2;
+r0.l = r1.h >>> 4;
+
+r0.l = r1.h << 0 (S);
+r0.l = r1.h << 1 (S);
+r0.l = r1.h << 2 (S);
+r0.l = r1.h << 4 (S);
+r0.l = r1.h >>> 1 (S);
+r0.l = r1.h >>> 2 (S);
+r0.l = r1.h >>> 4 (S);
+