diff --git a/qemu/aarch64.h b/qemu/aarch64.h index afca0ee8..a522518b 100644 --- a/qemu/aarch64.h +++ b/qemu/aarch64.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_aarch64 #define int128_zero int128_zero_aarch64 #define int16_to_float16 int16_to_float16_aarch64 +#define int16_to_float16_scalbn int16_to_float16_scalbn_aarch64 #define int16_to_float32 int16_to_float32_aarch64 +#define int16_to_float32_scalbn int16_to_float32_scalbn_aarch64 #define int16_to_float64 int16_to_float64_aarch64 +#define int16_to_float64_scalbn int16_to_float64_scalbn_aarch64 #define int32_to_float128 int32_to_float128_aarch64 #define int32_to_float16 int32_to_float16_aarch64 +#define int32_to_float16_scalbn int32_to_float16_scalbn_aarch64 #define int32_to_float32 int32_to_float32_aarch64 +#define int32_to_float32_scalbn int32_to_float32_scalbn_aarch64 #define int32_to_float64 int32_to_float64_aarch64 +#define int32_to_float64_scalbn int32_to_float64_scalbn_aarch64 #define int32_to_floatx80 int32_to_floatx80_aarch64 #define int64_to_float128 int64_to_float128_aarch64 #define int64_to_float16 int64_to_float16_aarch64 +#define int64_to_float16_scalbn int64_to_float16_scalbn_aarch64 #define int64_to_float32 int64_to_float32_aarch64 +#define int64_to_float32_scalbn int64_to_float32_scalbn_aarch64 #define int64_to_float64 int64_to_float64_aarch64 +#define int64_to_float64_scalbn int64_to_float64_scalbn_aarch64 #define int64_to_floatx80 int64_to_floatx80_aarch64 #define invalidate_and_set_dirty invalidate_and_set_dirty_aarch64 #define invalidate_page_bitmap invalidate_page_bitmap_aarch64 @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_aarch64 #define type_table_lookup type_table_lookup_aarch64 #define uint16_to_float16 uint16_to_float16_aarch64 +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_aarch64 #define uint16_to_float32 uint16_to_float32_aarch64 +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_aarch64 #define uint16_to_float64 uint16_to_float64_aarch64 +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_aarch64 #define uint32_to_float16 uint32_to_float16_aarch64 +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_aarch64 #define uint32_to_float32 uint32_to_float32_aarch64 +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_aarch64 #define uint32_to_float64 uint32_to_float64_aarch64 +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_aarch64 #define uint64_to_float128 uint64_to_float128_aarch64 #define uint64_to_float16 uint64_to_float16_aarch64 +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_aarch64 #define uint64_to_float32 uint64_to_float32_aarch64 +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_aarch64 #define uint64_to_float64 uint64_to_float64_aarch64 +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_aarch64 #define unassigned_io_ops unassigned_io_ops_aarch64 #define unassigned_io_read unassigned_io_read_aarch64 #define unassigned_io_write unassigned_io_write_aarch64 diff --git a/qemu/aarch64eb.h b/qemu/aarch64eb.h index 46b5920e..bdeb3c8a 100644 --- a/qemu/aarch64eb.h +++ b/qemu/aarch64eb.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_aarch64eb #define int128_zero int128_zero_aarch64eb #define int16_to_float16 int16_to_float16_aarch64eb +#define int16_to_float16_scalbn int16_to_float16_scalbn_aarch64eb #define int16_to_float32 int16_to_float32_aarch64eb +#define int16_to_float32_scalbn int16_to_float32_scalbn_aarch64eb #define int16_to_float64 int16_to_float64_aarch64eb +#define int16_to_float64_scalbn int16_to_float64_scalbn_aarch64eb #define int32_to_float128 int32_to_float128_aarch64eb #define int32_to_float16 int32_to_float16_aarch64eb +#define int32_to_float16_scalbn int32_to_float16_scalbn_aarch64eb #define int32_to_float32 int32_to_float32_aarch64eb +#define int32_to_float32_scalbn int32_to_float32_scalbn_aarch64eb #define int32_to_float64 int32_to_float64_aarch64eb +#define int32_to_float64_scalbn int32_to_float64_scalbn_aarch64eb #define int32_to_floatx80 int32_to_floatx80_aarch64eb #define int64_to_float128 int64_to_float128_aarch64eb #define int64_to_float16 int64_to_float16_aarch64eb +#define int64_to_float16_scalbn int64_to_float16_scalbn_aarch64eb #define int64_to_float32 int64_to_float32_aarch64eb +#define int64_to_float32_scalbn int64_to_float32_scalbn_aarch64eb #define int64_to_float64 int64_to_float64_aarch64eb +#define int64_to_float64_scalbn int64_to_float64_scalbn_aarch64eb #define int64_to_floatx80 int64_to_floatx80_aarch64eb #define invalidate_and_set_dirty invalidate_and_set_dirty_aarch64eb #define invalidate_page_bitmap invalidate_page_bitmap_aarch64eb @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_aarch64eb #define type_table_lookup type_table_lookup_aarch64eb #define uint16_to_float16 uint16_to_float16_aarch64eb +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_aarch64eb #define uint16_to_float32 uint16_to_float32_aarch64eb +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_aarch64eb #define uint16_to_float64 uint16_to_float64_aarch64eb +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_aarch64eb #define uint32_to_float16 uint32_to_float16_aarch64eb +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_aarch64eb #define uint32_to_float32 uint32_to_float32_aarch64eb +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_aarch64eb #define uint32_to_float64 uint32_to_float64_aarch64eb +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_aarch64eb #define uint64_to_float128 uint64_to_float128_aarch64eb #define uint64_to_float16 uint64_to_float16_aarch64eb +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_aarch64eb #define uint64_to_float32 uint64_to_float32_aarch64eb +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_aarch64eb #define uint64_to_float64 uint64_to_float64_aarch64eb +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_aarch64eb #define unassigned_io_ops unassigned_io_ops_aarch64eb #define unassigned_io_read unassigned_io_read_aarch64eb #define unassigned_io_write unassigned_io_write_aarch64eb diff --git a/qemu/arm.h b/qemu/arm.h index fbb62ddc..d04666f4 100644 --- a/qemu/arm.h +++ b/qemu/arm.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_arm #define int128_zero int128_zero_arm #define int16_to_float16 int16_to_float16_arm +#define int16_to_float16_scalbn int16_to_float16_scalbn_arm #define int16_to_float32 int16_to_float32_arm +#define int16_to_float32_scalbn int16_to_float32_scalbn_arm #define int16_to_float64 int16_to_float64_arm +#define int16_to_float64_scalbn int16_to_float64_scalbn_arm #define int32_to_float128 int32_to_float128_arm #define int32_to_float16 int32_to_float16_arm +#define int32_to_float16_scalbn int32_to_float16_scalbn_arm #define int32_to_float32 int32_to_float32_arm +#define int32_to_float32_scalbn int32_to_float32_scalbn_arm #define int32_to_float64 int32_to_float64_arm +#define int32_to_float64_scalbn int32_to_float64_scalbn_arm #define int32_to_floatx80 int32_to_floatx80_arm #define int64_to_float128 int64_to_float128_arm #define int64_to_float16 int64_to_float16_arm +#define int64_to_float16_scalbn int64_to_float16_scalbn_arm #define int64_to_float32 int64_to_float32_arm +#define int64_to_float32_scalbn int64_to_float32_scalbn_arm #define int64_to_float64 int64_to_float64_arm +#define int64_to_float64_scalbn int64_to_float64_scalbn_arm #define int64_to_floatx80 int64_to_floatx80_arm #define invalidate_and_set_dirty invalidate_and_set_dirty_arm #define invalidate_page_bitmap invalidate_page_bitmap_arm @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_arm #define type_table_lookup type_table_lookup_arm #define uint16_to_float16 uint16_to_float16_arm +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_arm #define uint16_to_float32 uint16_to_float32_arm +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_arm #define uint16_to_float64 uint16_to_float64_arm +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_arm #define uint32_to_float16 uint32_to_float16_arm +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_arm #define uint32_to_float32 uint32_to_float32_arm +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_arm #define uint32_to_float64 uint32_to_float64_arm +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_arm #define uint64_to_float128 uint64_to_float128_arm #define uint64_to_float16 uint64_to_float16_arm +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_arm #define uint64_to_float32 uint64_to_float32_arm +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_arm #define uint64_to_float64 uint64_to_float64_arm +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_arm #define unassigned_io_ops unassigned_io_ops_arm #define unassigned_io_read unassigned_io_read_arm #define unassigned_io_write unassigned_io_write_arm diff --git a/qemu/armeb.h b/qemu/armeb.h index 1067c020..cab1fc0d 100644 --- a/qemu/armeb.h +++ b/qemu/armeb.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_armeb #define int128_zero int128_zero_armeb #define int16_to_float16 int16_to_float16_armeb +#define int16_to_float16_scalbn int16_to_float16_scalbn_armeb #define int16_to_float32 int16_to_float32_armeb +#define int16_to_float32_scalbn int16_to_float32_scalbn_armeb #define int16_to_float64 int16_to_float64_armeb +#define int16_to_float64_scalbn int16_to_float64_scalbn_armeb #define int32_to_float128 int32_to_float128_armeb #define int32_to_float16 int32_to_float16_armeb +#define int32_to_float16_scalbn int32_to_float16_scalbn_armeb #define int32_to_float32 int32_to_float32_armeb +#define int32_to_float32_scalbn int32_to_float32_scalbn_armeb #define int32_to_float64 int32_to_float64_armeb +#define int32_to_float64_scalbn int32_to_float64_scalbn_armeb #define int32_to_floatx80 int32_to_floatx80_armeb #define int64_to_float128 int64_to_float128_armeb #define int64_to_float16 int64_to_float16_armeb +#define int64_to_float16_scalbn int64_to_float16_scalbn_armeb #define int64_to_float32 int64_to_float32_armeb +#define int64_to_float32_scalbn int64_to_float32_scalbn_armeb #define int64_to_float64 int64_to_float64_armeb +#define int64_to_float64_scalbn int64_to_float64_scalbn_armeb #define int64_to_floatx80 int64_to_floatx80_armeb #define invalidate_and_set_dirty invalidate_and_set_dirty_armeb #define invalidate_page_bitmap invalidate_page_bitmap_armeb @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_armeb #define type_table_lookup type_table_lookup_armeb #define uint16_to_float16 uint16_to_float16_armeb +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_armeb #define uint16_to_float32 uint16_to_float32_armeb +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_armeb #define uint16_to_float64 uint16_to_float64_armeb +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_armeb #define uint32_to_float16 uint32_to_float16_armeb +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_armeb #define uint32_to_float32 uint32_to_float32_armeb +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_armeb #define uint32_to_float64 uint32_to_float64_armeb +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_armeb #define uint64_to_float128 uint64_to_float128_armeb #define uint64_to_float16 uint64_to_float16_armeb +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_armeb #define uint64_to_float32 uint64_to_float32_armeb +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_armeb #define uint64_to_float64 uint64_to_float64_armeb +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_armeb #define unassigned_io_ops unassigned_io_ops_armeb #define unassigned_io_read unassigned_io_read_armeb #define unassigned_io_write unassigned_io_write_armeb diff --git a/qemu/fpu/softfloat.c b/qemu/fpu/softfloat.c index 3bc76c0b..8942b915 100644 --- a/qemu/fpu/softfloat.c +++ b/qemu/fpu/softfloat.c @@ -1604,81 +1604,121 @@ FLOAT_TO_UINT(64, 64) * to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. */ -static FloatParts int_to_float(int64_t a, float_status *status) +static FloatParts int_to_float(int64_t a, int scale, float_status *status) { - FloatParts r = {0}; + FloatParts r = {0, 0, float_class_unclassified, false}; if (a == 0) { r.cls = float_class_zero; - r.sign = false; - } else if (a == (1ULL << 63)) { - r.cls = float_class_normal; - r.sign = true; - r.frac = DECOMPOSED_IMPLICIT_BIT; - r.exp = 63; } else { - uint64_t f; - if (a < 0) { - f = -a; - r.sign = true; - } else { - f = a; - r.sign = false; - } - int shift = clz64(f) - 1; + uint64_t f = a; + int shift; + r.cls = float_class_normal; - r.exp = (DECOMPOSED_BINARY_POINT - shift); - r.frac = f << shift; + if (a < 0) { + f = -f; + r.sign = true; + } + shift = clz64(f) - 1; + scale = MIN(MAX(scale, -0x10000), 0x10000); + + r.exp = DECOMPOSED_BINARY_POINT - shift + scale; + r.frac = (shift < 0 ? DECOMPOSED_IMPLICIT_BIT : f << shift); } return r; } +float16 int64_to_float16_scalbn(int64_t a, int scale, float_status *status) +{ + FloatParts pa = int_to_float(a, scale, status); + return float16_round_pack_canonical(pa, status); +} + +float16 int32_to_float16_scalbn(int32_t a, int scale, float_status *status) +{ + return int64_to_float16_scalbn(a, scale, status); +} + +float16 int16_to_float16_scalbn(int16_t a, int scale, float_status *status) +{ + return int64_to_float16_scalbn(a, scale, status); +} + float16 int64_to_float16(int64_t a, float_status *status) { - FloatParts pa = int_to_float(a, status); - return float16_round_pack_canonical(pa, status); + return int64_to_float16_scalbn(a, 0, status); } float16 int32_to_float16(int32_t a, float_status *status) { - return int64_to_float16(a, status); + return int64_to_float16_scalbn(a, 0, status); } float16 int16_to_float16(int16_t a, float_status *status) { - return int64_to_float16(a, status); + return int64_to_float16_scalbn(a, 0, status); +} + +float32 int64_to_float32_scalbn(int64_t a, int scale, float_status *status) +{ + FloatParts pa = int_to_float(a, scale, status); + return float32_round_pack_canonical(pa, status); +} + +float32 int32_to_float32_scalbn(int32_t a, int scale, float_status *status) +{ + return int64_to_float32_scalbn(a, scale, status); +} + +float32 int16_to_float32_scalbn(int16_t a, int scale, float_status *status) +{ + return int64_to_float32_scalbn(a, scale, status); } float32 int64_to_float32(int64_t a, float_status *status) { - FloatParts pa = int_to_float(a, status); - return float32_round_pack_canonical(pa, status); + return int64_to_float32_scalbn(a, 0, status); } float32 int32_to_float32(int32_t a, float_status *status) { - return int64_to_float32(a, status); + return int64_to_float32_scalbn(a, 0, status); } float32 int16_to_float32(int16_t a, float_status *status) { - return int64_to_float32(a, status); + return int64_to_float32_scalbn(a, 0, status); +} + +float64 int64_to_float64_scalbn(int64_t a, int scale, float_status *status) +{ + FloatParts pa = int_to_float(a, scale, status); + return float64_round_pack_canonical(pa, status); +} + +float64 int32_to_float64_scalbn(int32_t a, int scale, float_status *status) +{ + return int64_to_float64_scalbn(a, scale, status); +} + +float64 int16_to_float64_scalbn(int16_t a, int scale, float_status *status) +{ + return int64_to_float64_scalbn(a, scale, status); } float64 int64_to_float64(int64_t a, float_status *status) { - FloatParts pa = int_to_float(a, status); - return float64_round_pack_canonical(pa, status); + return int64_to_float64_scalbn(a, 0, status); } float64 int32_to_float64(int32_t a, float_status *status) { - return int64_to_float64(a, status); + return int64_to_float64_scalbn(a, 0, status); } float64 int16_to_float64(int16_t a, float_status *status) { - return int64_to_float64(a, status); + return int64_to_float64_scalbn(a, 0, status); } @@ -1690,73 +1730,120 @@ float64 int16_to_float64(int16_t a, float_status *status) * IEC/IEEE Standard for Binary Floating-Point Arithmetic. */ -static FloatParts uint_to_float(uint64_t a, float_status *status) +static FloatParts uint_to_float(uint64_t a, int scale, float_status *status) { - FloatParts r = { .sign = false}; + FloatParts r = {0, 0, float_class_unclassified, false}; if (a == 0) { r.cls = float_class_zero; } else { - int spare_bits = clz64(a) - 1; + scale = MIN(MAX(scale, -0x10000), 0x10000); r.cls = float_class_normal; - r.exp = DECOMPOSED_BINARY_POINT - spare_bits; - if (spare_bits < 0) { - shift64RightJamming(a, -spare_bits, &a); + if ((int64_t)a < 0) { + r.exp = DECOMPOSED_BINARY_POINT + 1 + scale; + shift64RightJamming(a, 1, &a); r.frac = a; } else { - r.frac = a << spare_bits; + int shift = clz64(a) - 1; + r.exp = DECOMPOSED_BINARY_POINT - shift + scale; + r.frac = a << shift; } } return r; } +float16 uint64_to_float16_scalbn(uint64_t a, int scale, float_status *status) +{ + FloatParts pa = uint_to_float(a, scale, status); + return float16_round_pack_canonical(pa, status); +} + +float16 uint32_to_float16_scalbn(uint32_t a, int scale, float_status *status) +{ + return uint64_to_float16_scalbn(a, scale, status); +} + +float16 uint16_to_float16_scalbn(uint16_t a, int scale, float_status *status) +{ + return uint64_to_float16_scalbn(a, scale, status); +} + float16 uint64_to_float16(uint64_t a, float_status *status) { - FloatParts pa = uint_to_float(a, status); - return float16_round_pack_canonical(pa, status); + return uint64_to_float16_scalbn(a, 0, status); } float16 uint32_to_float16(uint32_t a, float_status *status) { - return uint64_to_float16(a, status); + return uint64_to_float16_scalbn(a, 0, status); } float16 uint16_to_float16(uint16_t a, float_status *status) { - return uint64_to_float16(a, status); + return uint64_to_float16_scalbn(a, 0, status); +} + +float32 uint64_to_float32_scalbn(uint64_t a, int scale, float_status *status) +{ + FloatParts pa = uint_to_float(a, scale, status); + return float32_round_pack_canonical(pa, status); +} + +float32 uint32_to_float32_scalbn(uint32_t a, int scale, float_status *status) +{ + return uint64_to_float32_scalbn(a, scale, status); +} + +float32 uint16_to_float32_scalbn(uint16_t a, int scale, float_status *status) +{ + return uint64_to_float32_scalbn(a, scale, status); } float32 uint64_to_float32(uint64_t a, float_status *status) { - FloatParts pa = uint_to_float(a, status); - return float32_round_pack_canonical(pa, status); + return uint64_to_float32_scalbn(a, 0, status); } float32 uint32_to_float32(uint32_t a, float_status *status) { - return uint64_to_float32(a, status); + return uint64_to_float32_scalbn(a, 0, status); } float32 uint16_to_float32(uint16_t a, float_status *status) { - return uint64_to_float32(a, status); + return uint64_to_float32_scalbn(a, 0, status); +} + +float64 uint64_to_float64_scalbn(uint64_t a, int scale, float_status *status) +{ + FloatParts pa = uint_to_float(a, scale, status); + return float64_round_pack_canonical(pa, status); +} + +float64 uint32_to_float64_scalbn(uint32_t a, int scale, float_status *status) +{ + return uint64_to_float64_scalbn(a, scale, status); +} + +float64 uint16_to_float64_scalbn(uint16_t a, int scale, float_status *status) +{ + return uint64_to_float64_scalbn(a, scale, status); } float64 uint64_to_float64(uint64_t a, float_status *status) { - FloatParts pa = uint_to_float(a, status); - return float64_round_pack_canonical(pa, status); + return uint64_to_float64_scalbn(a, 0, status); } float64 uint32_to_float64(uint32_t a, float_status *status) { - return uint64_to_float64(a, status); + return uint64_to_float64_scalbn(a, 0, status); } float64 uint16_to_float64(uint16_t a, float_status *status) { - return uint64_to_float64(a, status); + return uint64_to_float64_scalbn(a, 0, status); } /* Float Min/Max */ diff --git a/qemu/header_gen.py b/qemu/header_gen.py index 73a7e46d..98dcc811 100644 --- a/qemu/header_gen.py +++ b/qemu/header_gen.py @@ -1826,17 +1826,26 @@ symbols = ( 'int128_subfrom', 'int128_zero', 'int16_to_float16', + 'int16_to_float16_scalbn', 'int16_to_float32', + 'int16_to_float32_scalbn', 'int16_to_float64', + 'int16_to_float64_scalbn', 'int32_to_float128', 'int32_to_float16', + 'int32_to_float16_scalbn', 'int32_to_float32', + 'int32_to_float32_scalbn', 'int32_to_float64', + 'int32_to_float64_scalbn', 'int32_to_floatx80', 'int64_to_float128', 'int64_to_float16', + 'int64_to_float16_scalbn', 'int64_to_float32', + 'int64_to_float32_scalbn', 'int64_to_float64', + 'int64_to_float64_scalbn', 'int64_to_floatx80', 'invalidate_and_set_dirty', 'invalidate_page_bitmap', @@ -3158,15 +3167,24 @@ symbols = ( 'type_table_get', 'type_table_lookup', 'uint16_to_float16', + 'uint16_to_float16_scalbn', 'uint16_to_float32', + 'uint16_to_float32_scalbn', 'uint16_to_float64', + 'uint16_to_float64_scalbn', 'uint32_to_float16', + 'uint32_to_float16_scalbn', 'uint32_to_float32', + 'uint32_to_float32_scalbn', 'uint32_to_float64', + 'uint32_to_float64_scalbn', 'uint64_to_float128', 'uint64_to_float16', + 'uint64_to_float16_scalbn', 'uint64_to_float32', + 'uint64_to_float32_scalbn', 'uint64_to_float64', + 'uint64_to_float64_scalbn', 'unassigned_io_ops', 'unassigned_io_read', 'unassigned_io_write', diff --git a/qemu/include/fpu/softfloat.h b/qemu/include/fpu/softfloat.h index 0ffbbe5e..08516f64 100644 --- a/qemu/include/fpu/softfloat.h +++ b/qemu/include/fpu/softfloat.h @@ -193,22 +193,54 @@ enum { /*---------------------------------------------------------------------------- | Software IEC/IEEE integer-to-floating-point conversion routines. *----------------------------------------------------------------------------*/ + +float16 int16_to_float16_scalbn(int16_t a, int, float_status *status); +float16 int32_to_float16_scalbn(int32_t a, int, float_status *status); +float16 int64_to_float16_scalbn(int64_t a, int, float_status *status); +float16 uint16_to_float16_scalbn(uint16_t a, int, float_status *status); +float16 uint32_to_float16_scalbn(uint32_t a, int, float_status *status); +float16 uint64_to_float16_scalbn(uint64_t a, int, float_status *status); + +float16 int16_to_float16(int16_t a, float_status *status); +float16 int32_to_float16(int32_t a, float_status *status); +float16 int64_to_float16(int64_t a, float_status *status); +float16 uint16_to_float16(uint16_t a, float_status *status); +float16 uint32_to_float16(uint32_t a, float_status *status); +float16 uint64_to_float16(uint64_t a, float_status *status); + +float32 int16_to_float32_scalbn(int16_t, int, float_status *status); +float32 int32_to_float32_scalbn(int32_t, int, float_status *status); +float32 int64_to_float32_scalbn(int64_t, int, float_status *status); +float32 uint16_to_float32_scalbn(uint16_t, int, float_status *status); +float32 uint32_to_float32_scalbn(uint32_t, int, float_status *status); +float32 uint64_to_float32_scalbn(uint64_t, int, float_status *status); + float32 int16_to_float32(int16_t, float_status *status); float32 int32_to_float32(int32_t, float_status *status); -float64 int16_to_float64(int16_t, float_status *status); -float64 int32_to_float64(int32_t, float_status *status); +float32 int64_to_float32(int64_t, float_status *status); float32 uint16_to_float32(uint16_t, float_status *status); float32 uint32_to_float32(uint32_t, float_status *status); +float32 uint64_to_float32(uint64_t, float_status *status); + +float64 int16_to_float64_scalbn(int16_t, int, float_status *status); +float64 int32_to_float64_scalbn(int32_t, int, float_status *status); +float64 int64_to_float64_scalbn(int64_t, int, float_status *status); +float64 uint16_to_float64_scalbn(uint16_t, int, float_status *status); +float64 uint32_to_float64_scalbn(uint32_t, int, float_status *status); +float64 uint64_to_float64_scalbn(uint64_t, int, float_status *status); + +float64 int16_to_float64(int16_t, float_status *status); +float64 int32_to_float64(int32_t, float_status *status); +float64 int64_to_float64(int64_t, float_status *status); float64 uint16_to_float64(uint16_t, float_status *status); float64 uint32_to_float64(uint32_t, float_status *status); -floatx80 int32_to_floatx80(int32_t, float_status *status); -float128 int32_to_float128(int32_t, float_status *status); -float32 int64_to_float32(int64_t, float_status *status); -float64 int64_to_float64(int64_t, float_status *status); -floatx80 int64_to_floatx80(int64_t, float_status *status); -float128 int64_to_float128(int64_t, float_status *status); -float32 uint64_to_float32(uint64_t, float_status *status); float64 uint64_to_float64(uint64_t, float_status *status); + +floatx80 int32_to_floatx80(int32_t, float_status *status); +floatx80 int64_to_floatx80(int64_t, float_status *status); + +float128 int32_to_float128(int32_t, float_status *status); +float128 int64_to_float128(int64_t, float_status *status); float128 uint64_to_float128(uint64_t, float_status *status); /*---------------------------------------------------------------------------- @@ -230,12 +262,6 @@ int64_t float16_to_int64(float16, float_status *status); uint64_t float16_to_uint64(float16 a, float_status *status); int64_t float16_to_int64_round_to_zero(float16, float_status *status); uint64_t float16_to_uint64_round_to_zero(float16 a, float_status *status); -float16 int16_to_float16(int16_t a, float_status *status); -float16 int32_to_float16(int32_t a, float_status *status); -float16 int64_to_float16(int64_t a, float_status *status); -float16 uint16_to_float16(uint16_t a, float_status *status); -float16 uint32_to_float16(uint32_t a, float_status *status); -float16 uint64_to_float16(uint64_t a, float_status *status); /*---------------------------------------------------------------------------- | Software half-precision operations. diff --git a/qemu/m68k.h b/qemu/m68k.h index 3e87436a..f57e9835 100644 --- a/qemu/m68k.h +++ b/qemu/m68k.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_m68k #define int128_zero int128_zero_m68k #define int16_to_float16 int16_to_float16_m68k +#define int16_to_float16_scalbn int16_to_float16_scalbn_m68k #define int16_to_float32 int16_to_float32_m68k +#define int16_to_float32_scalbn int16_to_float32_scalbn_m68k #define int16_to_float64 int16_to_float64_m68k +#define int16_to_float64_scalbn int16_to_float64_scalbn_m68k #define int32_to_float128 int32_to_float128_m68k #define int32_to_float16 int32_to_float16_m68k +#define int32_to_float16_scalbn int32_to_float16_scalbn_m68k #define int32_to_float32 int32_to_float32_m68k +#define int32_to_float32_scalbn int32_to_float32_scalbn_m68k #define int32_to_float64 int32_to_float64_m68k +#define int32_to_float64_scalbn int32_to_float64_scalbn_m68k #define int32_to_floatx80 int32_to_floatx80_m68k #define int64_to_float128 int64_to_float128_m68k #define int64_to_float16 int64_to_float16_m68k +#define int64_to_float16_scalbn int64_to_float16_scalbn_m68k #define int64_to_float32 int64_to_float32_m68k +#define int64_to_float32_scalbn int64_to_float32_scalbn_m68k #define int64_to_float64 int64_to_float64_m68k +#define int64_to_float64_scalbn int64_to_float64_scalbn_m68k #define int64_to_floatx80 int64_to_floatx80_m68k #define invalidate_and_set_dirty invalidate_and_set_dirty_m68k #define invalidate_page_bitmap invalidate_page_bitmap_m68k @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_m68k #define type_table_lookup type_table_lookup_m68k #define uint16_to_float16 uint16_to_float16_m68k +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_m68k #define uint16_to_float32 uint16_to_float32_m68k +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_m68k #define uint16_to_float64 uint16_to_float64_m68k +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_m68k #define uint32_to_float16 uint32_to_float16_m68k +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_m68k #define uint32_to_float32 uint32_to_float32_m68k +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_m68k #define uint32_to_float64 uint32_to_float64_m68k +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_m68k #define uint64_to_float128 uint64_to_float128_m68k #define uint64_to_float16 uint64_to_float16_m68k +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_m68k #define uint64_to_float32 uint64_to_float32_m68k +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_m68k #define uint64_to_float64 uint64_to_float64_m68k +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_m68k #define unassigned_io_ops unassigned_io_ops_m68k #define unassigned_io_read unassigned_io_read_m68k #define unassigned_io_write unassigned_io_write_m68k diff --git a/qemu/mips.h b/qemu/mips.h index ec6380f8..cb7d5aa6 100644 --- a/qemu/mips.h +++ b/qemu/mips.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_mips #define int128_zero int128_zero_mips #define int16_to_float16 int16_to_float16_mips +#define int16_to_float16_scalbn int16_to_float16_scalbn_mips #define int16_to_float32 int16_to_float32_mips +#define int16_to_float32_scalbn int16_to_float32_scalbn_mips #define int16_to_float64 int16_to_float64_mips +#define int16_to_float64_scalbn int16_to_float64_scalbn_mips #define int32_to_float128 int32_to_float128_mips #define int32_to_float16 int32_to_float16_mips +#define int32_to_float16_scalbn int32_to_float16_scalbn_mips #define int32_to_float32 int32_to_float32_mips +#define int32_to_float32_scalbn int32_to_float32_scalbn_mips #define int32_to_float64 int32_to_float64_mips +#define int32_to_float64_scalbn int32_to_float64_scalbn_mips #define int32_to_floatx80 int32_to_floatx80_mips #define int64_to_float128 int64_to_float128_mips #define int64_to_float16 int64_to_float16_mips +#define int64_to_float16_scalbn int64_to_float16_scalbn_mips #define int64_to_float32 int64_to_float32_mips +#define int64_to_float32_scalbn int64_to_float32_scalbn_mips #define int64_to_float64 int64_to_float64_mips +#define int64_to_float64_scalbn int64_to_float64_scalbn_mips #define int64_to_floatx80 int64_to_floatx80_mips #define invalidate_and_set_dirty invalidate_and_set_dirty_mips #define invalidate_page_bitmap invalidate_page_bitmap_mips @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_mips #define type_table_lookup type_table_lookup_mips #define uint16_to_float16 uint16_to_float16_mips +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_mips #define uint16_to_float32 uint16_to_float32_mips +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_mips #define uint16_to_float64 uint16_to_float64_mips +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_mips #define uint32_to_float16 uint32_to_float16_mips +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_mips #define uint32_to_float32 uint32_to_float32_mips +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_mips #define uint32_to_float64 uint32_to_float64_mips +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_mips #define uint64_to_float128 uint64_to_float128_mips #define uint64_to_float16 uint64_to_float16_mips +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_mips #define uint64_to_float32 uint64_to_float32_mips +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_mips #define uint64_to_float64 uint64_to_float64_mips +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_mips #define unassigned_io_ops unassigned_io_ops_mips #define unassigned_io_read unassigned_io_read_mips #define unassigned_io_write unassigned_io_write_mips diff --git a/qemu/mips64.h b/qemu/mips64.h index e87e4ff0..0a038a7e 100644 --- a/qemu/mips64.h +++ b/qemu/mips64.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_mips64 #define int128_zero int128_zero_mips64 #define int16_to_float16 int16_to_float16_mips64 +#define int16_to_float16_scalbn int16_to_float16_scalbn_mips64 #define int16_to_float32 int16_to_float32_mips64 +#define int16_to_float32_scalbn int16_to_float32_scalbn_mips64 #define int16_to_float64 int16_to_float64_mips64 +#define int16_to_float64_scalbn int16_to_float64_scalbn_mips64 #define int32_to_float128 int32_to_float128_mips64 #define int32_to_float16 int32_to_float16_mips64 +#define int32_to_float16_scalbn int32_to_float16_scalbn_mips64 #define int32_to_float32 int32_to_float32_mips64 +#define int32_to_float32_scalbn int32_to_float32_scalbn_mips64 #define int32_to_float64 int32_to_float64_mips64 +#define int32_to_float64_scalbn int32_to_float64_scalbn_mips64 #define int32_to_floatx80 int32_to_floatx80_mips64 #define int64_to_float128 int64_to_float128_mips64 #define int64_to_float16 int64_to_float16_mips64 +#define int64_to_float16_scalbn int64_to_float16_scalbn_mips64 #define int64_to_float32 int64_to_float32_mips64 +#define int64_to_float32_scalbn int64_to_float32_scalbn_mips64 #define int64_to_float64 int64_to_float64_mips64 +#define int64_to_float64_scalbn int64_to_float64_scalbn_mips64 #define int64_to_floatx80 int64_to_floatx80_mips64 #define invalidate_and_set_dirty invalidate_and_set_dirty_mips64 #define invalidate_page_bitmap invalidate_page_bitmap_mips64 @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_mips64 #define type_table_lookup type_table_lookup_mips64 #define uint16_to_float16 uint16_to_float16_mips64 +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_mips64 #define uint16_to_float32 uint16_to_float32_mips64 +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_mips64 #define uint16_to_float64 uint16_to_float64_mips64 +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_mips64 #define uint32_to_float16 uint32_to_float16_mips64 +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_mips64 #define uint32_to_float32 uint32_to_float32_mips64 +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_mips64 #define uint32_to_float64 uint32_to_float64_mips64 +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_mips64 #define uint64_to_float128 uint64_to_float128_mips64 #define uint64_to_float16 uint64_to_float16_mips64 +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_mips64 #define uint64_to_float32 uint64_to_float32_mips64 +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_mips64 #define uint64_to_float64 uint64_to_float64_mips64 +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_mips64 #define unassigned_io_ops unassigned_io_ops_mips64 #define unassigned_io_read unassigned_io_read_mips64 #define unassigned_io_write unassigned_io_write_mips64 diff --git a/qemu/mips64el.h b/qemu/mips64el.h index 33890649..c3c37304 100644 --- a/qemu/mips64el.h +++ b/qemu/mips64el.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_mips64el #define int128_zero int128_zero_mips64el #define int16_to_float16 int16_to_float16_mips64el +#define int16_to_float16_scalbn int16_to_float16_scalbn_mips64el #define int16_to_float32 int16_to_float32_mips64el +#define int16_to_float32_scalbn int16_to_float32_scalbn_mips64el #define int16_to_float64 int16_to_float64_mips64el +#define int16_to_float64_scalbn int16_to_float64_scalbn_mips64el #define int32_to_float128 int32_to_float128_mips64el #define int32_to_float16 int32_to_float16_mips64el +#define int32_to_float16_scalbn int32_to_float16_scalbn_mips64el #define int32_to_float32 int32_to_float32_mips64el +#define int32_to_float32_scalbn int32_to_float32_scalbn_mips64el #define int32_to_float64 int32_to_float64_mips64el +#define int32_to_float64_scalbn int32_to_float64_scalbn_mips64el #define int32_to_floatx80 int32_to_floatx80_mips64el #define int64_to_float128 int64_to_float128_mips64el #define int64_to_float16 int64_to_float16_mips64el +#define int64_to_float16_scalbn int64_to_float16_scalbn_mips64el #define int64_to_float32 int64_to_float32_mips64el +#define int64_to_float32_scalbn int64_to_float32_scalbn_mips64el #define int64_to_float64 int64_to_float64_mips64el +#define int64_to_float64_scalbn int64_to_float64_scalbn_mips64el #define int64_to_floatx80 int64_to_floatx80_mips64el #define invalidate_and_set_dirty invalidate_and_set_dirty_mips64el #define invalidate_page_bitmap invalidate_page_bitmap_mips64el @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_mips64el #define type_table_lookup type_table_lookup_mips64el #define uint16_to_float16 uint16_to_float16_mips64el +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_mips64el #define uint16_to_float32 uint16_to_float32_mips64el +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_mips64el #define uint16_to_float64 uint16_to_float64_mips64el +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_mips64el #define uint32_to_float16 uint32_to_float16_mips64el +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_mips64el #define uint32_to_float32 uint32_to_float32_mips64el +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_mips64el #define uint32_to_float64 uint32_to_float64_mips64el +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_mips64el #define uint64_to_float128 uint64_to_float128_mips64el #define uint64_to_float16 uint64_to_float16_mips64el +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_mips64el #define uint64_to_float32 uint64_to_float32_mips64el +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_mips64el #define uint64_to_float64 uint64_to_float64_mips64el +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_mips64el #define unassigned_io_ops unassigned_io_ops_mips64el #define unassigned_io_read unassigned_io_read_mips64el #define unassigned_io_write unassigned_io_write_mips64el diff --git a/qemu/mipsel.h b/qemu/mipsel.h index 777ff2ce..0885fe46 100644 --- a/qemu/mipsel.h +++ b/qemu/mipsel.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_mipsel #define int128_zero int128_zero_mipsel #define int16_to_float16 int16_to_float16_mipsel +#define int16_to_float16_scalbn int16_to_float16_scalbn_mipsel #define int16_to_float32 int16_to_float32_mipsel +#define int16_to_float32_scalbn int16_to_float32_scalbn_mipsel #define int16_to_float64 int16_to_float64_mipsel +#define int16_to_float64_scalbn int16_to_float64_scalbn_mipsel #define int32_to_float128 int32_to_float128_mipsel #define int32_to_float16 int32_to_float16_mipsel +#define int32_to_float16_scalbn int32_to_float16_scalbn_mipsel #define int32_to_float32 int32_to_float32_mipsel +#define int32_to_float32_scalbn int32_to_float32_scalbn_mipsel #define int32_to_float64 int32_to_float64_mipsel +#define int32_to_float64_scalbn int32_to_float64_scalbn_mipsel #define int32_to_floatx80 int32_to_floatx80_mipsel #define int64_to_float128 int64_to_float128_mipsel #define int64_to_float16 int64_to_float16_mipsel +#define int64_to_float16_scalbn int64_to_float16_scalbn_mipsel #define int64_to_float32 int64_to_float32_mipsel +#define int64_to_float32_scalbn int64_to_float32_scalbn_mipsel #define int64_to_float64 int64_to_float64_mipsel +#define int64_to_float64_scalbn int64_to_float64_scalbn_mipsel #define int64_to_floatx80 int64_to_floatx80_mipsel #define invalidate_and_set_dirty invalidate_and_set_dirty_mipsel #define invalidate_page_bitmap invalidate_page_bitmap_mipsel @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_mipsel #define type_table_lookup type_table_lookup_mipsel #define uint16_to_float16 uint16_to_float16_mipsel +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_mipsel #define uint16_to_float32 uint16_to_float32_mipsel +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_mipsel #define uint16_to_float64 uint16_to_float64_mipsel +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_mipsel #define uint32_to_float16 uint32_to_float16_mipsel +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_mipsel #define uint32_to_float32 uint32_to_float32_mipsel +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_mipsel #define uint32_to_float64 uint32_to_float64_mipsel +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_mipsel #define uint64_to_float128 uint64_to_float128_mipsel #define uint64_to_float16 uint64_to_float16_mipsel +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_mipsel #define uint64_to_float32 uint64_to_float32_mipsel +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_mipsel #define uint64_to_float64 uint64_to_float64_mipsel +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_mipsel #define unassigned_io_ops unassigned_io_ops_mipsel #define unassigned_io_read unassigned_io_read_mipsel #define unassigned_io_write unassigned_io_write_mipsel diff --git a/qemu/powerpc.h b/qemu/powerpc.h index bee4f568..82cab01a 100644 --- a/qemu/powerpc.h +++ b/qemu/powerpc.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_powerpc #define int128_zero int128_zero_powerpc #define int16_to_float16 int16_to_float16_powerpc +#define int16_to_float16_scalbn int16_to_float16_scalbn_powerpc #define int16_to_float32 int16_to_float32_powerpc +#define int16_to_float32_scalbn int16_to_float32_scalbn_powerpc #define int16_to_float64 int16_to_float64_powerpc +#define int16_to_float64_scalbn int16_to_float64_scalbn_powerpc #define int32_to_float128 int32_to_float128_powerpc #define int32_to_float16 int32_to_float16_powerpc +#define int32_to_float16_scalbn int32_to_float16_scalbn_powerpc #define int32_to_float32 int32_to_float32_powerpc +#define int32_to_float32_scalbn int32_to_float32_scalbn_powerpc #define int32_to_float64 int32_to_float64_powerpc +#define int32_to_float64_scalbn int32_to_float64_scalbn_powerpc #define int32_to_floatx80 int32_to_floatx80_powerpc #define int64_to_float128 int64_to_float128_powerpc #define int64_to_float16 int64_to_float16_powerpc +#define int64_to_float16_scalbn int64_to_float16_scalbn_powerpc #define int64_to_float32 int64_to_float32_powerpc +#define int64_to_float32_scalbn int64_to_float32_scalbn_powerpc #define int64_to_float64 int64_to_float64_powerpc +#define int64_to_float64_scalbn int64_to_float64_scalbn_powerpc #define int64_to_floatx80 int64_to_floatx80_powerpc #define invalidate_and_set_dirty invalidate_and_set_dirty_powerpc #define invalidate_page_bitmap invalidate_page_bitmap_powerpc @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_powerpc #define type_table_lookup type_table_lookup_powerpc #define uint16_to_float16 uint16_to_float16_powerpc +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_powerpc #define uint16_to_float32 uint16_to_float32_powerpc +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_powerpc #define uint16_to_float64 uint16_to_float64_powerpc +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_powerpc #define uint32_to_float16 uint32_to_float16_powerpc +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_powerpc #define uint32_to_float32 uint32_to_float32_powerpc +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_powerpc #define uint32_to_float64 uint32_to_float64_powerpc +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_powerpc #define uint64_to_float128 uint64_to_float128_powerpc #define uint64_to_float16 uint64_to_float16_powerpc +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_powerpc #define uint64_to_float32 uint64_to_float32_powerpc +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_powerpc #define uint64_to_float64 uint64_to_float64_powerpc +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_powerpc #define unassigned_io_ops unassigned_io_ops_powerpc #define unassigned_io_read unassigned_io_read_powerpc #define unassigned_io_write unassigned_io_write_powerpc diff --git a/qemu/sparc.h b/qemu/sparc.h index 155c6633..2381681b 100644 --- a/qemu/sparc.h +++ b/qemu/sparc.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_sparc #define int128_zero int128_zero_sparc #define int16_to_float16 int16_to_float16_sparc +#define int16_to_float16_scalbn int16_to_float16_scalbn_sparc #define int16_to_float32 int16_to_float32_sparc +#define int16_to_float32_scalbn int16_to_float32_scalbn_sparc #define int16_to_float64 int16_to_float64_sparc +#define int16_to_float64_scalbn int16_to_float64_scalbn_sparc #define int32_to_float128 int32_to_float128_sparc #define int32_to_float16 int32_to_float16_sparc +#define int32_to_float16_scalbn int32_to_float16_scalbn_sparc #define int32_to_float32 int32_to_float32_sparc +#define int32_to_float32_scalbn int32_to_float32_scalbn_sparc #define int32_to_float64 int32_to_float64_sparc +#define int32_to_float64_scalbn int32_to_float64_scalbn_sparc #define int32_to_floatx80 int32_to_floatx80_sparc #define int64_to_float128 int64_to_float128_sparc #define int64_to_float16 int64_to_float16_sparc +#define int64_to_float16_scalbn int64_to_float16_scalbn_sparc #define int64_to_float32 int64_to_float32_sparc +#define int64_to_float32_scalbn int64_to_float32_scalbn_sparc #define int64_to_float64 int64_to_float64_sparc +#define int64_to_float64_scalbn int64_to_float64_scalbn_sparc #define int64_to_floatx80 int64_to_floatx80_sparc #define invalidate_and_set_dirty invalidate_and_set_dirty_sparc #define invalidate_page_bitmap invalidate_page_bitmap_sparc @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_sparc #define type_table_lookup type_table_lookup_sparc #define uint16_to_float16 uint16_to_float16_sparc +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_sparc #define uint16_to_float32 uint16_to_float32_sparc +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_sparc #define uint16_to_float64 uint16_to_float64_sparc +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_sparc #define uint32_to_float16 uint32_to_float16_sparc +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_sparc #define uint32_to_float32 uint32_to_float32_sparc +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_sparc #define uint32_to_float64 uint32_to_float64_sparc +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_sparc #define uint64_to_float128 uint64_to_float128_sparc #define uint64_to_float16 uint64_to_float16_sparc +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_sparc #define uint64_to_float32 uint64_to_float32_sparc +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_sparc #define uint64_to_float64 uint64_to_float64_sparc +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_sparc #define unassigned_io_ops unassigned_io_ops_sparc #define unassigned_io_read unassigned_io_read_sparc #define unassigned_io_write unassigned_io_write_sparc diff --git a/qemu/sparc64.h b/qemu/sparc64.h index 68474ecd..f205f82b 100644 --- a/qemu/sparc64.h +++ b/qemu/sparc64.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_sparc64 #define int128_zero int128_zero_sparc64 #define int16_to_float16 int16_to_float16_sparc64 +#define int16_to_float16_scalbn int16_to_float16_scalbn_sparc64 #define int16_to_float32 int16_to_float32_sparc64 +#define int16_to_float32_scalbn int16_to_float32_scalbn_sparc64 #define int16_to_float64 int16_to_float64_sparc64 +#define int16_to_float64_scalbn int16_to_float64_scalbn_sparc64 #define int32_to_float128 int32_to_float128_sparc64 #define int32_to_float16 int32_to_float16_sparc64 +#define int32_to_float16_scalbn int32_to_float16_scalbn_sparc64 #define int32_to_float32 int32_to_float32_sparc64 +#define int32_to_float32_scalbn int32_to_float32_scalbn_sparc64 #define int32_to_float64 int32_to_float64_sparc64 +#define int32_to_float64_scalbn int32_to_float64_scalbn_sparc64 #define int32_to_floatx80 int32_to_floatx80_sparc64 #define int64_to_float128 int64_to_float128_sparc64 #define int64_to_float16 int64_to_float16_sparc64 +#define int64_to_float16_scalbn int64_to_float16_scalbn_sparc64 #define int64_to_float32 int64_to_float32_sparc64 +#define int64_to_float32_scalbn int64_to_float32_scalbn_sparc64 #define int64_to_float64 int64_to_float64_sparc64 +#define int64_to_float64_scalbn int64_to_float64_scalbn_sparc64 #define int64_to_floatx80 int64_to_floatx80_sparc64 #define invalidate_and_set_dirty invalidate_and_set_dirty_sparc64 #define invalidate_page_bitmap invalidate_page_bitmap_sparc64 @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_sparc64 #define type_table_lookup type_table_lookup_sparc64 #define uint16_to_float16 uint16_to_float16_sparc64 +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_sparc64 #define uint16_to_float32 uint16_to_float32_sparc64 +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_sparc64 #define uint16_to_float64 uint16_to_float64_sparc64 +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_sparc64 #define uint32_to_float16 uint32_to_float16_sparc64 +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_sparc64 #define uint32_to_float32 uint32_to_float32_sparc64 +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_sparc64 #define uint32_to_float64 uint32_to_float64_sparc64 +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_sparc64 #define uint64_to_float128 uint64_to_float128_sparc64 #define uint64_to_float16 uint64_to_float16_sparc64 +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_sparc64 #define uint64_to_float32 uint64_to_float32_sparc64 +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_sparc64 #define uint64_to_float64 uint64_to_float64_sparc64 +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_sparc64 #define unassigned_io_ops unassigned_io_ops_sparc64 #define unassigned_io_read unassigned_io_read_sparc64 #define unassigned_io_write unassigned_io_write_sparc64 diff --git a/qemu/x86_64.h b/qemu/x86_64.h index fa983091..0753f22d 100644 --- a/qemu/x86_64.h +++ b/qemu/x86_64.h @@ -1820,17 +1820,26 @@ #define int128_subfrom int128_subfrom_x86_64 #define int128_zero int128_zero_x86_64 #define int16_to_float16 int16_to_float16_x86_64 +#define int16_to_float16_scalbn int16_to_float16_scalbn_x86_64 #define int16_to_float32 int16_to_float32_x86_64 +#define int16_to_float32_scalbn int16_to_float32_scalbn_x86_64 #define int16_to_float64 int16_to_float64_x86_64 +#define int16_to_float64_scalbn int16_to_float64_scalbn_x86_64 #define int32_to_float128 int32_to_float128_x86_64 #define int32_to_float16 int32_to_float16_x86_64 +#define int32_to_float16_scalbn int32_to_float16_scalbn_x86_64 #define int32_to_float32 int32_to_float32_x86_64 +#define int32_to_float32_scalbn int32_to_float32_scalbn_x86_64 #define int32_to_float64 int32_to_float64_x86_64 +#define int32_to_float64_scalbn int32_to_float64_scalbn_x86_64 #define int32_to_floatx80 int32_to_floatx80_x86_64 #define int64_to_float128 int64_to_float128_x86_64 #define int64_to_float16 int64_to_float16_x86_64 +#define int64_to_float16_scalbn int64_to_float16_scalbn_x86_64 #define int64_to_float32 int64_to_float32_x86_64 +#define int64_to_float32_scalbn int64_to_float32_scalbn_x86_64 #define int64_to_float64 int64_to_float64_x86_64 +#define int64_to_float64_scalbn int64_to_float64_scalbn_x86_64 #define int64_to_floatx80 int64_to_floatx80_x86_64 #define invalidate_and_set_dirty invalidate_and_set_dirty_x86_64 #define invalidate_page_bitmap invalidate_page_bitmap_x86_64 @@ -3152,15 +3161,24 @@ #define type_table_get type_table_get_x86_64 #define type_table_lookup type_table_lookup_x86_64 #define uint16_to_float16 uint16_to_float16_x86_64 +#define uint16_to_float16_scalbn uint16_to_float16_scalbn_x86_64 #define uint16_to_float32 uint16_to_float32_x86_64 +#define uint16_to_float32_scalbn uint16_to_float32_scalbn_x86_64 #define uint16_to_float64 uint16_to_float64_x86_64 +#define uint16_to_float64_scalbn uint16_to_float64_scalbn_x86_64 #define uint32_to_float16 uint32_to_float16_x86_64 +#define uint32_to_float16_scalbn uint32_to_float16_scalbn_x86_64 #define uint32_to_float32 uint32_to_float32_x86_64 +#define uint32_to_float32_scalbn uint32_to_float32_scalbn_x86_64 #define uint32_to_float64 uint32_to_float64_x86_64 +#define uint32_to_float64_scalbn uint32_to_float64_scalbn_x86_64 #define uint64_to_float128 uint64_to_float128_x86_64 #define uint64_to_float16 uint64_to_float16_x86_64 +#define uint64_to_float16_scalbn uint64_to_float16_scalbn_x86_64 #define uint64_to_float32 uint64_to_float32_x86_64 +#define uint64_to_float32_scalbn uint64_to_float32_scalbn_x86_64 #define uint64_to_float64 uint64_to_float64_x86_64 +#define uint64_to_float64_scalbn uint64_to_float64_scalbn_x86_64 #define unassigned_io_ops unassigned_io_ops_x86_64 #define unassigned_io_read unassigned_io_read_x86_64 #define unassigned_io_write unassigned_io_write_x86_64