Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
a4682cc2
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看板
提交
a4682cc2
编写于
1月 12, 2005
作者:
B
bellard
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fxsr test
git-svn-id:
svn://svn.savannah.nongnu.org/qemu/trunk@1216
c046a42c-6fe2-441c-8c8c-71466251a162
上级
839fa988
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
63 addition
and
0 deletion
+63
-0
tests/test-i386.c
tests/test-i386.c
+63
-0
未找到文件。
tests/test-i386.c
浏览文件 @
a4682cc2
...
...
@@ -1872,6 +1872,67 @@ void test_sse_comi(double a1, double b1)
r.l[0]);\
}
struct
fpxstate
{
uint16_t
fpuc
;
uint16_t
fpus
;
uint16_t
fptag
;
uint16_t
fop
;
uint32_t
fpuip
;
uint16_t
cs_sel
;
uint16_t
dummy0
;
uint32_t
fpudp
;
uint16_t
ds_sel
;
uint16_t
dummy1
;
uint32_t
mxcsr
;
uint32_t
mxcsr_mask
;
uint8_t
fpregs1
[
8
*
16
];
uint8_t
xmm_regs
[
8
*
16
];
uint8_t
dummy2
[
224
];
};
static
struct
fpxstate
fpx_state
__attribute__
((
aligned
(
16
)));
static
struct
fpxstate
fpx_state2
__attribute__
((
aligned
(
16
)));
void
test_fxsave
(
void
)
{
struct
fpxstate
*
fp
=
&
fpx_state
;
struct
fpxstate
*
fp2
=
&
fpx_state2
;
int
i
;
XMMReg
a
,
b
;
a
.
q
[
0
]
=
test_values
[
0
][
0
];
a
.
q
[
1
]
=
test_values
[
0
][
1
];
b
.
q
[
0
]
=
test_values
[
1
][
0
];
b
.
q
[
1
]
=
test_values
[
1
][
1
];
asm
(
"movdqa %2, %%xmm0
\n
"
"movdqa %3, %%xmm7
\n
"
" fld1
\n
"
" fldpi
\n
"
" fldln2
\n
"
" fxsave %0
\n
"
" fxrstor %0
\n
"
" fxsave %1
\n
"
" fninit
\n
"
:
"=m"
(
*
(
uint32_t
*
)
fp2
),
"=m"
(
*
(
uint32_t
*
)
fp
)
:
"m"
(
a
),
"m"
(
b
));
printf
(
"fpuc=%04x
\n
"
,
fp
->
fpuc
);
printf
(
"fpus=%04x
\n
"
,
fp
->
fpus
);
printf
(
"fptag=%04x
\n
"
,
fp
->
fptag
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
printf
(
"ST%d: %016llx %04x
\n
"
,
i
,
*
(
uint64_t
*
)
&
fp
->
fpregs1
[
i
*
16
],
*
(
uint16_t
*
)
&
fp
->
fpregs1
[
i
*
16
+
8
]);
}
printf
(
"mxcsr=%08x
\n
"
,
fp
->
mxcsr
&
0x1f80
);
for
(
i
=
0
;
i
<
8
;
i
++
)
{
printf
(
"xmm%d: %016llx%016llx
\n
"
,
i
,
*
(
uint64_t
*
)
&
fp
->
xmm_regs
[
i
*
16
],
*
(
uint64_t
*
)
&
fp
->
xmm_regs
[
i
*
16
+
8
]);
}
}
void
test_sse
(
void
)
{
XMMReg
r
,
a
,
b
;
...
...
@@ -2098,6 +2159,7 @@ void test_sse(void)
#if 0
SSE_OP2(movshdup);
#endif
asm
volatile
(
"emms"
);
}
#endif
...
...
@@ -2134,6 +2196,7 @@ int main(int argc, char **argv)
test_enter
();
#ifdef TEST_SSE
test_sse
();
test_fxsave
();
#endif
return
0
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录