diff --git a/AstSemantics.md b/AstSemantics.md index edbdc0d3..b17c4490 100644 --- a/AstSemantics.md +++ b/AstSemantics.md @@ -415,31 +415,31 @@ implementations of the remaining required operations. ## Datatype conversions, truncations, reinterpretations, promotions, and demotions - * `int32_from_int64`: wrap a 64-bit integer to a 32-bit integer - * `int64_from_sint32`: extend a signed 32-bit integer to a 64-bit integer - * `int64_from_uint32`: extend an unsigned 32-bit integer to a 64-bit integer - * `sint32_from_float64`: truncate a 64-bit float to a signed integer - * `sint32_from_float32`: truncate a 32-bit float to a signed integer - * `uint32_from_float64`: truncate a 64-bit float to an unsigned integer - * `uint32_from_float32`: truncate a 32-bit float to an unsigned integer - * `sint64_from_float64`: truncate a 64-bit float to a signed integer - * `sint64_from_float32`: truncate a 32-bit float to a signed integer - * `uint64_from_float64`: truncate a 64-bit float to an unsigned integer - * `uint64_from_float32`: truncate a 32-bit float to an unsigned integer - * `int32_from_float32_bits`: reinterpret the bits of a 32-bit float as a 32-bit integer - * `int64_from_float64_bits`: reinterpret the bits of a 64-bit float as a 64-bit integer - * `float64_from_float32`: promote a 32-bit float to a 64-bit float - * `float64_from_sint32`: convert a signed integer to a 64-bit float - * `float64_from_uint32`: convert an unsigned integer to a 64-bit float - * `float64_from_sint64`: convert a signed integer to a 64-bit float - * `float64_from_uint64`: convert an unsigned integer to a 64-bit float - * `float32_from_float64`: demote a 64-bit float to a 32-bit float - * `float32_from_sint32`: convert a signed integer to a 32-bit float - * `float32_from_uint32`: convert an unsigned integer to a 32-bit float - * `float32_from_sint64`: convert a signed integer to a 32-bit float - * `float32_from_uint64`: convert an unsigned integer to a 32-bit float - * `float32_from_int32_bits`: reinterpret the bits of a 32-bit integer as a 32-bit float - * `float64_from_int64_bits`: reinterpret the bits of a 64-bit integer as a 64-bit float + * `int32.wrap[int64]`: wrap a 64-bit integer to a 32-bit integer + * `int32.trunc_signed[float32]`: truncate a 32-bit float to a signed 32-bit integer + * `int32.trunc_signed[float64]`: truncate a 64-bit float to a signed 32-bit integer + * `int32.trunc_unsigned[float32]`: truncate a 32-bit float to an unsigned 32-bit integer + * `int32.trunc_unsigned[float64]`: truncate a 64-bit float to an unsigned 32-bit integer + * `int32.reinterpret[float32]`: reinterpret the bits of a 32-bit float as a 32-bit integer + * `int64.extend_signed[int32]`: extend a signed 32-bit integer to a 64-bit integer + * `int64.extend_unsigned[int32]`: extend an unsigned 32-bit integer to a 64-bit integer + * `int64.trunc_signed[float32]`: truncate a 32-bit float to a signed 64-bit integer + * `int64.trunc_signed[float64]`: truncate a 64-bit float to a signed 64-bit integer + * `int64.trunc_unsigned[float32]`: truncate a 32-bit float to an unsigned 64-bit integer + * `int64.trunc_unsigned[float64]`: truncate a 64-bit float to an unsigned 64-bit integer + * `int64.reinterpret[float64]`: reinterpret the bits of a 64-bit float as a 64-bit integer + * `float32.demote[float64]`: demote a 64-bit float to a 32-bit float + * `float32.cvt_signed[int32]`: convert a signed 32-bit integer to a 32-bit float + * `float32.cvt_signed[int64]`: convert a signed 64-bit integer to a 32-bit float + * `float32.cvt_unsigned[int32]`: convert an unsigned 32-bit integer to a 32-bit float + * `float32.cvt_unsigned[int64]`: convert an unsigned 64-bit integer to a 32-bit float + * `float32.reinterpret[int32]`: reinterpret the bits of a 32-bit integer as a 32-bit float + * `float64.promote[float32]`: promote a 32-bit float to a 64-bit float + * `float64.cvt_signed[int32]`: convert a signed 32-bit integer to a 64-bit float + * `float64.cvt_signed[int64]`: convert a signed 64-bit integer to a 64-bit float + * `float64.cvt_unsigned[int32]`: convert an unsigned 32-bit integer to a 64-bit float + * `float64.cvt_unsigned[int64]`: convert an unsigned 64-bit integer to a 64-bit float + * `float64.reinterpret[int64]`: reinterpret the bits of a 64-bit integer as a 64-bit float Wrapping and extension of integer values always succeed. Promotion and demotion of floating point values always succeed. @@ -454,6 +454,6 @@ Reinterpretations always succeed. Conversions from integer to floating point always succeed, though they may overflow to infinity or negative infinity as specified by IEEE-754. -Conversion from floating point to integer where IEEE-754 would specify an +Truncation from floating point to integer where IEEE-754 would specify an invalid operation exception (e.g. when the floating point value is NaN or outside the range which rounds to an integer in range) traps.