summaryrefslogtreecommitdiffstats
path: root/src/crypto/isa-l/isa-l_crypto/aes/gcm_multibinary.asm
blob: e46066ac57a76a3df2333c10ceaf5bc177957565 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;  Copyright(c) 2011-2016 Intel Corporation All rights reserved.
;
;  Redistribution and use in source and binary forms, with or without
;  modification, are permitted provided that the following conditions 
;  are met:
;    * Redistributions of source code must retain the above copyright
;      notice, this list of conditions and the following disclaimer.
;    * Redistributions in binary form must reproduce the above copyright
;      notice, this list of conditions and the following disclaimer in
;      the documentation and/or other materials provided with the
;      distribution.
;    * Neither the name of Intel Corporation nor the names of its
;      contributors may be used to endorse or promote products derived
;      from this software without specific prior written permission.
;
;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
;  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
;  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
;  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
;  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
;  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
;  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
;  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

default rel
[bits 64]

%ifidn __OUTPUT_FORMAT__, elf64
%define WRT_OPT         wrt ..plt
%else
%define WRT_OPT
%endif

%include "reg_sizes.asm"

extern aesni_gcm128_init_sse
extern aesni_gcm128_init_avx_gen4
extern aesni_gcm128_init_avx_gen2

extern aesni_gcm128_enc_sse
extern aesni_gcm128_enc_avx_gen4
extern aesni_gcm128_enc_avx_gen2
extern aesni_gcm128_enc_update_sse
extern aesni_gcm128_enc_update_avx_gen4
extern aesni_gcm128_enc_update_avx_gen2
extern aesni_gcm128_enc_finalize_sse
extern aesni_gcm128_enc_finalize_avx_gen4
extern aesni_gcm128_enc_finalize_avx_gen2

extern aesni_gcm128_dec_sse
extern aesni_gcm128_dec_avx_gen4
extern aesni_gcm128_dec_avx_gen2
extern aesni_gcm128_dec_update_sse
extern aesni_gcm128_dec_update_avx_gen4
extern aesni_gcm128_dec_update_avx_gen2
extern aesni_gcm128_dec_finalize_sse
extern aesni_gcm128_dec_finalize_avx_gen4
extern aesni_gcm128_dec_finalize_avx_gen2

extern aesni_gcm128_precomp_sse
extern aesni_gcm128_precomp_avx_gen4
extern aesni_gcm128_precomp_avx_gen2



extern aesni_gcm256_init_sse
extern aesni_gcm256_init_avx_gen4
extern aesni_gcm256_init_avx_gen2

extern aesni_gcm256_enc_sse
extern aesni_gcm256_enc_avx_gen4
extern aesni_gcm256_enc_avx_gen2
extern aesni_gcm256_enc_update_sse
extern aesni_gcm256_enc_update_avx_gen4
extern aesni_gcm256_enc_update_avx_gen2
extern aesni_gcm256_enc_finalize_sse
extern aesni_gcm256_enc_finalize_avx_gen4
extern aesni_gcm256_enc_finalize_avx_gen2

extern aesni_gcm256_dec_sse
extern aesni_gcm256_dec_avx_gen4
extern aesni_gcm256_dec_avx_gen2
extern aesni_gcm256_dec_update_sse
extern aesni_gcm256_dec_update_avx_gen4
extern aesni_gcm256_dec_update_avx_gen2
extern aesni_gcm256_dec_finalize_sse
extern aesni_gcm256_dec_finalize_avx_gen4
extern aesni_gcm256_dec_finalize_avx_gen2

extern aesni_gcm256_precomp_sse
extern aesni_gcm256_precomp_avx_gen4
extern aesni_gcm256_precomp_avx_gen2

section .text

%include "multibinary.asm"

;;;;
; instantiate aesni_gcm interfaces init, enc, enc_update, enc_finalize, dec, dec_update, dec_finalize and precomp
;;;;
mbin_interface     aesni_gcm128_init
mbin_dispatch_init aesni_gcm128_init, aesni_gcm128_init_sse, aesni_gcm128_init_avx_gen2, aesni_gcm128_init_avx_gen4

mbin_interface     aesni_gcm128_enc
mbin_dispatch_init aesni_gcm128_enc, aesni_gcm128_enc_sse, aesni_gcm128_enc_avx_gen2, aesni_gcm128_enc_avx_gen4

mbin_interface     aesni_gcm128_enc_update
mbin_dispatch_init aesni_gcm128_enc_update, aesni_gcm128_enc_update_sse, aesni_gcm128_enc_update_avx_gen2, aesni_gcm128_enc_update_avx_gen4

mbin_interface     aesni_gcm128_enc_finalize
mbin_dispatch_init aesni_gcm128_enc_finalize, aesni_gcm128_enc_finalize_sse, aesni_gcm128_enc_finalize_avx_gen2, aesni_gcm128_enc_finalize_avx_gen4

mbin_interface     aesni_gcm128_dec
mbin_dispatch_init aesni_gcm128_dec, aesni_gcm128_dec_sse, aesni_gcm128_dec_avx_gen2, aesni_gcm128_dec_avx_gen4

mbin_interface     aesni_gcm128_dec_update
mbin_dispatch_init aesni_gcm128_dec_update, aesni_gcm128_dec_update_sse, aesni_gcm128_dec_update_avx_gen2, aesni_gcm128_dec_update_avx_gen4

mbin_interface     aesni_gcm128_dec_finalize
mbin_dispatch_init aesni_gcm128_dec_finalize, aesni_gcm128_dec_finalize_sse, aesni_gcm128_dec_finalize_avx_gen2, aesni_gcm128_dec_finalize_avx_gen4

mbin_interface     aesni_gcm128_precomp
mbin_dispatch_init aesni_gcm128_precomp, aesni_gcm128_precomp_sse, aesni_gcm128_precomp_avx_gen2, aesni_gcm128_precomp_avx_gen4

;;;;
; instantiate aesni_gcm interfaces init, enc, enc_update, enc_finalize, dec, dec_update, dec_finalize and precomp
;;;;
mbin_interface     aesni_gcm256_init
mbin_dispatch_init aesni_gcm256_init, aesni_gcm256_init_sse, aesni_gcm256_init_avx_gen2, aesni_gcm256_init_avx_gen4

mbin_interface     aesni_gcm256_enc
mbin_dispatch_init aesni_gcm256_enc, aesni_gcm256_enc_sse, aesni_gcm256_enc_avx_gen2, aesni_gcm256_enc_avx_gen4

mbin_interface     aesni_gcm256_enc_update
mbin_dispatch_init aesni_gcm256_enc_update, aesni_gcm256_enc_update_sse, aesni_gcm256_enc_update_avx_gen2, aesni_gcm256_enc_update_avx_gen4

mbin_interface     aesni_gcm256_enc_finalize
mbin_dispatch_init aesni_gcm256_enc_finalize, aesni_gcm256_enc_finalize_sse, aesni_gcm256_enc_finalize_avx_gen2, aesni_gcm256_enc_finalize_avx_gen4

mbin_interface     aesni_gcm256_dec
mbin_dispatch_init aesni_gcm256_dec, aesni_gcm256_dec_sse, aesni_gcm256_dec_avx_gen2, aesni_gcm256_dec_avx_gen4

mbin_interface     aesni_gcm256_dec_update
mbin_dispatch_init aesni_gcm256_dec_update, aesni_gcm256_dec_update_sse, aesni_gcm256_dec_update_avx_gen2, aesni_gcm256_dec_update_avx_gen4

mbin_interface     aesni_gcm256_dec_finalize
mbin_dispatch_init aesni_gcm256_dec_finalize, aesni_gcm256_dec_finalize_sse, aesni_gcm256_dec_finalize_avx_gen2, aesni_gcm256_dec_finalize_avx_gen4

mbin_interface     aesni_gcm256_precomp
mbin_dispatch_init aesni_gcm256_precomp, aesni_gcm256_precomp_sse, aesni_gcm256_precomp_avx_gen2, aesni_gcm256_precomp_avx_gen4


;;;       func				core, ver, snum
slversion aesni_gcm128_enc,		00,   00,  0280
slversion aesni_gcm128_dec,		00,   00,  0281
slversion aesni_gcm128_init,		00,   00,  0282
slversion aesni_gcm128_enc_update,	00,   00,  0283
slversion aesni_gcm128_dec_update,	00,   00,  0284
slversion aesni_gcm128_enc_finalize,	00,   00,  0285
slversion aesni_gcm128_dec_finalize,	00,   00,  0286
slversion aesni_gcm256_enc,		00,   00,  0288
slversion aesni_gcm256_dec,		00,   00,  0289
slversion aesni_gcm256_init,		00,   00,  028a
slversion aesni_gcm256_enc_update,	00,   00,  028b
slversion aesni_gcm256_dec_update,	00,   00,  028c
slversion aesni_gcm256_enc_finalize,	00,   00,  028d
slversion aesni_gcm256_dec_finalize,	00,   00,  028e