unicorn/qemu
Richard Henderson 533a3f6a6c
tcg: Fix helper function vs host abi for float16
Depending on the host abi, float16, aka uint16_t, values are
passed and returned either zero-extended in the host register
or with garbage at the top of the host register.

The tcg code generator has so far been assuming garbage, as that
matches the x86 abi, but this is incorrect for other host abis.
Further, target/arm has so far been assuming zero-extended results,
so that it may store the 16-bit value into a 32-bit slot with the
high 16-bits already clear.

Rectify both problems by mapping "f16" in the helper definition
to uint32_t instead of (a typedef for) uint16_t. This forces
the host compiler to assume garbage in the upper 16 bits on input
and to zero-extend the result on output.

Backports commit 6c2be133a7478e443c99757b833d0f265c48e0a6 from qemu
2018-06-02 10:10:12 -04:00
..
accel tcg: Use GEN_ATOMIC_HELPER_FN for opposite endian atomic add 2018-05-14 08:07:49 -04:00
crypto crypto: Clean up includes 2018-02-19 00:47:40 -05:00
default-configs arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
docs docs: clarify memory region lifecycle 2018-02-12 15:11:21 -05:00
fpu fpu/softfloat: Define floatN_silence_nan in terms of parts_silence_nan 2018-05-20 00:13:42 -04:00
hw Use cpu_create(type) instead of cpu_init(cpu_model) 2018-03-20 14:20:30 -04:00
include tcg: Fix helper function vs host abi for float16 2018-06-02 10:10:12 -04:00
qapi qobject: Modify qobject_ref() to return obj 2018-05-04 10:24:10 -04:00
qobject qobject: Modify qobject_ref() to return obj 2018-05-04 10:24:10 -04:00
qom qobject: Replace qobject_incref/QINCREF qobject_decref/QDECREF 2018-05-04 10:16:07 -04:00
scripts target/arm: Add SVE decode skeleton 2018-05-20 00:48:14 -04:00
target tcg: Fix helper function vs host abi for float16 2018-06-02 10:10:12 -04:00
tcg tcg: fix s/compliment/complement/ typos 2018-05-22 00:29:51 -04:00
util qemu-thread-win32: Prevent null pointer dereference in win32_start_routine 2018-03-21 12:42:44 -04:00
aarch64.h target/arm: Implement SVE Permute - Extract Group 2018-05-20 05:26:55 -04:00
aarch64eb.h target/arm: Implement SVE Permute - Extract Group 2018-05-20 05:26:55 -04:00
accel.c clean-up: removed duplicate #includes 2018-02-28 08:51:56 -05:00
arm.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-19 22:58:25 -04:00
armeb.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-19 22:58:25 -04:00
CODING_STYLE import 2015-08-21 15:04:50 +08:00
configure tcg: fix 16-byte vector operations detection 2018-04-07 23:03:11 -04:00
COPYING import 2015-08-21 15:04:50 +08:00
COPYING.LIB import 2015-08-21 15:04:50 +08:00
cpus.c Include qapi/error.h exactly where needed 2018-03-07 12:26:38 -05:00
exec.c cpu: Convert cpu_index into a bitmap 2018-03-21 08:06:07 -04:00
gen_all_header.sh arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
glib_compat.c Use cpu_create(type) instead of cpu_init(cpu_model) 2018-03-20 14:20:30 -04:00
HACKING HACKING: document preference for g_new instead of g_malloc 2018-05-22 00:30:50 -04:00
header_gen.py target/arm: Implement SVE Permute - Extract Group 2018-05-20 05:26:55 -04:00
ioport.c hw: remove pio_addr_t 2018-02-24 02:43:16 -05:00
LICENSE import 2015-08-21 15:04:50 +08:00
m68k.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-19 22:58:25 -04:00
Makefile qapi: Don't create useless directory qapi-generated 2018-03-09 11:36:49 -05:00
Makefile.objs qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-09 11:35:11 -05:00
Makefile.target tcg: move tcg backend files into accel/tcg/ 2018-03-13 11:48:15 -04:00
memory.c memory: Protect against use-after-free 2018-03-21 09:40:33 -04:00
memory_ldst.inc.c exec: Drop unnecessary code for unicorn 2018-03-12 10:11:46 -04:00
memory_mapping.c include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
mips.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-19 22:58:25 -04:00
mips64.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-19 22:58:25 -04:00
mips64el.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-19 22:58:25 -04:00
mipsel.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-19 22:58:25 -04:00
powerpc.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-19 22:58:25 -04:00
qemu-timer.c timer/cpus: fix some typos and update some comments 2018-02-25 23:21:57 -05:00
rules.mak build-sys: silence make by default or V=0 2018-03-06 08:58:03 -05:00
sparc.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-19 22:58:25 -04:00
sparc64.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-19 22:58:25 -04:00
unicorn_common.h cpu: Convert cpu_index into a bitmap 2018-03-21 08:06:07 -04:00
VERSION import 2015-08-21 15:04:50 +08:00
vl.c Use cpu_create(type) instead of cpu_init(cpu_model) 2018-03-20 14:20:30 -04:00
vl.h import 2015-08-21 15:04:50 +08:00
x86_64.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-19 22:58:25 -04:00