Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
bingbingbingbing
mono
提交
63de9b28
M
mono
项目概览
bingbingbingbing
/
mono
与 Fork 源项目一致
从无法访问的项目Fork
通知
35
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mono
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
63de9b28
编写于
11月 10, 2014
作者:
Z
Zoltan Varga
提交者:
Josh Peterson
11月 16, 2015
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[jit] Use xmm5 as an fp scratch register on winx64.
上级
d7ab33fb
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
13 addition
and
10 deletion
+13
-10
mono/mini/mini-amd64.c
mono/mini/mini-amd64.c
+7
-7
mono/mini/mini-amd64.h
mono/mini/mini-amd64.h
+6
-3
未找到文件。
mono/mini/mini-amd64.c
浏览文件 @
63de9b28
...
...
@@ -4442,8 +4442,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
break
;
case
OP_STORER4_MEMBASE_REG
:
/* This requires a double->single conversion */
amd64_sse_cvtsd2ss_reg_reg
(
code
,
AMD64_XMM15
,
ins
->
sreg1
);
amd64_sse_movss_membase_reg
(
code
,
ins
->
inst_destbasereg
,
ins
->
inst_offset
,
AMD64_XMM15
);
amd64_sse_cvtsd2ss_reg_reg
(
code
,
MONO_ARCH_FP_SCRATCH_REG
,
ins
->
sreg1
);
amd64_sse_movss_membase_reg
(
code
,
ins
->
inst_destbasereg
,
ins
->
inst_offset
,
MONO_ARCH_FP_SCRATCH_REG
);
break
;
case
OP_LOADR4_MEMBASE
:
amd64_sse_movss_reg_membase
(
code
,
ins
->
dreg
,
ins
->
inst_basereg
,
ins
->
inst_offset
);
...
...
@@ -5346,8 +5346,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
break
;
case
OP_EXTRACT_I8
:
if
(
ins
->
inst_c0
)
{
amd64_movhlps_reg_reg
(
code
,
AMD64_XMM15
,
ins
->
sreg1
);
amd64_movd_reg_xreg_size
(
code
,
ins
->
dreg
,
AMD64_XMM15
,
8
);
amd64_movhlps_reg_reg
(
code
,
MONO_ARCH_FP_SCRATCH_REG
,
ins
->
sreg1
);
amd64_movd_reg_xreg_size
(
code
,
ins
->
dreg
,
MONO_ARCH_FP_SCRATCH_REG
,
8
);
}
else
{
amd64_movd_reg_xreg_size
(
code
,
ins
->
dreg
,
ins
->
sreg1
,
8
);
}
...
...
@@ -5399,11 +5399,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
amd64_sse_pinsrw_reg_reg_imm
(
code
,
ins
->
dreg
,
ins
->
sreg2
,
ins
->
inst_c0
*
2
+
1
);
break
;
case
OP_INSERTX_I8_SLOW
:
amd64_movd_xreg_reg_size
(
code
,
AMD64_XMM15
,
ins
->
sreg2
,
8
);
amd64_movd_xreg_reg_size
(
code
,
MONO_ARCH_FP_SCRATCH_REG
,
ins
->
sreg2
,
8
);
if
(
ins
->
inst_c0
)
amd64_movlhps_reg_reg
(
code
,
ins
->
dreg
,
AMD64_XMM15
);
amd64_movlhps_reg_reg
(
code
,
ins
->
dreg
,
MONO_ARCH_FP_SCRATCH_REG
);
else
amd64_sse_movsd_reg_reg
(
code
,
ins
->
dreg
,
AMD64_XMM15
);
amd64_sse_movsd_reg_reg
(
code
,
ins
->
dreg
,
MONO_ARCH_FP_SCRATCH_REG
);
break
;
case
OP_INSERTX_R4_SLOW
:
...
...
mono/mini/mini-amd64.h
浏览文件 @
63de9b28
...
...
@@ -102,14 +102,17 @@ struct sigcontext {
#define MONO_ARCH_FP_RETURN_REG AMD64_XMM0
/* xmm15 is reserved for use by some opcodes */
#ifdef TARGET_WIN32
#define MONO_ARCH_CALLEE_FREGS 0x3f
/* xmm5 is used as a scratch register */
#define MONO_ARCH_CALLEE_FREGS 0x1f
/* xmm6:xmm15 */
#define MONO_ARCH_CALLEE_SAVED_FREGS (0x7fff - 0x3f)
#define MONO_ARCH_CALLEE_SAVED_FREGS (0xffff - 0x3f)
#define MONO_ARCH_FP_SCRATCH_REG AMD64_XMM5
#else
/* xmm15 is used as a scratch register */
#define MONO_ARCH_CALLEE_FREGS 0x7fff
#define MONO_ARCH_CALLEE_SAVED_FREGS 0
#define MONO_ARCH_FP_SCRATCH_REG AMD64_XMM15
#endif
#define MONO_MAX_XREGS MONO_MAX_FREGS
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录