x64: Migrate fcvt_from_sint and fcvt_low_from_sint to ISLE (#4650)

https://github.com/bytecodealliance/wasmtime/pull/4650
This commit is contained in:
Trevor Elliott
2022-08-10 10:49:02 -07:00
committed by GitHub
parent f8c0a88299
commit a25d52046b
6 changed files with 223 additions and 63 deletions

View File

@@ -2970,6 +2970,13 @@
(_ Unit (emit (MInst.XmmUnaryRmR (SseOpcode.Cvtsd2ss) x dst))))
dst))
;; Helper for creating `cvtdq2ps` instructions.
(decl x64_cvtdq2ps (Xmm) Xmm)
(rule (x64_cvtdq2ps x)
(let ((dst WritableXmm (temp_writable_xmm))
(_ Unit (emit (MInst.XmmUnaryRmR (SseOpcode.Cvtdq2ps) x dst))))
dst))
;; Helper for creating `cvtps2pd` instructions.
(decl x64_cvtps2pd (Xmm) Xmm)
(rule (x64_cvtps2pd x)
@@ -2984,6 +2991,29 @@
(_ Unit (emit (MInst.XmmUnaryRmR (SseOpcode.Cvtpd2ps) x dst))))
dst))
;; Helper for creating `cvtdq2pd` instructions.
(decl x64_cvtdq2pd (Type Xmm) Xmm)
(rule (x64_cvtdq2pd ty x)
(let ((dst WritableXmm (temp_writable_xmm))
(_ Unit (emit (MInst.XmmUnaryRmR (SseOpcode.Cvtdq2pd) x dst))))
dst))
;; Helper for creating `cvtsi2ss` instructions.
(decl x64_cvtsi2ss (Type GprMem) Xmm)
(rule (x64_cvtsi2ss ty x)
(let ((dst WritableXmm (temp_writable_xmm))
(size OperandSize (raw_operand_size_of_type ty))
(_ Unit (emit (MInst.GprToXmm (SseOpcode.Cvtsi2ss) x dst size))))
dst))
;; Helper for creating `cvtsi2sd` instructions.
(decl x64_cvtsi2sd (Type GprMem) Xmm)
(rule (x64_cvtsi2sd ty x)
(let ((dst WritableXmm (temp_writable_xmm))
(size OperandSize (raw_operand_size_of_type ty))
(_ Unit (emit (MInst.GprToXmm (SseOpcode.Cvtsi2sd) x dst size))))
dst))
;; Helpers for creating `pcmpeq*` instructions.
(decl x64_pcmpeq (Type Xmm XmmMem) Xmm)
(rule (x64_pcmpeq $I8X16 x y) (x64_pcmpeqb x y))