Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
02ea1e6b
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看板
提交
02ea1e6b
编写于
1月 23, 2013
作者:
R
Richard Henderson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
target-i386: Implement BZHI
Signed-off-by:
N
Richard Henderson
<
rth@twiddle.net
>
上级
bc4b43dc
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
27 addition
and
0 deletion
+27
-0
target-i386/translate.c
target-i386/translate.c
+27
-0
未找到文件。
target-i386/translate.c
浏览文件 @
02ea1e6b
...
...
@@ -4072,6 +4072,33 @@ static void gen_sse(CPUX86State *env, DisasContext *s, int b,
}
break
;
case
0x0f5
:
/* bzhi Gy, Ey, By */
if
(
!
(
s
->
cpuid_7_0_ebx_features
&
CPUID_7_0_EBX_BMI2
)
||
!
(
s
->
prefix
&
PREFIX_VEX
)
||
s
->
vex_l
!=
0
)
{
goto
illegal_op
;
}
ot
=
s
->
dflag
==
2
?
OT_QUAD
:
OT_LONG
;
gen_ldst_modrm
(
env
,
s
,
modrm
,
ot
,
OR_TMP0
,
0
);
tcg_gen_ext8u_tl
(
cpu_T
[
1
],
cpu_regs
[
s
->
vex_v
]);
{
TCGv
bound
=
tcg_const_tl
(
ot
==
OT_QUAD
?
63
:
31
);
/* Note that since we're using BMILG (in order to get O
cleared) we need to store the inverse into C. */
tcg_gen_setcond_tl
(
TCG_COND_LT
,
cpu_cc_src
,
cpu_T
[
1
],
bound
);
tcg_gen_movcond_tl
(
TCG_COND_GT
,
cpu_T
[
1
],
cpu_T
[
1
],
bound
,
bound
,
cpu_T
[
1
]);
tcg_temp_free
(
bound
);
}
tcg_gen_movi_tl
(
cpu_A0
,
-
1
);
tcg_gen_shl_tl
(
cpu_A0
,
cpu_A0
,
cpu_T
[
1
]);
tcg_gen_andc_tl
(
cpu_T
[
0
],
cpu_T
[
0
],
cpu_A0
);
gen_op_mov_reg_T0
(
ot
,
reg
);
gen_op_update1_cc
();
set_cc_op
(
s
,
CC_OP_BMILGB
+
ot
);
break
;
case
0x0f3
:
case
0x1f3
:
case
0x2f3
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录