Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
133a7f9a
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
接近 2 年 前同步成功
通知
12
Star
18
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
133a7f9a
编写于
7月 26, 2010
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
perlasm/x86asm.pl: move aesni and pclmulqdq opcodes to aesni-x86.pl and
ghash-x86.pl.
上级
eb1c48be
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
27 addition
and
29 deletion
+27
-29
crypto/aes/asm/aesni-x86.pl
crypto/aes/asm/aesni-x86.pl
+21
-4
crypto/modes/asm/ghash-x86.pl
crypto/modes/asm/ghash-x86.pl
+6
-0
crypto/perlasm/x86asm.pl
crypto/perlasm/x86asm.pl
+0
-25
未找到文件。
crypto/aes/asm/aesni-x86.pl
浏览文件 @
133a7f9a
...
...
@@ -59,6 +59,23 @@ $rndkey1="xmm4";
$ivec
=
"
xmm5
";
$in0
=
"
xmm6
";
$in1
=
"
xmm7
";
$inout3
=
"
xmm7
";
# AESNI extenstion
sub
aeskeygenassist
{
my
(
$dst
,
$src
,
$imm
)
=
@_
;
if
("
$dst
:
$src
"
=~
/xmm([0-7]):xmm([0-7])/
)
{
&data_byte
(
0x66
,
0x0f
,
0x3a
,
0xdf
,
0xc0
|
(
$
1
<<
3
)
|
$
2
,
$imm
);
}
}
sub
aescommon
{
my
(
$opcodelet
,
$dst
,
$src
)
=
@_
;
if
("
$dst
:
$src
"
=~
/xmm([0-7]):xmm([0-7])/
)
{
&data_byte
(
0x66
,
0x0f
,
0x38
,
$opcodelet
,
0xc0
|
(
$
1
<<
3
)
|
$
2
);}
}
sub
aesimc
{
aescommon
(
0xdb
,
@
_
);
}
sub
aesenc
{
aescommon
(
0xdc
,
@
_
);
}
sub
aesenclast
{
aescommon
(
0xdd
,
@
_
);
}
sub
aesdec
{
aescommon
(
0xde
,
@
_
);
}
sub
aesdeclast
{
aescommon
(
0xdf
,
@
_
);
}
# Inline version of internal aesni_[en|de]crypt1
{
my
$sn
;
...
...
@@ -66,7 +83,7 @@ sub aesni_inline_generate1
{
my
(
$p
,
$inout
)
=
@_
;
$inout
=
$inout0
if
(
!
defined
(
$inout
));
$sn
++
;
&
$movekey
(
$rndkey0
,
&QWP
(
0
,
$key
));
&
movdqu
(
$rndkey0
,
&QWP
(
0
,
$key
));
&$movekey
(
$rndkey1
,
&QWP
(
16
,
$key
));
&lea
(
$key
,
&DWP
(
32
,
$key
));
&pxor
(
$inout
,
$rndkey0
);
...
...
@@ -83,7 +100,7 @@ sub aesni_generate1 # fully unrolled loop
{
my
(
$p
,
$inout
)
=
@_
;
$inout
=
$inout0
if
(
!
defined
(
$inout
));
&function_begin_B
("
_aesni_
${p}
rypt1
");
&
$movekey
(
$rndkey0
,
&QWP
(
0
,
$key
));
&
movdqu
(
$rndkey0
,
&QWP
(
0
,
$key
));
&$movekey
(
$rndkey1
,
&QWP
(
0x10
,
$key
));
&pxor
(
$inout
,
$rndkey0
);
&$movekey
(
$rndkey0
,
&QWP
(
0x20
,
$key
));
...
...
@@ -130,7 +147,7 @@ sub aesni_generate1 # fully unrolled loop
&function_begin_B
("
${PREFIX}
_encrypt
");
&mov
("
eax
",
&wparam
(
0
));
&mov
(
$key
,
&wparam
(
2
));
&mov
ups
(
$inout0
,
&QWP
(
0
,"
eax
"));
&mov
dqu
(
$inout0
,
&QWP
(
0
,"
eax
"));
&mov
(
$rounds
,
&DWP
(
240
,
$key
));
&mov
("
eax
",
&wparam
(
1
));
if
(
$inline
)
...
...
@@ -146,7 +163,7 @@ sub aesni_generate1 # fully unrolled loop
&function_begin_B
("
${PREFIX}
_decrypt
");
&mov
("
eax
",
&wparam
(
0
));
&mov
(
$key
,
&wparam
(
2
));
&mov
ups
(
$inout0
,
&QWP
(
0
,"
eax
"));
&mov
dqu
(
$inout0
,
&QWP
(
0
,"
eax
"));
&mov
(
$rounds
,
&DWP
(
240
,
$key
));
&mov
("
eax
",
&wparam
(
1
));
if
(
$inline
)
...
...
crypto/modes/asm/ghash-x86.pl
浏览文件 @
133a7f9a
...
...
@@ -812,6 +812,12 @@ $len="ebx";
&static_label
("
bswap
");
sub
pclmulqdq
{
my
(
$dst
,
$src
,
$imm
)
=
@_
;
if
("
$dst
:
$src
"
=~
/xmm([0-7]):xmm([0-7])/
)
{
&data_byte
(
0x66
,
0x0f
,
0x3a
,
0x44
,
0xc0
|
(
$
1
<<
3
)
|
$
2
,
$imm
);
}
}
sub
clmul64x64_T2
{
# minimal "register" pressure
my
(
$Xhi
,
$Xi
,
$Hkey
)
=
@_
;
...
...
crypto/perlasm/x86asm.pl
浏览文件 @
133a7f9a
...
...
@@ -107,31 +107,6 @@ sub ::pshufb
{
&::
generic
("
pshufb
",
@
_
);
}
}
# AESNI extenstion
sub
::
aeskeygenassist
{
my
(
$dst
,
$src
,
$imm
)
=
@_
;
if
("
$dst
:
$src
"
=~
/xmm([0-7]):xmm([0-7])/
)
{
&::
data_byte
(
0x66
,
0x0f
,
0x3a
,
0xdf
,
0xc0
|
(
$
1
<<
3
)
|
$
2
,
$imm
);
}
}
sub
::
aescommon
{
my
(
$opcodelet
,
$dst
,
$src
)
=
@_
;
if
("
$dst
:
$src
"
=~
/xmm([0-7]):xmm([0-7])/
)
{
&::
data_byte
(
0x66
,
0x0f
,
0x38
,
$opcodelet
,
0xc0
|
(
$
1
<<
3
)
|
$
2
);}
}
sub
::aesimc {
::
aescommon
(
0xdb
,
@
_
);
}
sub
::aesenc {
::
aescommon
(
0xdc
,
@
_
);
}
sub
::aesenclast {
::
aescommon
(
0xdd
,
@
_
);
}
sub
::aesdec {
::
aescommon
(
0xde
,
@
_
);
}
sub
::aesdeclast {
::
aescommon
(
0xdf
,
@
_
);
}
sub
::
pclmulqdq
{
my
(
$dst
,
$src
,
$imm
)
=
@_
;
if
("
$dst
:
$src
"
=~
/xmm([0-7]):xmm([0-7])/
)
{
&::
data_byte
(
0x66
,
0x0f
,
0x3a
,
0x44
,
0xc0
|
(
$
1
<<
3
)
|
$
2
,
$imm
);
}
else
{
&::
generic
("
pclmulqdq
",
@
_
);
}
}
# label management
$lbdecor
=
"
L
";
# local label decoration, set by package
$label
=
"
000
";
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录