Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
a903e691
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
大约 1 年 前同步成功
通知
9
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a903e691
编写于
9月 04, 2012
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
bsaes-armv7.pl: minor performance squeeze on Snapdragon S4.
上级
f26328c2
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
37 addition
and
35 deletion
+37
-35
crypto/aes/asm/bsaes-armv7.pl
crypto/aes/asm/bsaes-armv7.pl
+37
-35
未找到文件。
crypto/aes/asm/bsaes-armv7.pl
浏览文件 @
a903e691
...
...
@@ -19,13 +19,16 @@
# to collect performance results, which for Cortex-A8 core are:
#
# encrypt 20.0 cycles per byte processed with 128-bit key
# decrypt 24.
7
cycles per byte processed with 128-bit key
# decrypt 24.
5
cycles per byte processed with 128-bit key
# key conv. 440 cycles per 128-bit key/0.17 of 8x block
#
# Snapdragon S4 encrypts byte in 18.3 cycles and decrypts in 23.3.
#
# When comparing to x86_64 results keep in mind that NEON unit is
# [mostly] single-issue and thus can't benefit from parallelism. And
# when comparing to aes-armv4 results keep in mind key schedule
# conversion overhead (see bsaes-x86_64.pl for details)...
# [mostly] single-issue and thus can't [fully] benefit from
# instruction-level parallelism. And when comparing to aes-armv4
# results keep in mind key schedule conversion overhead (see
# bsaes-x86_64.pl for further details)...
#
# <appro@openssl.org>
...
...
@@ -57,8 +60,8 @@ sub InBasisChange {
# output in lsb > [b6, b5, b0, b3, b7, b1, b4, b2] < msb
my
@b
=
@_
[
0
..
7
];
$code
.=
<<___;
veor @b[5], @b[5], @b[6]
veor @b[2], @b[2], @b[1]
veor @b[5], @b[5], @b[6]
veor @b[3], @b[3], @b[0]
veor @b[6], @b[6], @b[2]
veor @b[5], @b[5], @b[0]
...
...
@@ -68,9 +71,9 @@ $code.=<<___;
veor @b[7], @b[7], @b[5]
veor @b[3], @b[3], @b[4]
veor @b[4], @b[4], @b[5]
veor @b[3], @b[3], @b[1]
veor @b[2], @b[2], @b[7]
veor @b[3], @b[3], @b[1]
veor @b[1], @b[1], @b[5]
___
}
...
...
@@ -82,8 +85,8 @@ my @b=@_[0..7];
$code
.=
<<___;
veor @b[0], @b[0], @b[6]
veor @b[1], @b[1], @b[4]
veor @b[2], @b[2], @b[0]
veor @b[4], @b[4], @b[6]
veor @b[2], @b[2], @b[0]
veor @b[6], @b[6], @b[1]
veor @b[1], @b[1], @b[5]
...
...
@@ -107,19 +110,20 @@ my @s=@_[12..15];
&InvOutBasisChange
(
@b
[
3
,
7
,
0
,
4
,
5
,
1
,
2
,
6
]);
}
sub
InvInBasisChange
{
# OutBasisChange in reverse
sub
InvInBasisChange
{
# OutBasisChange in reverse
(with twist)
my
@b
=
@_
[
5
,
1
,
2
,
6
,
3
,
7
,
0
,
4
];
$code
.=
<<___
veor @b[1], @b[1], @b[7]
veor @b[4], @b[4], @b[7]
veor @b[7], @b[7], @b[5]
veor @b[1], @b[1], @b[3]
veor @b[2], @b[2], @b[5]
veor @b[3], @b[3], @b[7]
veor @b[5], @b[5], @b[3]
veor @b[1], @b[1], @b[5]
veor @b[6], @b[6], @b[1]
veor @b[2], @b[2], @b[0]
veor @b[5], @b[5], @b[3]
veor @b[4], @b[4], @b[6]
veor @b[0], @b[0], @b[6]
veor @b[1], @b[1], @b[4]
...
...
@@ -151,15 +155,15 @@ sub Mul_GF4 {
#;*************************************************************
#;* Mul_GF4: Input x0-x1,y0-y1 Output x0-x1 Temp t0 (8) *
#;*************************************************************
my
(
$x0
,
$x1
,
$y0
,
$y1
,
$t0
)
=
@_
;
my
(
$x0
,
$x1
,
$y0
,
$y1
,
$t0
,
$t1
)
=
@_
;
$code
.=
<<___;
veor $t0, $y0, $y1
vand $t0, $t0, $x0
veor $x0, $x0, $x1
vand $
x
1, $x1, $y0
vand $
t
1, $x1, $y0
vand $x0, $x0, $y1
veor $x
0, $x0, $x1
veor $x
1, $x1, $t0
veor $x
1, $t1, $t0
veor $x
0, $x0, $t1
___
}
...
...
@@ -203,13 +207,11 @@ my @x=@_[0..7];
my
@y
=
@_
[
8
..
11
];
my
@t
=
@_
[
12
..
15
];
$code
.=
<<___;
v
mov @t[0], @x[0
]
v
mov @t[1], @x[1
]
v
eor @t[0], @x[0], @x[2
]
v
eor @t[1], @x[1], @x[3
]
___
&Mul_GF4
(
@x
[
0
],
@x
[
1
],
@y
[
0
],
@y
[
1
],
@t
[
2
]);
&Mul_GF4
(
@x
[
0
],
@x
[
1
],
@y
[
0
],
@y
[
1
],
@t
[
2
..
3
]);
$code
.=
<<___;
veor @t[0], @t[0], @x[2]
veor @t[1], @t[1], @x[3]
veor @y[0], @y[0], @y[2]
veor @y[1], @y[1], @y[3]
___
...
...
@@ -230,7 +232,7 @@ $code.=<<___;
veor @y[0], @y[0], @y[2]
veor @y[1], @y[1], @y[3]
___
&Mul_GF4
(
@x
[
4
],
@x
[
5
],
@y
[
0
],
@y
[
1
],
@t
[
3
]);
&Mul_GF4
(
@x
[
4
],
@x
[
5
],
@y
[
0
],
@y
[
1
],
@t
[
2
..
3
]);
$code
.=
<<___;
veor @x[4], @x[4], @t[0]
veor @x[6], @x[6], @t[0]
...
...
@@ -402,8 +404,8 @@ $code.=<<___;
vext.8 @x[3], @x[6], @x[6], #8
veor @t[4], @t[4], @x[7]
vext.8 @x[6], @x[2], @x[2], #8
veor @x[2], @t[0], @t[4]
veor @x[7], @t[1], @t[5]
veor @x[2], @t[0], @t[4]
veor @x[4], @x[4], @t[3]
veor @x[5], @x[5], @t[7]
...
...
@@ -422,8 +424,8 @@ $code.=<<___;
@ multiplication by 0x0e
vext.8 @t[7], @x[7], @x[7], #12
vmov @t[2], @x[2]
veor @x[7], @x[7], @x[5] @ 7 5
veor @x[2], @x[2], @x[5] @ 2 5
veor @x[7], @x[7], @x[5] @ 7 5
vext.8 @t[0], @x[0], @x[0], #12
vmov @t[5], @x[5]
veor @x[5], @x[5], @x[0] @ 5 0 [1]
...
...
@@ -431,8 +433,8 @@ $code.=<<___;
vext.8 @t[1], @x[1], @x[1], #12
veor @x[1], @x[1], @x[2] @ 1 25
veor @x[0], @x[0], @x[6] @ 01 6 [2]
veor @x[1], @x[1], @x[3] @ 125 3 [4]
vext.8 @t[3], @x[3], @x[3], #12
veor @x[1], @x[1], @x[3] @ 125 3 [4]
veor @x[2], @x[2], @x[0] @ 25 016 [3]
veor @x[3], @x[3], @x[7] @ 3 75
veor @x[7], @x[7], @x[6] @ 75 6 [0]
...
...
@@ -451,21 +453,21 @@ $code.=<<___;
@ multiplication by 0x0b
veor @y[1], @y[1], @y[0]
veor @y[0], @y[0], @t[0]
veor @y[1], @y[1], @t[1]
vext.8 @t[2], @t[2], @t[2], #12
veor @y[1], @y[1], @t[1]
veor @y[0], @y[0], @t[5]
vext.8 @t[4], @t[4], @t[4], #12
veor @y[1], @y[1], @t[6]
veor @y[0], @y[0], @t[7]
vext.8 @t[4], @t[4], @t[4], #12
veor @t[7], @t[7], @t[6] @ clobber t[7]
veor @y[1], @y[1], @y[0]
veor @y[3], @y[3], @t[0]
veor @y[1], @y[1], @y[0]
vext.8 @t[0], @t[0], @t[0], #12
veor @y[2], @y[2], @t[1]
veor @y[4], @y[4], @t[1]
veor @y[2], @y[2], @t[2]
vext.8 @t[1], @t[1], @t[1], #12
veor @y[2], @y[2], @t[2]
veor @y[3], @y[3], @t[2]
veor @y[5], @y[5], @t[2]
veor @y[2], @y[2], @t[7]
...
...
@@ -473,8 +475,8 @@ $code.=<<___;
veor @y[3], @y[3], @t[3]
veor @y[6], @y[6], @t[3]
veor @y[4], @y[4], @t[3]
vext.8 @t[3], @t[3], @t[3], #12
veor @y[7], @y[7], @t[4]
vext.8 @t[3], @t[3], @t[3], #12
veor @y[5], @y[5], @t[4]
veor @y[7], @y[7], @t[7]
veor @y[3], @y[3], @t[5]
...
...
@@ -488,16 +490,16 @@ $code.=<<___;
veor @t[7], @t[7], @t[5]
vext.8 @t[5], @t[5], @t[5], #12
veor @t[7], @t[7], @t[6] @ restore t[7]
@ multiplication by 0x0d
veor @y[4], @y[4], @y[7]
veor @t[7], @t[7], @t[6] @ restore t[7]
veor @y[7], @y[7], @t[4]
vext.8 @t[6], @t[6], @t[6], #12
veor @y[2], @y[2], @t[0]
veor @y[7], @y[7], @t[5]
veor @y[2], @y[2], @t[2]
vext.8 @t[7], @t[7], @t[7], #12
veor @y[2], @y[2], @t[2]
veor @y[3], @y[3], @y[1]
veor @y[1], @y[1], @t[1]
...
...
@@ -505,8 +507,8 @@ $code.=<<___;
veor @y[3], @y[3], @t[0]
veor @y[1], @y[1], @t[5]
veor @y[0], @y[0], @t[5]
veor @y[1], @y[1], @t[7]
vext.8 @t[0], @t[0], @t[0], #12
veor @y[1], @y[1], @t[7]
veor @y[0], @y[0], @t[6]
veor @y[3], @y[3], @y[1]
veor @y[4], @y[4], @t[1]
...
...
@@ -515,9 +517,9 @@ $code.=<<___;
veor @y[7], @y[7], @t[7]
veor @y[4], @y[4], @t[2]
veor @y[5], @y[5], @t[2]
vext.8 @t[2], @t[2], @t[2], #12
veor @y[2], @y[2], @t[6]
veor @t[6], @t[6], @t[3] @ clobber t[6]
vext.8 @t[2], @t[2], @t[2], #12
veor @y[4], @y[4], @y[7]
veor @y[3], @y[3], @t[6]
...
...
@@ -544,13 +546,13 @@ $code.=<<___;
veor @t[6], @t[6], @t[7] @ clobber t[6]
veor @y[4], @y[4], @t[1]
veor @y[7], @y[7], @t[4]
veor @t[4], @t[4], @y[4] @ t[4]=y[4]
veor @y[6], @y[6], @t[3]
veor @t[3], @t[3], @y[3] @ t[3]=y[3]
veor @y[5], @y[5], @t[2]
veor @t[4], @t[4], @y[4] @ t[4]=y[4]
veor @t[3], @t[3], @y[3] @ t[3]=y[3]
veor @t[5], @t[5], @y[5] @ t[5]=y[5]
veor @t[2], @t[2], @y[2] @ t[2]=y[2]
veor @t[3], @t[3], @t[7]
veor @t[5], @t[5], @y[5] @ t[5]=y[5]
veor @XMM[5], @t[5], @t[6]
veor @XMM[6], @t[6], @y[6] @ t[6]=y[6]
veor @XMM[2], @t[2], @t[6]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录