Reverting merge from trunk
[official-gcc.git] / libgcc / config / msp430 / slli.S
blob48ed15d3ec30878ca9141ea5a5ea9e4eaa088c18
1 ;   Copyright (C) 2012, 2013 Free Software Foundation, Inc.
2 ;   Contributed by Red Hat.
3
4 ; This file is free software; you can redistribute it and/or modify it
5 ; under the terms of the GNU General Public License as published by the
6 ; Free Software Foundation; either version 3, or (at your option) any
7 ; later version.
8
9 ; This file is distributed in the hope that it will be useful, but
10 ; WITHOUT ANY WARRANTY; without even the implied warranty of
11 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 ; General Public License for more details.
13
14 ; Under Section 7 of GPL version 3, you are granted additional
15 ; permissions described in the GCC Runtime Library Exception, version
16 ; 3.1, as published by the Free Software Foundation.
18 ; You should have received a copy of the GNU General Public License and
19 ; a copy of the GCC Runtime Library Exception along with this program;
20 ; see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
21 ; <http://www.gnu.org/licenses/>.
22         
23         .text
25 /* Logical Left Shift - R12 -> R12 */
27         .macro  _slli n
28         .global __mspabi_slli_\n
29 __mspabi_slli_\n:
30         ADD.W   R12,R12
31         .endm
33         _slli   15
34         _slli   14
35         _slli   13
36         _slli   12
37         _slli   11
38         _slli   10
39         _slli   9
40         _slli   8
41         _slli   7
42         _slli   6
43         _slli   5
44         _slli   4
45         _slli   3
46         _slli   2
47         _slli   1
48 #ifdef __MSP430X_LARGE__
49         RETA
50 #else
51         RET
52 #endif
54 1:      ADD.W   #-1,R13
55         ADD.W   R12,R12
56         .global __mspabi_slli
57 __mspabi_slli:
58         CMP     #0,R13
59         JNZ     1b
60 #ifdef __MSP430X_LARGE__
61         RETA
62 #else
63         RET
64 #endif
66 /* Logical Left Shift - R12:R13 -> R12:R13 */
68         .macro  _slll   n
69         .global __mspabi_slll_\n
70 __mspabi_slll_\n:
71         ADD.W   R12,R12
72         ADDC.W  R13,R13
73         .endm
75         _slll   15
76         _slll   14
77         _slll   13
78         _slll   12
79         _slll   11
80         _slll   10
81         _slll   9
82         _slll   8
83         _slll   7
84         _slll   6
85         _slll   5
86         _slll   4
87         _slll   3
88         _slll   2
89         _slll   1
90 #ifdef __MSP430X_LARGE__
91         RETA
92 #else
93         RET
94 #endif
96 1:      ADD.W   #-1,R14
97         ADD.W   R12,R12
98         ADDC.W  R13,R13
99         .global __mspabi_slll
100 __mspabi_slll:
101         CMP     #0,R14
102         JNZ     1b
103 #ifdef __MSP430X_LARGE__
104         RETA
105 #else
106         RET
107 #endif