diff --git a/include/remill/Arch/Runtime/Intrinsics.h b/include/remill/Arch/Runtime/Intrinsics.h index c3f788473..2ccc2ae50 100644 --- a/include/remill/Arch/Runtime/Intrinsics.h +++ b/include/remill/Arch/Runtime/Intrinsics.h @@ -59,7 +59,7 @@ __remill_write_memory_64(Memory *, addr_t, uint64_t); [[gnu::used]] extern float80_t __remill_read_memory_f80(Memory *, addr_t); -[[gnu::used]] extern float64_t __remill_read_memory_f128(Memory *, addr_t); +[[gnu::used]] extern float128_t __remill_read_memory_f128(Memory *, addr_t); [[gnu::used, gnu::const]] extern Memory * __remill_write_memory_f32(Memory *, addr_t, float32_t); @@ -71,7 +71,7 @@ __remill_write_memory_f64(Memory *, addr_t, float64_t); float80_t); [[gnu::used]] extern Memory *__remill_write_memory_f128(Memory *, addr_t, - float64_t); + float128_t); [[gnu::used, gnu::const]] extern uint8_t __remill_undefined_8(void); @@ -87,6 +87,8 @@ __remill_write_memory_f64(Memory *, addr_t, float64_t); [[gnu::used, gnu::const]] extern float80_t __remill_undefined_f80(void); +[[gnu::used, gnu::const]] extern float128_t __remill_undefined_f128(void); + // Generic error. [[gnu::used]] extern Memory *__remill_error(State &, addr_t addr, Memory *); diff --git a/tests/AArch64/Run.cpp b/tests/AArch64/Run.cpp index bdd2c9ed6..cd1988083 100644 --- a/tests/AArch64/Run.cpp +++ b/tests/AArch64/Run.cpp @@ -143,16 +143,9 @@ MAKE_RW_MEMORY(64) MAKE_RW_FP_MEMORY(32) MAKE_RW_FP_MEMORY(64) +MAKE_RW_FP_MEMORY(80) MAKE_RW_FP_MEMORY(128) -NEVER_INLINE float64_t __remill_read_memory_f80(Memory *, addr_t) { - abort(); -} - -NEVER_INLINE Memory *__remill_write_memory_f80(Memory *, addr_t, float64_t) { - abort(); -} - Memory *__remill_compare_exchange_memory_8(Memory *memory, addr_t addr, uint8_t &expected, uint8_t desired) { expected = __sync_val_compare_and_swap(reinterpret_cast(addr), @@ -338,6 +331,10 @@ float80_t __remill_undefined_f80(void) { return {0}; } +float128_t __remill_undefined_f128(void) { + return {0}; +} + // Marks `mem` as being used. This is used for making sure certain symbols are // kept around through optimization, and makes sure that optimization doesn't // perform dead-argument elimination on any of the intrinsics. diff --git a/tests/X86/Run.cpp b/tests/X86/Run.cpp index 6612fa9ea..19fa86388 100644 --- a/tests/X86/Run.cpp +++ b/tests/X86/Run.cpp @@ -179,16 +179,7 @@ MAKE_RW_MEMORY(64) MAKE_RW_FP_MEMORY(32) MAKE_RW_FP_MEMORY(64) MAKE_RW_FP_MEMORY(80) - -NEVER_INLINE float64_t __remill_read_memory_f128(Memory *, addr_t) { - LOG(FATAL) << "Unsupported on x86/amd64"; - return 0.0; -} - -NEVER_INLINE Memory *__remill_write_memory_f128(Memory *, addr_t, double) { - LOG(FATAL) << "Unsupported on x86/amd64"; - return nullptr; -} +MAKE_RW_FP_MEMORY(128) Memory *__remill_compare_exchange_memory_8(Memory *memory, addr_t addr,