1 .text 2 .global add_with_shift 3 add_with_shift: 4 P0 = (P0 + p1) << 1; 5 P2 = (p2 + p5) << 2; 6 r7 = (R7 + r1) << 2; 7 r3 = (r3 + R0) << 1; 8 9 .text 10 .global shift_with_add 11 shift_with_add: 12 P5 = p4 + (P0 << 2); 13 P0 = p2 + (p1 << 1); 14 15 .text 16 .global arithmetic_shift 17 arithmetic_shift: 18 A0 = A0 >> 31; 19 a0 = a0 << 31; 20 a1 = a1 >> 0; 21 A1 = A1 << 0; 22 r7 = r5 << 31 (s); 23 R3 = r2 >>> 22; 24 r1.L = R2.H << 15 (S); 25 r5.h = r2.l >>> 2; 26 r0 <<= 0; 27 r1 >>>= 31; 28 29 r0 >>>= R1; 30 R2 <<= R1; 31 r3.l = Ashift r4.h by r2.l; 32 R7.H = ASHIFT R7.L by R0.L (S); 33 r7.h = ashift r7.l by r0.l (s); 34 r6 = AShiFT R5 by R2.L; 35 R0 = Ashift R4 by r1.l (s); 36 r2 = ashift r6 BY r3.L (S); 37 A0 = Ashift a0 by r1.l; 38 a1 = ASHIFT a1 by r0.L; 39 40 41 .text 42 .global logical_shift 43 logical_shift: 44 p0 = p0 >> 1; 45 P1 = p2 >> 2; 46 P3 = P1 << 1; 47 p4 = p5 << 2; 48 49 r0 >>= 31; 50 R7 <<= 31; 51 r1.H = r2.l >> 15; 52 r7.l = r0.L << 0; 53 r5 = r5 >> 31; 54 r0 = r0 << 12; 55 A0 = A0 >> 1; 56 A0 = A0 << 0; 57 a1 = A1 << 31; 58 a1 = a1 >> 16; 59 60 r5 >>= R7; 61 R6 <<= r0; 62 R1.H = LShift r2.h by r0.l; 63 r0.l = LSHIFT r0.h by r1.l; 64 r7.L = lshift r6.L BY r2.l; 65 r5 = LShIft R4 bY r3.L; 66 A0 = Lshift a0 By R6.L; 67 A1 = LsHIFt a1 by r5.l; 68 69 .text 70 .global rotate 71 rotate: 72 r7 = ROT r7 by -32; 73 R6 = Rot r7 by -31; 74 R5 = RoT R7 by 31; 75 R4 = Rot r7 by 30; 76 a0 = rot A0 by 0; 77 A0 = ROT a0 BY 10; 78 A1 = ROT A1 by -20; 79 A1 = ROT a1 By -32; 80 81 r0 = rot r1 by r2.L; 82 R0 = Rot R4 BY R3.L; 83 A0 = ROT A0 by r7.l; 84 A1 = rot a1 bY r6.l; 85 86 87 88