Various testing fixes:
- fix compiler abi for test-armv6m-undef - fix isns suffixes for i386 tcg tests - fix gitlab cfi jobs - fix makefile docker invocation - don't enable xtensa-linux-user builds with system compiler - fix CIRRUS_nn var checking - don't spam the aarch64/32 runners with too many jobs at once -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmKnxfUACgkQ+9DbCVqe KkSksAf/eXGL/k0zUU4RmxmQGWatCPPfbdxWj/pRDJrZl4cvegYK4cqXcfblDkiJ f5kdB4FsSHgJUKic7K7sBSke2xgoi2bvBMeqNIknLo89b+xXZLJSzTE7XCi0W+hm ll3GtHNJMEPjrIhSIAsqiSMFloL5xi7uz+ylBAB49skGF6F3rkCMv4fl7TDFKqaH y5fRzLZMJg+FhlHNwGO0H8O32ZU7FlyqLGQT3JWZywR0n241kQ+gXLykQjQ7//nd 9EbtppXiSOuusbggGCbmUQrEprW93TAEkgxUcuUuQYiAwDp89s66Q0gcwo1qMtcx mORfc+018/WJpBwFF904hBPPjgO08w== =PfzM -----END PGP SIGNATURE----- Merge tag 'pull-testing-next-140622-1' of https://github.com/stsquad/qemu into staging Various testing fixes: - fix compiler abi for test-armv6m-undef - fix isns suffixes for i386 tcg tests - fix gitlab cfi jobs - fix makefile docker invocation - don't enable xtensa-linux-user builds with system compiler - fix CIRRUS_nn var checking - don't spam the aarch64/32 runners with too many jobs at once # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmKnxfUACgkQ+9DbCVqe # KkSksAf/eXGL/k0zUU4RmxmQGWatCPPfbdxWj/pRDJrZl4cvegYK4cqXcfblDkiJ # f5kdB4FsSHgJUKic7K7sBSke2xgoi2bvBMeqNIknLo89b+xXZLJSzTE7XCi0W+hm # ll3GtHNJMEPjrIhSIAsqiSMFloL5xi7uz+ylBAB49skGF6F3rkCMv4fl7TDFKqaH # y5fRzLZMJg+FhlHNwGO0H8O32ZU7FlyqLGQT3JWZywR0n241kQ+gXLykQjQ7//nd # 9EbtppXiSOuusbggGCbmUQrEprW93TAEkgxUcuUuQYiAwDp89s66Q0gcwo1qMtcx # mORfc+018/WJpBwFF904hBPPjgO08w== # =PfzM # -----END PGP SIGNATURE----- # gpg: Signature made Mon 13 Jun 2022 04:19:17 PM PDT # gpg: using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44 # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44 * tag 'pull-testing-next-140622-1' of https://github.com/stsquad/qemu: .gitlab: use less aggressive nproc on our aarch64/32 runners gitlab: compare CIRRUS_nn vars against 'null' not "" tests/tcg: disable xtensa-linux-user again tests/docker: fix the IMAGE for build invocation gitlab-ci: Fix the build-cfi-aarch64 and build-cfi-ppc64-s390x jobs tests/tcg/i386: Use explicit suffix on fist insns test/tcg/arm: Use -mfloat-abi=soft for test-armv6m-undef Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
debd075366
|
@ -13,7 +13,7 @@
|
||||||
#############################################################
|
#############################################################
|
||||||
|
|
||||||
# Cirrus jobs can't run unless the creds / target repo are set
|
# Cirrus jobs can't run unless the creds / target repo are set
|
||||||
- if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == "" || $CIRRUS_API_TOKEN == "")'
|
- if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)'
|
||||||
when: never
|
when: never
|
||||||
|
|
||||||
# Publishing jobs should only run on the default branch in upstream
|
# Publishing jobs should only run on the default branch in upstream
|
||||||
|
|
|
@ -357,16 +357,15 @@ build-cfi-aarch64:
|
||||||
--enable-safe-stack --enable-slirp=git
|
--enable-safe-stack --enable-slirp=git
|
||||||
TARGETS: aarch64-softmmu
|
TARGETS: aarch64-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
timeout: 70m
|
|
||||||
artifacts:
|
|
||||||
expire_in: 2 days
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
variables:
|
|
||||||
# FIXME: This job is often failing, likely due to out-of-memory problems in
|
# FIXME: This job is often failing, likely due to out-of-memory problems in
|
||||||
# the constrained containers of the shared runners. Thus this is marked as
|
# the constrained containers of the shared runners. Thus this is marked as
|
||||||
# skipped until the situation has been solved.
|
# skipped until the situation has been solved.
|
||||||
QEMU_JOB_SKIPPED: 1
|
QEMU_JOB_SKIPPED: 1
|
||||||
|
timeout: 90m
|
||||||
|
artifacts:
|
||||||
|
expire_in: 2 days
|
||||||
|
paths:
|
||||||
|
- build
|
||||||
|
|
||||||
check-cfi-aarch64:
|
check-cfi-aarch64:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
|
@ -398,16 +397,15 @@ build-cfi-ppc64-s390x:
|
||||||
--enable-safe-stack --enable-slirp=git
|
--enable-safe-stack --enable-slirp=git
|
||||||
TARGETS: ppc64-softmmu s390x-softmmu
|
TARGETS: ppc64-softmmu s390x-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
timeout: 70m
|
|
||||||
artifacts:
|
|
||||||
expire_in: 2 days
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
variables:
|
|
||||||
# FIXME: This job is often failing, likely due to out-of-memory problems in
|
# FIXME: This job is often failing, likely due to out-of-memory problems in
|
||||||
# the constrained containers of the shared runners. Thus this is marked as
|
# the constrained containers of the shared runners. Thus this is marked as
|
||||||
# skipped until the situation has been solved.
|
# skipped until the situation has been solved.
|
||||||
QEMU_JOB_SKIPPED: 1
|
QEMU_JOB_SKIPPED: 1
|
||||||
|
timeout: 80m
|
||||||
|
artifacts:
|
||||||
|
expire_in: 2 days
|
||||||
|
paths:
|
||||||
|
- build
|
||||||
|
|
||||||
check-cfi-ppc64-s390x:
|
check-cfi-ppc64-s390x:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
|
|
|
@ -19,5 +19,5 @@ ubuntu-20.04-aarch32-all:
|
||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- ../configure --cross-prefix=arm-linux-gnueabihf-
|
- ../configure --cross-prefix=arm-linux-gnueabihf-
|
||||||
- make --output-sync -j`nproc`
|
- make --output-sync -j`nproc --ignore=40`
|
||||||
- make --output-sync -j`nproc` check V=1
|
- make --output-sync -j`nproc --ignore=40` check V=1
|
||||||
|
|
|
@ -17,9 +17,9 @@ ubuntu-20.04-aarch64-all-linux-static:
|
||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
|
- ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
|
||||||
- make --output-sync -j`nproc`
|
- make --output-sync -j`nproc --ignore=40`
|
||||||
- make --output-sync -j`nproc` check V=1
|
- make --output-sync -j`nproc --ignore=40` check V=1
|
||||||
- make --output-sync -j`nproc` check-tcg V=1
|
- make --output-sync -j`nproc --ignore=40` check-tcg V=1
|
||||||
|
|
||||||
ubuntu-20.04-aarch64-all:
|
ubuntu-20.04-aarch64-all:
|
||||||
needs: []
|
needs: []
|
||||||
|
@ -38,8 +38,8 @@ ubuntu-20.04-aarch64-all:
|
||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- ../configure --disable-libssh
|
- ../configure --disable-libssh
|
||||||
- make --output-sync -j`nproc`
|
- make --output-sync -j`nproc --ignore=40`
|
||||||
- make --output-sync -j`nproc` check V=1
|
- make --output-sync -j`nproc --ignore=40` check V=1
|
||||||
|
|
||||||
ubuntu-20.04-aarch64-alldbg:
|
ubuntu-20.04-aarch64-alldbg:
|
||||||
needs: []
|
needs: []
|
||||||
|
@ -55,8 +55,8 @@ ubuntu-20.04-aarch64-alldbg:
|
||||||
- cd build
|
- cd build
|
||||||
- ../configure --enable-debug --disable-libssh
|
- ../configure --enable-debug --disable-libssh
|
||||||
- make clean
|
- make clean
|
||||||
- make --output-sync -j`nproc`
|
- make --output-sync -j`nproc --ignore=40`
|
||||||
- make --output-sync -j`nproc` check V=1
|
- make --output-sync -j`nproc --ignore=40` check V=1
|
||||||
|
|
||||||
ubuntu-20.04-aarch64-clang:
|
ubuntu-20.04-aarch64-clang:
|
||||||
needs: []
|
needs: []
|
||||||
|
@ -75,8 +75,8 @@ ubuntu-20.04-aarch64-clang:
|
||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- ../configure --disable-libssh --cc=clang-10 --cxx=clang++-10 --enable-sanitizers
|
- ../configure --disable-libssh --cc=clang-10 --cxx=clang++-10 --enable-sanitizers
|
||||||
- make --output-sync -j`nproc`
|
- make --output-sync -j`nproc --ignore=40`
|
||||||
- make --output-sync -j`nproc` check V=1
|
- make --output-sync -j`nproc --ignore=40` check V=1
|
||||||
|
|
||||||
ubuntu-20.04-aarch64-tci:
|
ubuntu-20.04-aarch64-tci:
|
||||||
needs: []
|
needs: []
|
||||||
|
@ -95,7 +95,7 @@ ubuntu-20.04-aarch64-tci:
|
||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- ../configure --disable-libssh --enable-tcg-interpreter
|
- ../configure --disable-libssh --enable-tcg-interpreter
|
||||||
- make --output-sync -j`nproc`
|
- make --output-sync -j`nproc --ignore=40`
|
||||||
|
|
||||||
ubuntu-20.04-aarch64-notcg:
|
ubuntu-20.04-aarch64-notcg:
|
||||||
needs: []
|
needs: []
|
||||||
|
@ -114,5 +114,5 @@ ubuntu-20.04-aarch64-notcg:
|
||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- ../configure --disable-libssh --disable-tcg
|
- ../configure --disable-libssh --disable-tcg
|
||||||
- make --output-sync -j`nproc`
|
- make --output-sync -j`nproc --ignore=40`
|
||||||
- make --output-sync -j`nproc` check V=1
|
- make --output-sync -j`nproc --ignore=40` check V=1
|
||||||
|
|
|
@ -2024,7 +2024,6 @@ probe_target_compiler() {
|
||||||
container_cross_prefix=x86_64-linux-gnu-
|
container_cross_prefix=x86_64-linux-gnu-
|
||||||
;;
|
;;
|
||||||
xtensa*)
|
xtensa*)
|
||||||
# FIXME: xtensa-linux-user?
|
|
||||||
container_hosts=x86_64
|
container_hosts=x86_64
|
||||||
container_image=debian-xtensa-cross
|
container_image=debian-xtensa-cross
|
||||||
|
|
||||||
|
@ -2481,6 +2480,10 @@ for target in $target_list; do
|
||||||
echo "# Automatically generated by configure - do not modify" > $config_target_mak
|
echo "# Automatically generated by configure - do not modify" > $config_target_mak
|
||||||
echo "TARGET_NAME=$arch" >> $config_target_mak
|
echo "TARGET_NAME=$arch" >> $config_target_mak
|
||||||
case $target in
|
case $target in
|
||||||
|
xtensa*-linux-user)
|
||||||
|
# the toolchain is not complete with headers, only build softmmu tests
|
||||||
|
continue
|
||||||
|
;;
|
||||||
*-softmmu)
|
*-softmmu)
|
||||||
test -f $source_path/tests/tcg/$arch/Makefile.softmmu-target || continue
|
test -f $source_path/tests/tcg/$arch/Makefile.softmmu-target || continue
|
||||||
qemu="qemu-system-$arch"
|
qemu="qemu-system-$arch"
|
||||||
|
|
|
@ -171,7 +171,7 @@ DOCKER_TESTS := $(if $(TESTS), $(filter $(TESTS), $(__TESTS)), $(__TESTS))
|
||||||
$(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES),$(DOCKER_IMAGES)), \
|
$(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES),$(DOCKER_IMAGES)), \
|
||||||
$(foreach t,$(DOCKER_TESTS), \
|
$(foreach t,$(DOCKER_TESTS), \
|
||||||
$(eval .PHONY: docker-$t@$i) \
|
$(eval .PHONY: docker-$t@$i) \
|
||||||
$(eval docker-$t@$i: docker-image-$i; @$(MAKE) docker-run TEST=$t IMAGE=$i) \
|
$(eval docker-$t@$i: docker-image-$i; @$(MAKE) docker-run TEST=$t IMAGE=qemu/$i) \
|
||||||
) \
|
) \
|
||||||
$(foreach t,$(DOCKER_TESTS), \
|
$(foreach t,$(DOCKER_TESTS), \
|
||||||
$(eval docker-all-tests: docker-$t@$i) \
|
$(eval docker-all-tests: docker-$t@$i) \
|
||||||
|
|
|
@ -20,7 +20,7 @@ LDFLAGS+=-nostdlib -N -static
|
||||||
|
|
||||||
# Specific Test Rules
|
# Specific Test Rules
|
||||||
|
|
||||||
test-armv6m-undef: EXTRA_CFLAGS+=-mcpu=cortex-m0
|
test-armv6m-undef: EXTRA_CFLAGS+=-mcpu=cortex-m0 -mfloat-abi=soft
|
||||||
|
|
||||||
run-test-armv6m-undef: QEMU_OPTS+=-semihosting -M microbit -kernel
|
run-test-armv6m-undef: QEMU_OPTS+=-semihosting -M microbit -kernel
|
||||||
run-plugin-test-armv6m-undef-%: QEMU_OPTS+=-semihosting -M microbit -kernel
|
run-plugin-test-armv6m-undef-%: QEMU_OPTS+=-semihosting -M microbit -kernel
|
||||||
|
|
|
@ -423,35 +423,35 @@ int main(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm__ volatile ("fnclex");
|
__asm__ volatile ("fnclex");
|
||||||
__asm__ volatile ("fistp %0" : "=m" (res_16) : "t" (1.5L) : "st");
|
__asm__ volatile ("fistps %0" : "=m" (res_16) : "t" (1.5L) : "st");
|
||||||
__asm__ volatile ("fnstsw" : "=a" (sw));
|
__asm__ volatile ("fnstsw" : "=a" (sw));
|
||||||
if ((sw & EXC) != PE) {
|
if ((sw & EXC) != PE) {
|
||||||
printf("FAIL: fistp inexact\n");
|
printf("FAIL: fistp inexact\n");
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
__asm__ volatile ("fnclex");
|
__asm__ volatile ("fnclex");
|
||||||
__asm__ volatile ("fistp %0" : "=m" (res_16) : "t" (32767.5L) : "st");
|
__asm__ volatile ("fistps %0" : "=m" (res_16) : "t" (32767.5L) : "st");
|
||||||
__asm__ volatile ("fnstsw" : "=a" (sw));
|
__asm__ volatile ("fnstsw" : "=a" (sw));
|
||||||
if ((sw & EXC) != IE) {
|
if ((sw & EXC) != IE) {
|
||||||
printf("FAIL: fistp 32767.5\n");
|
printf("FAIL: fistp 32767.5\n");
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
__asm__ volatile ("fnclex");
|
__asm__ volatile ("fnclex");
|
||||||
__asm__ volatile ("fistp %0" : "=m" (res_16) : "t" (-32768.51L) : "st");
|
__asm__ volatile ("fistps %0" : "=m" (res_16) : "t" (-32768.51L) : "st");
|
||||||
__asm__ volatile ("fnstsw" : "=a" (sw));
|
__asm__ volatile ("fnstsw" : "=a" (sw));
|
||||||
if ((sw & EXC) != IE) {
|
if ((sw & EXC) != IE) {
|
||||||
printf("FAIL: fistp -32768.51\n");
|
printf("FAIL: fistp -32768.51\n");
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
__asm__ volatile ("fnclex");
|
__asm__ volatile ("fnclex");
|
||||||
__asm__ volatile ("fistp %0" : "=m" (res_16) : "t" (ld_nan) : "st");
|
__asm__ volatile ("fistps %0" : "=m" (res_16) : "t" (ld_nan) : "st");
|
||||||
__asm__ volatile ("fnstsw" : "=a" (sw));
|
__asm__ volatile ("fnstsw" : "=a" (sw));
|
||||||
if ((sw & EXC) != IE) {
|
if ((sw & EXC) != IE) {
|
||||||
printf("FAIL: fistp nan\n");
|
printf("FAIL: fistp nan\n");
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
__asm__ volatile ("fnclex");
|
__asm__ volatile ("fnclex");
|
||||||
__asm__ volatile ("fistp %0" : "=m" (res_16) : "t" (ld_invalid_1.ld) :
|
__asm__ volatile ("fistps %0" : "=m" (res_16) : "t" (ld_invalid_1.ld) :
|
||||||
"st");
|
"st");
|
||||||
__asm__ volatile ("fnstsw" : "=a" (sw));
|
__asm__ volatile ("fnstsw" : "=a" (sw));
|
||||||
if ((sw & EXC) != IE) {
|
if ((sw & EXC) != IE) {
|
||||||
|
@ -538,49 +538,49 @@ int main(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm__ volatile ("fnclex");
|
__asm__ volatile ("fnclex");
|
||||||
__asm__ volatile ("fisttp %0" : "=m" (res_16) : "t" (1.5L) : "st");
|
__asm__ volatile ("fisttps %0" : "=m" (res_16) : "t" (1.5L) : "st");
|
||||||
__asm__ volatile ("fnstsw" : "=a" (sw));
|
__asm__ volatile ("fnstsw" : "=a" (sw));
|
||||||
if ((sw & EXC) != PE) {
|
if ((sw & EXC) != PE) {
|
||||||
printf("FAIL: fisttp inexact\n");
|
printf("FAIL: fisttp inexact\n");
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
__asm__ volatile ("fnclex");
|
__asm__ volatile ("fnclex");
|
||||||
__asm__ volatile ("fisttp %0" : "=m" (res_16) : "t" (32768.0L) : "st");
|
__asm__ volatile ("fisttps %0" : "=m" (res_16) : "t" (32768.0L) : "st");
|
||||||
__asm__ volatile ("fnstsw" : "=a" (sw));
|
__asm__ volatile ("fnstsw" : "=a" (sw));
|
||||||
if ((sw & EXC) != IE) {
|
if ((sw & EXC) != IE) {
|
||||||
printf("FAIL: fisttp 32768\n");
|
printf("FAIL: fisttp 32768\n");
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
__asm__ volatile ("fnclex");
|
__asm__ volatile ("fnclex");
|
||||||
__asm__ volatile ("fisttp %0" : "=m" (res_16) : "t" (32768.5L) : "st");
|
__asm__ volatile ("fisttps %0" : "=m" (res_16) : "t" (32768.5L) : "st");
|
||||||
__asm__ volatile ("fnstsw" : "=a" (sw));
|
__asm__ volatile ("fnstsw" : "=a" (sw));
|
||||||
if ((sw & EXC) != IE) {
|
if ((sw & EXC) != IE) {
|
||||||
printf("FAIL: fisttp 32768.5\n");
|
printf("FAIL: fisttp 32768.5\n");
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
__asm__ volatile ("fnclex");
|
__asm__ volatile ("fnclex");
|
||||||
__asm__ volatile ("fisttp %0" : "=m" (res_16) : "t" (-32769.0L) : "st");
|
__asm__ volatile ("fisttps %0" : "=m" (res_16) : "t" (-32769.0L) : "st");
|
||||||
__asm__ volatile ("fnstsw" : "=a" (sw));
|
__asm__ volatile ("fnstsw" : "=a" (sw));
|
||||||
if ((sw & EXC) != IE) {
|
if ((sw & EXC) != IE) {
|
||||||
printf("FAIL: fisttp -32769\n");
|
printf("FAIL: fisttp -32769\n");
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
__asm__ volatile ("fnclex");
|
__asm__ volatile ("fnclex");
|
||||||
__asm__ volatile ("fisttp %0" : "=m" (res_16) : "t" (-32769.5L) : "st");
|
__asm__ volatile ("fisttps %0" : "=m" (res_16) : "t" (-32769.5L) : "st");
|
||||||
__asm__ volatile ("fnstsw" : "=a" (sw));
|
__asm__ volatile ("fnstsw" : "=a" (sw));
|
||||||
if ((sw & EXC) != IE) {
|
if ((sw & EXC) != IE) {
|
||||||
printf("FAIL: fisttp -32769.5\n");
|
printf("FAIL: fisttp -32769.5\n");
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
__asm__ volatile ("fnclex");
|
__asm__ volatile ("fnclex");
|
||||||
__asm__ volatile ("fisttp %0" : "=m" (res_16) : "t" (ld_nan) : "st");
|
__asm__ volatile ("fisttps %0" : "=m" (res_16) : "t" (ld_nan) : "st");
|
||||||
__asm__ volatile ("fnstsw" : "=a" (sw));
|
__asm__ volatile ("fnstsw" : "=a" (sw));
|
||||||
if ((sw & EXC) != IE) {
|
if ((sw & EXC) != IE) {
|
||||||
printf("FAIL: fisttp nan\n");
|
printf("FAIL: fisttp nan\n");
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
__asm__ volatile ("fnclex");
|
__asm__ volatile ("fnclex");
|
||||||
__asm__ volatile ("fisttp %0" : "=m" (res_16) : "t" (ld_invalid_1.ld) :
|
__asm__ volatile ("fisttps %0" : "=m" (res_16) : "t" (ld_invalid_1.ld) :
|
||||||
"st");
|
"st");
|
||||||
__asm__ volatile ("fnstsw" : "=a" (sw));
|
__asm__ volatile ("fnstsw" : "=a" (sw));
|
||||||
if ((sw & EXC) != IE) {
|
if ((sw & EXC) != IE) {
|
||||||
|
|
|
@ -866,7 +866,7 @@ void test_fcvt(double a)
|
||||||
uint16_t val16;
|
uint16_t val16;
|
||||||
val16 = (fpuc & ~0x0c00) | (i << 10);
|
val16 = (fpuc & ~0x0c00) | (i << 10);
|
||||||
asm volatile ("fldcw %0" : : "m" (val16));
|
asm volatile ("fldcw %0" : : "m" (val16));
|
||||||
asm volatile ("fist %0" : "=m" (wa) : "t" (a));
|
asm volatile ("fists %0" : "=m" (wa) : "t" (a));
|
||||||
asm volatile ("fistl %0" : "=m" (ia) : "t" (a));
|
asm volatile ("fistl %0" : "=m" (ia) : "t" (a));
|
||||||
asm volatile ("fistpll %0" : "=m" (lla) : "t" (a) : "st");
|
asm volatile ("fistpll %0" : "=m" (lla) : "t" (a) : "st");
|
||||||
asm volatile ("frndint ; fstl %0" : "=m" (ra) : "t" (a));
|
asm volatile ("frndint ; fstl %0" : "=m" (ra) : "t" (a));
|
||||||
|
|
Loading…
Reference in New Issue