Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
openssl
提交
b5c6aab5
O
openssl
项目概览
btwise
/
openssl
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b5c6aab5
编写于
5月 16, 2011
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
x86_64-xlate.pl: allow "base-less" effective address, add palignr, move
pclmulqdq.
上级
b9b0a177
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
33 addition
and
33 deletion
+33
-33
crypto/modes/asm/ghash-x86_64.pl
crypto/modes/asm/ghash-x86_64.pl
+0
-28
crypto/perlasm/x86_64-xlate.pl
crypto/perlasm/x86_64-xlate.pl
+33
-5
未找到文件。
crypto/modes/asm/ghash-x86_64.pl
浏览文件 @
b5c6aab5
...
...
@@ -798,35 +798,7 @@ se_handler:
___
}
sub
rex
{
local
*opcode
=
shift
;
my
(
$dst
,
$src
)
=
@_
;
if
(
$dst
>=
8
||
$src
>=
8
)
{
$rex
=
0x40
;
$rex
|=
0x04
if
(
$dst
>=
8
);
$rex
|=
0x01
if
(
$src
>=
8
);
push
@opcode
,
$rex
;
}
}
sub
pclmulqdq
{
my
$arg
=
shift
;
my
@opcode
=
(
0x66
);
if
(
$arg
=~
/\$([x0-9a-f]+),\s*%xmm([0-9]+),\s*%xmm([0-9]+)/
)
{
rex
(
\
@opcode
,
$
3
,
$
2
);
push
@opcode
,
0x0f
,
0x3a
,
0x44
;
push
@opcode
,
0xc0
|
(
$
2
&
7
)
|
((
$
3
&
7
)
<<
3
);
# ModR/M
my
$c
=
$
1
;
push
@opcode
,
$c
=~
/^0/
?
oct
(
$c
):
$c
;
return
"
.byte
\t
"
.
join
('
,
',
@opcode
);
}
return
"
pclmulqdq
\t
"
.
$arg
;
}
$code
=~
s/\`([^\`]*)\`/eval($1)/g
em
;
$code
=~
s/\bpclmulqdq\s+(\$.*%xmm[0-9]+).*$/pclmulqdq($1)/g
em
;
print
$code
;
...
...
crypto/perlasm/x86_64-xlate.pl
浏览文件 @
b5c6aab5
...
...
@@ -256,8 +256,9 @@ my %globals;
$self
->
{
label
}
=~
s/^___imp_/__imp__/
if
(
$flavour
eq
"
mingw64
");
if
(
defined
(
$self
->
{
index
}))
{
sprintf
"
%s%s(%%%s,%%%s,%d)
",
$self
->
{
asterisk
},
$self
->
{
label
},
$self
->
{
base
},
sprintf
"
%s%s(%s,%%%s,%d)
",
$self
->
{
asterisk
},
$self
->
{
label
},
$self
->
{
base
}?"
%
$self
->{base}
":"",
$self
->
{
index
},
$self
->
{
scale
};
}
else
{
sprintf
"
%s%s(%%%s)
",
$self
->
{
asterisk
},
$self
->
{
label
},
$self
->
{
base
};
...
...
@@ -272,10 +273,10 @@ my %globals;
$sz
=
"
q
"
if
(
$self
->
{
asterisk
});
if
(
defined
(
$self
->
{
index
}))
{
sprintf
"
%s[%s%s*%d
+
%s]
",
$szmap
{
$sz
},
sprintf
"
%s[%s%s*%d%s]
",
$szmap
{
$sz
},
$self
->
{
label
}?"
$self
->{label}+
":"",
$self
->
{
index
},
$self
->
{
scale
},
$self
->
{
base
};
$self
->
{
base
}
?"
+
$self
->{base}
":""
;
}
elsif
(
$self
->
{
base
}
eq
"
rip
")
{
sprintf
"
%s[%s]
",
$szmap
{
$sz
},
$self
->
{
label
};
}
else
{
...
...
@@ -666,7 +667,7 @@ my $pinsrd = sub {
$imm
=
$
1
;
$src
=
$
2
;
$dst
=
$
3
;
if
(
$src
=~
/%r([0-9]+)
d
/
)
{
$src
=
$
1
;
}
if
(
$src
=~
/%r([0-9]+)/
)
{
$src
=
$
1
;
}
elsif
(
$src
=~
/%e/
)
{
$src
=
$regrm
{
$src
};
}
rex
(
\
@opcode
,
$dst
,
$src
);
push
@opcode
,
0x0f
,
0x3a
,
0x22
;
...
...
@@ -690,6 +691,33 @@ my $pshufb = sub {
}
};
my
$palignr
=
sub
{
if
(
shift
=~
/\$([0-9]+),%xmm([0-9]+),%xmm([0-9]+)/
)
{
my
@opcode
=
(
0x66
);
rex
(
\
@opcode
,
$
3
,
$
2
);
push
@opcode
,
0x0f
,
0x3a
,
0x0f
;
push
@opcode
,
0xc0
|
(
$
2
&
7
)
|
((
$
3
&
7
)
<<
3
);
# ModR/M
push
@opcode
,
$
1
;
@opcode
;
}
else
{
();
}
};
my
$pclmulqdq
=
sub
{
if
(
shift
=~
/\$([x0-9a-f]+),\s*%xmm([0-9]+),\s*%xmm([0-9]+)/
)
{
my
@opcode
=
(
0x66
);
rex
(
\
@opcode
,
$
3
,
$
2
);
push
@opcode
,
0x0f
,
0x3a
,
0x44
;
push
@opcode
,
0xc0
|
(
$
2
&
7
)
|
((
$
3
&
7
)
<<
3
);
# ModR/M
my
$c
=
$
1
;
push
@opcode
,
$c
=~
/^0/
?
oct
(
$c
):
$c
;
@opcode
;
}
else
{
();
}
};
if
(
$nasm
)
{
print
<<___;
default rel
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录