Browse Source
* winch(amd64): more fpu Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com> * Add tests Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com> --------- Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>pull/8481/head
Edoardo Vacchi
6 months ago
committed by
GitHub
31 changed files with 791 additions and 11 deletions
@ -0,0 +1,26 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f32) |
|||
(f32.const -1.32) |
|||
(f32.abs) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov w16, #0xf5c3 |
|||
;; movk w16, #0xbfa8, lsl #16 |
|||
;; fmov s0, w16 |
|||
;; fabs s0, s0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f32) (result f32) |
|||
(local.get 0) |
|||
(f32.abs) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur w0, [x28, #4] |
|||
;; ldur w0, [x28, #4] |
|||
;; fabs s0, s0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,26 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f32) |
|||
(f32.const -1.32) |
|||
(f32.ceil) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov w16, #0xf5c3 |
|||
;; movk w16, #0xbfa8, lsl #16 |
|||
;; fmov s0, w16 |
|||
;; frintp s0, s0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f32) (result f32) |
|||
(local.get 0) |
|||
(f32.ceil) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur w0, [x28, #4] |
|||
;; ldur w0, [x28, #4] |
|||
;; frintp s0, s0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,26 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f32) |
|||
(f32.const -1.32) |
|||
(f32.floor) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov w16, #0xf5c3 |
|||
;; movk w16, #0xbfa8, lsl #16 |
|||
;; fmov s0, w16 |
|||
;; frintm s0, s0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f32) (result f32) |
|||
(local.get 0) |
|||
(f32.floor) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur w0, [x28, #4] |
|||
;; ldur w0, [x28, #4] |
|||
;; frintm s0, s0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,26 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f32) |
|||
(f32.const -1.32) |
|||
(f32.nearest) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov w16, #0xf5c3 |
|||
;; movk w16, #0xbfa8, lsl #16 |
|||
;; fmov s0, w16 |
|||
;; frintn s0, s0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f32) (result f32) |
|||
(local.get 0) |
|||
(f32.nearest) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur w0, [x28, #4] |
|||
;; ldur w0, [x28, #4] |
|||
;; frintn s0, s0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,26 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f32) |
|||
(f32.const -1.32) |
|||
(f32.neg) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov w16, #0xf5c3 |
|||
;; movk w16, #0xbfa8, lsl #16 |
|||
;; fmov s0, w16 |
|||
;; fneg s0, s0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f32) (result f32) |
|||
(local.get 0) |
|||
(f32.neg) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur w0, [x28, #4] |
|||
;; ldur w0, [x28, #4] |
|||
;; fneg s0, s0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,26 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f32) |
|||
(f32.const 1.32) |
|||
(f32.sqrt) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov w16, #0xf5c3 |
|||
;; movk w16, #0x3fa8, lsl #16 |
|||
;; fmov s0, w16 |
|||
;; fsqrt s0, s0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f32) (result f32) |
|||
(local.get 0) |
|||
(f32.sqrt) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur w0, [x28, #4] |
|||
;; ldur w0, [x28, #4] |
|||
;; fsqrt s0, s0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,26 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f32) |
|||
(f32.const -1.32) |
|||
(f32.trunc) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov w16, #0xf5c3 |
|||
;; movk w16, #0xbfa8, lsl #16 |
|||
;; fmov s0, w16 |
|||
;; frintz s0, s0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f32) (result f32) |
|||
(local.get 0) |
|||
(f32.trunc) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur w0, [x28, #4] |
|||
;; ldur w0, [x28, #4] |
|||
;; frintz s0, s0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,28 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f64) |
|||
(f64.const -1.32) |
|||
(f64.abs) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov x16, #0x851f |
|||
;; movk x16, #0x51eb, lsl #16 |
|||
;; movk x16, #0x1eb8, lsl #32 |
|||
;; movk x16, #0xbff5, lsl #48 |
|||
;; fmov d0, x16 |
|||
;; fabs d0, d0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f64) (result f64) |
|||
(local.get 0) |
|||
(f64.abs) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur x0, [x28] |
|||
;; ldur x0, [x28] |
|||
;; fabs d0, d0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,28 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f64) |
|||
(f64.const -1.32) |
|||
(f64.ceil) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov x16, #0x851f |
|||
;; movk x16, #0x51eb, lsl #16 |
|||
;; movk x16, #0x1eb8, lsl #32 |
|||
;; movk x16, #0xbff5, lsl #48 |
|||
;; fmov d0, x16 |
|||
;; frintp d0, d0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f64) (result f64) |
|||
(local.get 0) |
|||
(f64.ceil) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur x0, [x28] |
|||
;; ldur x0, [x28] |
|||
;; frintp d0, d0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,28 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f64) |
|||
(f64.const -1.32) |
|||
(f64.floor) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov x16, #0x851f |
|||
;; movk x16, #0x51eb, lsl #16 |
|||
;; movk x16, #0x1eb8, lsl #32 |
|||
;; movk x16, #0xbff5, lsl #48 |
|||
;; fmov d0, x16 |
|||
;; frintm d0, d0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f64) (result f64) |
|||
(local.get 0) |
|||
(f64.floor) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur x0, [x28] |
|||
;; ldur x0, [x28] |
|||
;; frintm d0, d0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,28 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f64) |
|||
(f64.const -1.32) |
|||
(f64.nearest) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov x16, #0x851f |
|||
;; movk x16, #0x51eb, lsl #16 |
|||
;; movk x16, #0x1eb8, lsl #32 |
|||
;; movk x16, #0xbff5, lsl #48 |
|||
;; fmov d0, x16 |
|||
;; frintn d0, d0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f64) (result f64) |
|||
(local.get 0) |
|||
(f64.nearest) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur x0, [x28] |
|||
;; ldur x0, [x28] |
|||
;; frintn d0, d0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,28 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f64) |
|||
(f64.const -1.32) |
|||
(f64.neg) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov x16, #0x851f |
|||
;; movk x16, #0x51eb, lsl #16 |
|||
;; movk x16, #0x1eb8, lsl #32 |
|||
;; movk x16, #0xbff5, lsl #48 |
|||
;; fmov d0, x16 |
|||
;; fneg d0, d0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f64) (result f64) |
|||
(local.get 0) |
|||
(f64.neg) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur x0, [x28] |
|||
;; ldur x0, [x28] |
|||
;; fneg d0, d0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,28 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f64) |
|||
(f64.const 1.32) |
|||
(f64.sqrt) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov x16, #0x851f |
|||
;; movk x16, #0x51eb, lsl #16 |
|||
;; movk x16, #0x1eb8, lsl #32 |
|||
;; movk x16, #0x3ff5, lsl #48 |
|||
;; fmov d0, x16 |
|||
;; fsqrt d0, d0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f64) (result f64) |
|||
(local.get 0) |
|||
(f64.sqrt) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur x0, [x28] |
|||
;; ldur x0, [x28] |
|||
;; fsqrt d0, d0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,28 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (result f64) |
|||
(f64.const -1.32) |
|||
(f64.trunc) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #8] |
|||
;; stur x1, [x28] |
|||
;; mov x16, #0x851f |
|||
;; movk x16, #0x51eb, lsl #16 |
|||
;; movk x16, #0x1eb8, lsl #32 |
|||
;; movk x16, #0xbff5, lsl #48 |
|||
;; fmov d0, x16 |
|||
;; frintz d0, d0 |
|||
;; add sp, sp, #0x10 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
@ -0,0 +1,25 @@ |
|||
;;! target = "aarch64" |
|||
;;! test = "winch" |
|||
|
|||
(module |
|||
(func (param f64) (result f64) |
|||
(local.get 0) |
|||
(f64.trunc) |
|||
) |
|||
) |
|||
;; wasm[0]::function[0]: |
|||
;; stp x29, x30, [sp, #-0x10]! |
|||
;; mov x29, sp |
|||
;; mov x28, sp |
|||
;; mov x9, x0 |
|||
;; sub sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; stur x0, [x28, #0x10] |
|||
;; stur x1, [x28, #8] |
|||
;; stur x0, [x28] |
|||
;; ldur x0, [x28] |
|||
;; frintz d0, d0 |
|||
;; add sp, sp, #0x18 |
|||
;; mov x28, sp |
|||
;; ldp x29, x30, [sp], #0x10 |
|||
;; ret |
Loading…
Reference in new issue