Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
1bc4d009
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看板
提交
1bc4d009
编写于
3月 19, 2013
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
aesni-x86_64.pl: optimize CTR even further.
上级
fbf7c44b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
85 addition
and
25 deletion
+85
-25
crypto/aes/asm/aesni-x86_64.pl
crypto/aes/asm/aesni-x86_64.pl
+85
-25
未找到文件。
crypto/aes/asm/aesni-x86_64.pl
浏览文件 @
1bc4d009
...
...
@@ -130,7 +130,7 @@
# Further data for other parallelizable modes:
#
# CBC decrypt 1.16 0.93 0.93
# CTR 1.14 0.91 0.
90
# CTR 1.14 0.91 0.
86
#
# Well, given 3x column it's probably inappropriate to call the limit
# asymptotic, if it can be surpassed, isn't it? What happens there?
...
...
@@ -160,7 +160,7 @@
######################################################################
# For reference, AMD Bulldozer spends 5.77 cycles per byte processed
# with 128-bit key in CBC encrypt and 0.76 cycles in CBC decrypt, 0.70
# in ECB, 0.7
6
in CTR, 0.95 in XTS... This means that aes[enc|dec]
# in ECB, 0.7
3
in CTR, 0.95 in XTS... This means that aes[enc|dec]
# instruction latency is 9 cycles and that they can be issued every
# cycle.
...
...
@@ -1062,38 +1062,38 @@ $code.=<<___;
$movkey ($key_),$rndkey0
shr \$1,$rounds
shr \$1,$rnds_
movdqa $rndkey0,$inout0
movdqa $rndkey0,$inout1
movdqa $rndkey0,$inout2
movdqa $rndkey0,$inout3
movdqa $rndkey0,$inout4
movdqa $rndkey0,$inout5
movdqa $rndkey0,$inout6
movdqa $rndkey0,$inout7
$movkey 16($key_),$rndkey1
sub \$8,$len
jmp .Lctr32_loop8
.align 16
.Lctr32_loop8:
$movkey 16($key_),$rndkey1
movdqa $rndkey0,$inout0
movdqa $rndkey0,$inout1
pxor $ivec,$inout0
paddb $one,$ivec
movdqa $rndkey0,$inout2
aesenc $rndkey1,$inout0
pxor $ivec,$inout1
paddb $one,$ivec
lea 32($key_),$key
movdqa $rndkey0,$inout3
aesenc $rndkey1,$inout1
pxor $ivec,$inout2
paddb $one,$ivec
movdqa $rndkey0,$inout4
aesenc $rndkey1,$inout2
pxor $ivec,$inout3
paddb $one,$ivec
movdqa $rndkey0,$inout5
aesenc $rndkey1,$inout3
pxor $ivec,$inout4
paddb $one,$ivec
movdqa $rndkey0,$inout6
aesenc $rndkey1,$inout4
pxor $ivec,$inout5
paddb $one,$ivec
movdqa $rndkey0,$inout7
aesenc $rndkey1,$inout5
pxor $ivec,$inout6
paddb $one,$ivec
...
...
@@ -1104,37 +1104,97 @@ $code.=<<___;
dec $rounds
aesenc $rndkey1,$inout7
$movkey 16($key),$rndkey1
aesenc $rndkey0,$inout0
aesenc $rndkey0,$inout1
lea 32($key),$key
aesenc $rndkey0,$inout2
movups ($inp),$in0 # load input
aesenc $rndkey0,$inout3
movups 0x10($inp),$in1
aesenc $rndkey0,$inout4
movups 0x20($inp),$in2
aesenc $rndkey0,$inout5
movups 0x30($inp),$in3
aesenc $rndkey0,$inout6
movups 0x40($inp),$one
aesenc $rndkey0,$inout7
$movkey ($key),$rndkey0
call .Lenc_loop8_enter
.Lctr32_enc_loop8:
aesenc $rndkey1,$inout0
aesenc $rndkey1,$inout1
dec $rounds
aesenc $rndkey1,$inout2
aesenc $rndkey1,$inout3
aesenc $rndkey1,$inout4
aesenc $rndkey1,$inout5
aesenc $rndkey1,$inout6
aesenc $rndkey1,$inout7
$movkey 16($key),$rndkey1
xorps $in0,$inout0 # xor
movups 0x40($inp),$in0
xorps $in1,$inout1
movups 0x50($inp),$in1
xorps $in2,$inout2
movups 0x60($inp),$in2
xorps $in3,$inout3
movups 0x70($inp),$in3
aesenc $rndkey0,$inout0
aesenc $rndkey0,$inout1
lea 32($key),$key
aesenc $rndkey0,$inout2
aesenc $rndkey0,$inout3
aesenc $rndkey0,$inout4
aesenc $rndkey0,$inout5
aesenc $rndkey0,$inout6
aesenc $rndkey0,$inout7
$movkey ($key),$rndkey0
jnz .Lctr32_enc_loop8
aesenc $rndkey1,$inout0
pxor $rndkey0,$in0
aesenc $rndkey1,$inout1
pxor $rndkey0,$in1
aesenc $rndkey1,$inout2
pxor $rndkey0,$in2
aesenc $rndkey1,$inout3
pxor $rndkey0,$in3
aesenc $rndkey1,$inout4
pxor $rndkey0,$one
aesenc $rndkey1,$inout5
aesenc $rndkey1,$inout6
aesenc $rndkey1,$inout7
movdqu 0x50($inp),$rndkey1
aesenclast $in0,$inout0
movdqu 0x60($inp),$in0
pxor $rndkey0,$rndkey1
aesenclast $in1,$inout1
movdqu 0x70($inp),$in1
pxor $rndkey0,$in0
aesenclast $in2,$inout2
pxor $rndkey0,$in1
$movkey ($key_),$rndkey0
aesenclast $in3,$inout3
lea 0x80($inp),$inp
xorps $in0,$inout4
aesenclast $one,$inout4
movdqa .Lincrement1(%rip),$one
aesenclast $rndkey1,$inout5
$movkey 16($key_),$rndkey1
aesenclast $in0,$inout6
aesenclast $in1,$inout7
movups $inout0,($out) # store output
xorps $in1,$inout5
movdqa $rndkey0,$inout0
movups $inout1,0x10($out)
xorps $in2,$inout6
movdqa $rndkey0,$inout1
movups $inout2,0x20($out)
xorps $in3,$inout7
movdqa $rndkey0,$inout2
movups $inout3,0x30($out)
movdqa $rndkey0,$inout3
movups $inout4,0x40($out)
movdqa $rndkey0,$inout4
movups $inout5,0x50($out)
movdqa $rndkey0,$inout5
movups $inout6,0x60($out)
movdqa $rndkey0,$inout6
movups $inout7,0x70($out)
movdqa $rndkey0,$inout7
lea 0x80($out),$out
$movkey ($key_),$rndkey0
mov $rnds_,$rounds
sub \$8,$len
jnc .Lctr32_loop8
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录