Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
ac11f776
Q
qemu
项目概览
openeuler
/
qemu
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ac11f776
编写于
10月 15, 2011
作者:
R
Richard Henderson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
target-sparc: Extract float128 move to a function.
Signed-off-by:
N
Richard Henderson
<
rth@twiddle.net
>
上级
61f17f6e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
18 addition
and
32 deletion
+18
-32
target-sparc/translate.c
target-sparc/translate.c
+18
-32
未找到文件。
target-sparc/translate.c
浏览文件 @
ac11f776
...
...
@@ -222,6 +222,20 @@ static void gen_op_store_QT0_fpr(unsigned int dst)
offsetof
(
CPU_QuadU
,
l
.
lowest
));
}
#ifdef TARGET_SPARC64
static
void
gen_move_Q
(
int
rd
,
int
rs
)
{
rd
=
QFPREG
(
rd
);
rs
=
QFPREG
(
rs
);
tcg_gen_mov_i32
(
cpu__fpr
[
rd
],
cpu__fpr
[
rs
]);
tcg_gen_mov_i32
(
cpu__fpr
[
rd
+
1
],
cpu__fpr
[
rs
+
1
]);
tcg_gen_mov_i32
(
cpu__fpr
[
rd
+
2
],
cpu__fpr
[
rs
+
2
]);
tcg_gen_mov_i32
(
cpu__fpr
[
rd
+
3
],
cpu__fpr
[
rs
+
3
]);
gen_update_fprs_dirty
(
rd
);
}
#endif
/* moves */
#ifdef CONFIG_USER_ONLY
#define supervisor(dc) 0
...
...
@@ -2831,15 +2845,7 @@ static void disas_sparc_insn(DisasContext * dc)
break
;
case
0x3
:
/* V9 fmovq */
CHECK_FPU_FEATURE
(
dc
,
FLOAT128
);
tcg_gen_mov_i32
(
cpu__fpr
[
QFPREG
(
rd
)],
cpu__fpr
[
QFPREG
(
rs2
)]);
tcg_gen_mov_i32
(
cpu__fpr
[
QFPREG
(
rd
)
+
1
],
cpu__fpr
[
QFPREG
(
rs2
)
+
1
]);
tcg_gen_mov_i32
(
cpu__fpr
[
QFPREG
(
rd
)
+
2
],
cpu__fpr
[
QFPREG
(
rs2
)
+
2
]);
tcg_gen_mov_i32
(
cpu__fpr
[
QFPREG
(
rd
)
+
3
],
cpu__fpr
[
QFPREG
(
rs2
)
+
3
]);
gen_update_fprs_dirty
(
QFPREG
(
rd
));
gen_move_Q
(
rd
,
rs2
);
break
;
case
0x6
:
/* V9 fnegd */
gen_ne_fop_DD
(
dc
,
rd
,
rs2
,
gen_helper_fnegd
);
...
...
@@ -2924,11 +2930,7 @@ static void disas_sparc_insn(DisasContext * dc)
cpu_src1
=
get_src1
(
insn
,
cpu_src1
);
tcg_gen_brcondi_tl
(
gen_tcg_cond_reg
[
cond
],
cpu_src1
,
0
,
l1
);
tcg_gen_mov_i32
(
cpu__fpr
[
QFPREG
(
rd
)],
cpu__fpr
[
QFPREG
(
rs2
)]);
tcg_gen_mov_i32
(
cpu__fpr
[
QFPREG
(
rd
)
+
1
],
cpu__fpr
[
QFPREG
(
rs2
)
+
1
]);
tcg_gen_mov_i32
(
cpu__fpr
[
QFPREG
(
rd
)
+
2
],
cpu__fpr
[
QFPREG
(
rs2
)
+
2
]);
tcg_gen_mov_i32
(
cpu__fpr
[
QFPREG
(
rd
)
+
3
],
cpu__fpr
[
QFPREG
(
rs2
)
+
3
]);
gen_update_fprs_dirty
(
QFPREG
(
rd
));
gen_move_Q
(
rd
,
rs2
);
gen_set_label
(
l1
);
break
;
}
...
...
@@ -2978,15 +2980,7 @@ static void disas_sparc_insn(DisasContext * dc)
gen_fcond(r_cond, fcc, cond); \
tcg_gen_brcondi_tl(TCG_COND_EQ, r_cond, \
0, l1); \
tcg_gen_mov_i32(cpu__fpr[QFPREG(rd)], \
cpu__fpr[QFPREG(rs2)]); \
tcg_gen_mov_i32(cpu__fpr[QFPREG(rd) + 1], \
cpu__fpr[QFPREG(rs2) + 1]); \
tcg_gen_mov_i32(cpu__fpr[QFPREG(rd) + 2], \
cpu__fpr[QFPREG(rs2) + 2]); \
tcg_gen_mov_i32(cpu__fpr[QFPREG(rd) + 3], \
cpu__fpr[QFPREG(rs2) + 3]); \
gen_update_fprs_dirty(QFPREG(rd)); \
gen_move_Q(rd, rs2); \
gen_set_label(l1); \
tcg_temp_free(r_cond); \
}
...
...
@@ -3077,15 +3071,7 @@ static void disas_sparc_insn(DisasContext * dc)
gen_cond(r_cond, icc, cond, dc); \
tcg_gen_brcondi_tl(TCG_COND_EQ, r_cond, \
0, l1); \
tcg_gen_mov_i32(cpu__fpr[QFPREG(rd)], \
cpu__fpr[QFPREG(rs2)]); \
tcg_gen_mov_i32(cpu__fpr[QFPREG(rd) + 1], \
cpu__fpr[QFPREG(rs2) + 1]); \
tcg_gen_mov_i32(cpu__fpr[QFPREG(rd) + 2], \
cpu__fpr[QFPREG(rs2) + 2]); \
tcg_gen_mov_i32(cpu__fpr[QFPREG(rd) + 3], \
cpu__fpr[QFPREG(rs2) + 3]); \
gen_update_fprs_dirty(QFPREG(rd)); \
gen_move_Q(rd, rs2); \
gen_set_label(l1); \
tcg_temp_free(r_cond); \
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录