Fix semdiff syntactic output
[hiphop-php.git] / hphp / util / hash-crc-arm.S
blob09202f5f2b25715b4b393da8f3da0644e16dde73
1 #include "hphp/util/etch-helpers.h"
3 #ifndef FACEBOOK
4 #  include "hphp/util/hphp-config.h"
5 #endif
7 #if defined(ENABLE_AARCH64_CRC) && !defined(NO_HWCRC) && \
8     !defined(__CYGWIN__) && !defined(__MINGW__) && !defined(_MSC_VER)
10 .file   "hphp/util/hash-crc-arm.S"
12 #define HASH_FUNC_NAME _ZN4HPHP20hash_string_i_unsafeEPKcj
14 ETCH_SECTION(HASH_FUNC_NAME)
15 .globl    HASH_FUNC_NAME
16 ETCH_TYPE(HASH_FUNC_NAME, @function)
17 ETCH_ALIGN16
18 ETCH_NAME(HASH_FUNC_NAME):
19         CFI(startproc)
20         negs    w1, w1
21         mov     w9, #0xffffffff
22         beq     ETCH_LABEL(iend)
23         mov     w3, w1
24         mov     x4, #0xdfdfdfdfdfdfdfdf
25         b       ETCH_LABEL(iheader)
27 ETCH_ALIGN16
28 ETCH_LABEL(iloop):
29         crc32cx w9, w9, x2
30 ETCH_LABEL(iheader):
31         ldr     x10, [x0], #8
32         adds    w3, w3, #8
33         mov     x2, x4
34         and     x2, x2, x10
35         bcc     ETCH_LABEL(iloop)
36         lsl     w3, w3, #3
37         lsl     x2, x2, x3
38         crc32cx w9, w9, x2
40 ETCH_LABEL(iend):
41         lsr     w0, w9, #1
42         ret
43         CFI(endproc)
45 ETCH_SIZE(HASH_FUNC_NAME)
46 #undef HASH_FUNC_NAME
49 #define HASH_FUNC_NAME _ZN4HPHP13hash_string_iEPKcj
51 ETCH_SECTION(HASH_FUNC_NAME)
52 .globl    HASH_FUNC_NAME
53 ETCH_TYPE(HASH_FUNC_NAME, @function)
54 ETCH_ALIGN16
55 ETCH_NAME(HASH_FUNC_NAME):
56         CFI(startproc)
57         mov     w9, #0xffffffff
58         subs    w3, wzr, w1
59         beq     ETCH_LABEL(icend)
61         tst     w0, #7
62         mov     x4, #0xdfdfdfdfdfdfdfdf
63         bne     ETCH_LABEL(iuheader)
64         b       ETCH_LABEL(icheader)
66 ETCH_ALIGN16
67 ETCH_LABEL(icloop):
68         crc32cx w9, w9, x2
69 ETCH_LABEL(icheader):
70         ldr     x10, [x0], #8
71         adds    w3, w3, #8
72         mov     x2, x4
73         and     x2, x2, x10
74         bcc     ETCH_LABEL(icloop)
76 ETCH_LABEL(ictail):
77         lsl     w3, w3, #3
78         lsl     x2, x2, x3
79         crc32cx w9, w9, x2
81 ETCH_LABEL(icend):
82         lsr     w0, w9, #1
83         ret
85 ETCH_ALIGN16
86 ETCH_LABEL(iuloop):
87         ldr     x10, [x0], #8
88         and     x2, x2, x10
89         crc32cx w9, w9, x2
90 ETCH_LABEL(iuheader):
91         adds    w3, w3, #8
92         mov     x2, x4
93         bcc     ETCH_LABEL(iuloop)
95         subs    w3, w3, #8
96         mov     x2, #0
97         beq     ETCH_LABEL(iuend)
99 ETCH_LABEL(iutailloop):
100         ldrb    w10, [x0], #1
101         adds    w3, w3, #1
102         lsr     x2, x2, #8
103         bfi     x2, x10, #55, #8
104         bne     ETCH_LABEL(iutailloop)
106         and     x2, x2, x4
107         crc32cx w9, w9, x2
108 ETCH_LABEL(iuend):
109         lsr     w0, w9, #1
110         ret
111         CFI(endproc)
113 ETCH_SIZE(HASH_FUNC_NAME)
114 #undef HASH_FUNC_NAME
117 #define HASH_FUNC_NAME _ZN4HPHP21hash_string_cs_unsafeEPKcj
119 ETCH_SECTION(HASH_FUNC_NAME)
120 .globl    HASH_FUNC_NAME
121 ETCH_TYPE(HASH_FUNC_NAME, @function)
122 ETCH_ALIGN16
123 ETCH_NAME(HASH_FUNC_NAME):
124         CFI(startproc)
125         negs    w1, w1
126         mov     w9, #0xffffffff
127         beq     ETCH_LABEL(csend)
128         mov     w3, w1
129         b       ETCH_LABEL(csheader)
131 ETCH_ALIGN16
132 ETCH_LABEL(csloop):
133         crc32cx w9, w9, x2
134 ETCH_LABEL(csheader):
135         ldr     x2, [x0], #8
136         adds    w3, w3, #8
137         bcc     ETCH_LABEL(csloop)
139         lsl     w3, w3, #3
140         lsl     x2, x2, x3
141         crc32cx w9, w9, x2
143 ETCH_LABEL(csend):
144         lsr     w0, w9, #1
145         ret
146         CFI(endproc)
147 ETCH_SIZE(HASH_FUNC_NAME)
148 #undef HASH_FUNC_NAME
151 #define HASH_FUNC_NAME _ZN4HPHP14hash_string_csEPKcj
153 ETCH_SECTION(HASH_FUNC_NAME)
154 .globl    HASH_FUNC_NAME
155 ETCH_TYPE(HASH_FUNC_NAME, @function)
156 ETCH_ALIGN16
157 ETCH_NAME(HASH_FUNC_NAME):
158         CFI(startproc)
159         subs    w1, w1, #8
160         mov     w9, #0xffffffff
161         bmi     ETCH_LABEL(csutail)
163 ETCH_ALIGN16
164 ETCH_LABEL(csuloop):
165         ldr     x2, [x0], #8
166         subs    w1, w1, #8
167         crc32cx w9, w9, x2
168         bpl     ETCH_LABEL(csuloop)
170 ETCH_LABEL(csutail):
171         adds    w1, w1, #8
172         beq     ETCH_LABEL(csuend)
173         mov     w3, w1
174         mov     x2, #0
176 ETCH_LABEL(csutailloop):
177         ldrb    w10, [x0], #1
178         subs    w3, w3, #1
179         lsr     x2, x2, #8
180         bfi     x2, x10, #55, #8
181         bne     ETCH_LABEL(csutailloop)
182         crc32cx w9, w9, x2
184 ETCH_LABEL(csuend):
185         lsr     w0, w9, #1
186         ret
187         CFI(endproc)
189 ETCH_SIZE(HASH_FUNC_NAME)
190 #undef HASH_FUNC_NAME
192 #endif