summaryrefslogtreecommitdiff
path: root/test/lit/basic
diff options
context:
space:
mode:
authorBrendan Dahl <brendan.dahl@gmail.com>2024-09-26 15:35:47 -0700
committerGitHub <noreply@github.com>2024-09-26 15:35:47 -0700
commitc3a71ff46d8f38e29896c321d89b6d0c3b90fbc1 (patch)
tree04c4751da10f8e548e0ff94945d2635939b34f58 /test/lit/basic
parent3856a2dc909b3c713497ef311fe4051078ee74b9 (diff)
downloadbinaryen-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.wast87
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: )