Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
8bae7722
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
大约 1 年 前同步成功
通知
8
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,发现更多精彩内容 >>
提交
8bae7722
编写于
7月 19, 2007
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
_x86_64_AES_[en|de]crypt_compact: size optimization and aggressive
T[ed]4 prefetch.
上级
0d7dba92
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
52 addition
and
53 deletion
+52
-53
crypto/aes/asm/aes-x86_64.pl
crypto/aes/asm/aes-x86_64.pl
+52
-53
未找到文件。
crypto/aes/asm/aes-x86_64.pl
浏览文件 @
8bae7722
...
...
@@ -354,7 +354,7 @@ ___
# it's possible to implement this by shifting tN by 8, filling least
# significant byte with byte load and finally bswap-ing at the end,
# but
partial byte
load kills Core 2...
# but
such partial register
load kills Core 2...
sub
enccompactvert
()
{
my
(
$t3
,
$t4
,
$t5
)
=
("
%r8d
","
%r9d
","
%r13d
");
...
...
@@ -525,15 +525,18 @@ $code.=<<___;
rol \$24,$s3
xor $r20,$s2
xor $r21,$s3
mov 0($sbox),$acc0 # prefetch Te4
ror \$16,$t2
ror \$16,$t3
mov 64($sbox),$acc1
xor $t2,$s2
xor $t3,$s3
mov 128($sbox),$r20
ror \$8,$t2
ror \$8,$t3
mov 192($sbox),$r21
xor $t2,$s2
xor $t3,$s3
___
}
...
...
@@ -541,38 +544,34 @@ $code.=<<___;
.type _x86_64_AES_encrypt_compact,\@abi-omnipotent
.align 16
_x86_64_AES_encrypt_compact:
lea 128($sbox),$acc0 # size optimization
mov 0-128($acc0),$acc1 # prefetch Te4
mov 32-128($acc0),$acc2
mov 64-128($acc0),$t0
mov 96-128($acc0),$t1
mov 128-128($acc0),$acc1
mov 160-128($acc0),$acc2
mov 192-128($acc0),$t0
mov 224-128($acc0),$t1
lea 128($sbox),$inp # size optimization
mov 0-128($inp),$acc1 # prefetch Te4
mov 32-128($inp),$acc2
mov 64-128($inp),$t0
mov 96-128($inp),$t1
mov 128-128($inp),$acc1
mov 160-128($inp),$acc2
mov 192-128($inp),$t0
mov 224-128($inp),$t1
jmp .Lenc_loop_compact
.align 16
.Lenc_loop_compact:
xor 0($key),$s0 # xor with key
xor 4($key),$s1
xor 8($key),$s2
xor 12($key),$s3
lea 16($key),$key
jmp .Lenc_loop_compact
.align 16
.Lenc_loop_compact:
___
&enccompactvert
();
&enctransform
();
$code
.=
<<___;
xor 0($key),$s0
xor 4($key),$s1
xor 8($key),$s2
xor 12($key),$s3
lea 16($key),$key
cmp 16(%rsp),$key
jne .Lenc_loop_compact
je .Lenc_compact_done
___
&enccompactvert
();
&enctransform
();
$code
.=
<<___;
jmp .Lenc_loop_compact
.align 16
.Lenc_compact_done:
xor 0($key),$s0
xor 4($key),$s1
xor 8($key),$s2
...
...
@@ -1003,6 +1002,7 @@ ___
sub
dectransform
()
{
my
(
$tp10
,
$tp20
,
$tp40
,
$tp80
,
$acc0
)
=
("
%rax
","
%r8
",
"
%r9
",
"
%r10
","
%rbx
");
my
(
$tp18
,
$tp28
,
$tp48
,
$tp88
,
$acc8
)
=
("
%rcx
","
%r11
","
%r12
","
%r13
","
%rdx
");
my
$prefetch
=
shift
;
$code
.=
<<___;
mov $tp10,$acc0
...
...
@@ -1107,17 +1107,21 @@ $code.=<<___;
xor `&LO("$tp80")`,`&LO("$acc0")`
xor `&LO("$tp88")`,`&LO("$acc8")`
`"mov 0($sbox),$mask80" if ($prefetch)`
shr \$32,$tp20
shr \$32,$tp28
`"mov 64($sbox),$maskfe" if ($prefetch)`
rol \$16,`&LO("$tp40")` # ROTATE(tp4^tp1^tp8,16)
rol \$16,`&LO("$tp48")` # ROTATE(tp4^tp1^tp8,16)
`"mov 128($sbox),$mask1b" if ($prefetch)`
rol \$16,`&LO("$tp20")` # ROTATE(tp4^tp1^tp8,16)
rol \$16,`&LO("$tp28")` # ROTATE(tp4^tp1^tp8,16)
`"mov 192($sbox),$tp80" if ($prefetch)`
xor `&LO("$tp40")`,`&LO("$tp10")`
xor `&LO("$tp48")`,`&LO("$tp18")`
`"mov 256($sbox),$tp88" if ($prefetch)`
xor `&LO("$tp20")`,`&LO("$acc0")`
xor `&LO("$tp28")`,`&LO("$acc8")`
___
}
...
...
@@ -1125,28 +1129,30 @@ $code.=<<___;
.type _x86_64_AES_decrypt_compact,\@abi-omnipotent
.align 16
_x86_64_AES_decrypt_compact:
lea 128($sbox),$acc0 # size optimization
mov 0-128($acc0),$acc1 # prefetch Td4
mov 32-128($acc0),$acc2
mov 64-128($acc0),$t0
mov 96-128($acc0),$t1
mov 128-128($acc0),$acc1
mov 160-128($acc0),$acc2
mov 192-128($acc0),$t0
mov 224-128($acc0),$t1
lea 128($sbox),$inp # size optimization
mov 0-128($inp),$acc1 # prefetch Td4
mov 32-128($inp),$acc2
mov 64-128($inp),$t0
mov 96-128($inp),$t1
mov 128-128($inp),$acc1
mov 160-128($inp),$acc2
mov 192-128($inp),$t0
mov 224-128($inp),$t1
jmp .Ldec_loop_compact
.align 16
.Ldec_loop_compact:
xor 0($key),$s0 # xor with key
xor 4($key),$s1
xor 8($key),$s2
xor 12($key),$s3
lea 16($key),$key
jmp .Ldec_compact_loop
.align 16
.Ldec_compact_loop:
___
&deccompactvert
();
$code
.=
<<___;
cmp 16(%rsp),$key
je .Ldec_compact_done
mov 256+0($sbox),$mask80
shl \$32,%rbx
shl \$32,%rdx
...
...
@@ -1155,18 +1161,11 @@ $code.=<<___;
or %rdx,%rcx
mov 256+16($sbox),$mask1b
___
&dectransform
();
$code
.=
<<___;
xor 0($key),$s0
xor 4($key),$s1
xor 8($key),$s2
xor 12($key),$s3
lea 16($key),$key
cmp 16(%rsp),$key
jne .Ldec_compact_loop
___
&deccompactvert
();
&dectransform
(
1
);
$code
.=
<<___;
jmp .Ldec_loop_compact
.align 16
.Ldec_compact_done:
xor 0($key),$s0
xor 4($key),$s1
xor 8($key),$s2
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录