diff options
author | Brendan Dahl <brendan.dahl@gmail.com> | 2024-09-26 15:35:47 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-26 15:35:47 -0700 |
commit | c3a71ff46d8f38e29896c321d89b6d0c3b90fbc1 (patch) | |
tree | 04c4751da10f8e548e0ff94945d2635939b34f58 /test/lit/basic | |
parent | 3856a2dc909b3c713497ef311fe4051078ee74b9 (diff) | |
download | binaryen-c3a71ff46d8f38e29896c321d89b6d0c3b90fbc1.tar.gz binaryen-c3a71ff46d8f38e29896c321d89b6d0c3b90fbc1.tar.bz2 binaryen-c3a71ff46d8f38e29896c321d89b6d0c3b90fbc1.zip |
[FP16] Implement conversion operations. (#6974)
Note: FP16 is a little different from F32/F64 since it can't represent
the full 2^16 integer range. 65504 is the max whole integer. This leads
to some slightly strange behavior when converting integers greater than
65504 since they become infinity.
Specified at
https://github.com/WebAssembly/half-precision/blob/main/proposals/half-precision/Overview.md
Diffstat (limited to 'test/lit/basic')
-rw-r--r-- | test/lit/basic/f16.wast | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/test/lit/basic/f16.wast b/test/lit/basic/f16.wast index ba806bb57..faf7006d4 100644 --- a/test/lit/basic/f16.wast +++ b/test/lit/basic/f16.wast @@ -534,6 +534,69 @@ (local.get $2) ) ) + ;; CHECK-TEXT: (func $i16x8.trunc_sat_f16x8_s (type $1) (param $0 v128) (result v128) + ;; CHECK-TEXT-NEXT: (i16x8.trunc_sat_f16x8_s + ;; CHECK-TEXT-NEXT: (local.get $0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $i16x8.trunc_sat_f16x8_s (type $1) (param $0 v128) (result v128) + ;; CHECK-BIN-NEXT: (i16x8.trunc_sat_f16x8_s + ;; CHECK-BIN-NEXT: (local.get $0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $i16x8.trunc_sat_f16x8_s (param $0 v128) (result v128) + (i16x8.trunc_sat_f16x8_s + (local.get $0) + ) + ) + + ;; CHECK-TEXT: (func $i16x8.trunc_sat_f16x8_u (type $1) (param $0 v128) (result v128) + ;; CHECK-TEXT-NEXT: (i16x8.trunc_sat_f16x8_u + ;; CHECK-TEXT-NEXT: (local.get $0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $i16x8.trunc_sat_f16x8_u (type $1) (param $0 v128) (result v128) + ;; CHECK-BIN-NEXT: (i16x8.trunc_sat_f16x8_u + ;; CHECK-BIN-NEXT: (local.get $0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $i16x8.trunc_sat_f16x8_u (param $0 v128) (result v128) + (i16x8.trunc_sat_f16x8_u + (local.get $0) + ) + ) + + ;; CHECK-TEXT: (func $f16x8.convert_i16x8_s (type $1) (param $0 v128) (result v128) + ;; CHECK-TEXT-NEXT: (f16x8.convert_i16x8_s + ;; CHECK-TEXT-NEXT: (local.get $0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $f16x8.convert_i16x8_s (type $1) (param $0 v128) (result v128) + ;; CHECK-BIN-NEXT: (f16x8.convert_i16x8_s + ;; CHECK-BIN-NEXT: (local.get $0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $f16x8.convert_i16x8_s (param $0 v128) (result v128) + (f16x8.convert_i16x8_s + (local.get $0) + ) + ) + + ;; CHECK-TEXT: (func $f16x8.convert_i16x8_u (type $1) (param $0 v128) (result v128) + ;; CHECK-TEXT-NEXT: (f16x8.convert_i16x8_u + ;; CHECK-TEXT-NEXT: (local.get $0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $f16x8.convert_i16x8_u (type $1) (param $0 v128) (result v128) + ;; CHECK-BIN-NEXT: (f16x8.convert_i16x8_u + ;; CHECK-BIN-NEXT: (local.get $0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $f16x8.convert_i16x8_u (param $0 v128) (result v128) + (f16x8.convert_i16x8_u + (local.get $0) + ) + ) ) ;; CHECK-BIN-NODEBUG: (type $0 (func (param v128 v128) (result v128))) @@ -740,3 +803,27 @@ ;; CHECK-BIN-NODEBUG-NEXT: (local.get $2) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $28 (type $1) (param $0 v128) (result v128) +;; CHECK-BIN-NODEBUG-NEXT: (i16x8.trunc_sat_f16x8_s +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $29 (type $1) (param $0 v128) (result v128) +;; CHECK-BIN-NODEBUG-NEXT: (i16x8.trunc_sat_f16x8_u +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $30 (type $1) (param $0 v128) (result v128) +;; CHECK-BIN-NODEBUG-NEXT: (f16x8.convert_i16x8_s +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $31 (type $1) (param $0 v128) (result v128) +;; CHECK-BIN-NODEBUG-NEXT: (f16x8.convert_i16x8_u +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) |