Browse Source

Add v128.const support to Winch (#8990)

* Add v128.const support to Winch

* Remove next_vr and vector_reg_for methods

* Adjust alignment and slot size for v128

* Forgot to update disas tests

* Update unit tests

* Use 8 byte stack slot sizes

* Fix broken unit tests, add tests for vecs, and use ty size for vecs
pull/9006/head
Jeffrey Charles 4 months ago
committed by GitHub
parent
commit
fa9a948db0
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      tests/all/func.rs
  2. 16
      tests/disas/winch/x64/block/get_and_set.wat
  3. 16
      tests/disas/winch/x64/block/get_and_tee.wat
  4. 14
      tests/disas/winch/x64/block/with_local_float.wat
  5. 28
      tests/disas/winch/x64/br/as_if_else.wat
  6. 28
      tests/disas/winch/x64/br/as_if_then.wat
  7. 22
      tests/disas/winch/x64/br/br_jump.wat
  8. 26
      tests/disas/winch/x64/br_if/as_block_last.wat
  9. 26
      tests/disas/winch/x64/br_if/as_block_last_value.wat
  10. 14
      tests/disas/winch/x64/br_if/as_if_cond.wat
  11. 32
      tests/disas/winch/x64/br_if/as_if_else.wat
  12. 32
      tests/disas/winch/x64/br_if/as_if_then.wat
  13. 24
      tests/disas/winch/x64/br_if/as_local_set_value.wat
  14. 22
      tests/disas/winch/x64/br_if/as_loop_last.wat
  15. 68
      tests/disas/winch/x64/br_if/save_state_before_br_emission.wat
  16. 14
      tests/disas/winch/x64/br_table/large.wat
  17. 12
      tests/disas/winch/x64/br_table/nested_br_table_loop_block.wat
  18. 14
      tests/disas/winch/x64/br_table/stack_handling.wat
  19. 44
      tests/disas/winch/x64/call/params.wat
  20. 40
      tests/disas/winch/x64/call/recursive.wat
  21. 36
      tests/disas/winch/x64/call/reg_on_stack.wat
  22. 46
      tests/disas/winch/x64/call/simple.wat
  23. 102
      tests/disas/winch/x64/call_indirect/call_indirect.wat
  24. 72
      tests/disas/winch/x64/call_indirect/local_arg.wat
  25. 14
      tests/disas/winch/x64/f32_abs/f32_abs_param.wat
  26. 36
      tests/disas/winch/x64/f32_add/locals.wat
  27. 22
      tests/disas/winch/x64/f32_add/params.wat
  28. 22
      tests/disas/winch/x64/f32_ceil/f32_ceil_param.wat
  29. 14
      tests/disas/winch/x64/f32_ceil/f32_ceil_param_sse41.wat
  30. 14
      tests/disas/winch/x64/f32_const/call_id.wat
  31. 14
      tests/disas/winch/x64/f32_const/id.wat
  32. 18
      tests/disas/winch/x64/f32_convert_i32_s/locals.wat
  33. 14
      tests/disas/winch/x64/f32_convert_i32_s/params.wat
  34. 26
      tests/disas/winch/x64/f32_convert_i32_u/locals.wat
  35. 14
      tests/disas/winch/x64/f32_convert_i32_u/params.wat
  36. 18
      tests/disas/winch/x64/f32_convert_i64_s/locals.wat
  37. 18
      tests/disas/winch/x64/f32_convert_i64_s/params.wat
  38. 26
      tests/disas/winch/x64/f32_convert_i64_u/locals.wat
  39. 26
      tests/disas/winch/x64/f32_convert_i64_u/params.wat
  40. 34
      tests/disas/winch/x64/f32_copysign/locals.wat
  41. 22
      tests/disas/winch/x64/f32_copysign/params.wat
  42. 18
      tests/disas/winch/x64/f32_demote_f64/locals.wat
  43. 18
      tests/disas/winch/x64/f32_demote_f64/params.wat
  44. 36
      tests/disas/winch/x64/f32_div/locals.wat
  45. 22
      tests/disas/winch/x64/f32_div/params.wat
  46. 34
      tests/disas/winch/x64/f32_eq/locals.wat
  47. 22
      tests/disas/winch/x64/f32_eq/params.wat
  48. 22
      tests/disas/winch/x64/f32_floor/f32_floor_param.wat
  49. 14
      tests/disas/winch/x64/f32_floor/f32_floor_param_sse41.wat
  50. 34
      tests/disas/winch/x64/f32_ge/locals.wat
  51. 22
      tests/disas/winch/x64/f32_ge/params.wat
  52. 34
      tests/disas/winch/x64/f32_gt/locals.wat
  53. 22
      tests/disas/winch/x64/f32_gt/params.wat
  54. 35
      tests/disas/winch/x64/f32_le/locals.wat
  55. 22
      tests/disas/winch/x64/f32_le/params.wat
  56. 35
      tests/disas/winch/x64/f32_lt/locals.wat
  57. 22
      tests/disas/winch/x64/f32_lt/params.wat
  58. 49
      tests/disas/winch/x64/f32_max/locals.wat
  59. 36
      tests/disas/winch/x64/f32_max/params.wat
  60. 49
      tests/disas/winch/x64/f32_min/locals.wat
  61. 36
      tests/disas/winch/x64/f32_min/params.wat
  62. 36
      tests/disas/winch/x64/f32_mul/locals.wat
  63. 22
      tests/disas/winch/x64/f32_mul/params.wat
  64. 34
      tests/disas/winch/x64/f32_ne/locals.wat
  65. 22
      tests/disas/winch/x64/f32_ne/params.wat
  66. 14
      tests/disas/winch/x64/f32_nearest/f32_floor_param_sse41.wat
  67. 22
      tests/disas/winch/x64/f32_nearest/f32_nearest_param.wat
  68. 14
      tests/disas/winch/x64/f32_neg/f32_neg_param.wat
  69. 18
      tests/disas/winch/x64/f32_reinterpret_i32/locals.wat
  70. 14
      tests/disas/winch/x64/f32_reinterpret_i32/params.wat
  71. 14
      tests/disas/winch/x64/f32_sqrt/f32_sqrt_param.wat
  72. 36
      tests/disas/winch/x64/f32_sub/locals.wat
  73. 22
      tests/disas/winch/x64/f32_sub/params.wat
  74. 22
      tests/disas/winch/x64/f32_trunc/f32_trunc_param.wat
  75. 14
      tests/disas/winch/x64/f32_trunc/f32_trunc_param_sse41.wat
  76. 18
      tests/disas/winch/x64/f64_abs/f64_abs_param.wat
  77. 24
      tests/disas/winch/x64/f64_ceil/f64_ceil_param.wat
  78. 18
      tests/disas/winch/x64/f64_ceil/f64_ceil_param_sse41.wat
  79. 18
      tests/disas/winch/x64/f64_const/call_id.wat
  80. 18
      tests/disas/winch/x64/f64_const/id.wat
  81. 18
      tests/disas/winch/x64/f64_convert_i32_s/locals.wat
  82. 14
      tests/disas/winch/x64/f64_convert_i32_s/params.wat
  83. 26
      tests/disas/winch/x64/f64_convert_i32_u/locals.wat
  84. 14
      tests/disas/winch/x64/f64_convert_i32_u/params.wat
  85. 18
      tests/disas/winch/x64/f64_convert_i64_s/locals.wat
  86. 18
      tests/disas/winch/x64/f64_convert_i64_s/params.wat
  87. 26
      tests/disas/winch/x64/f64_convert_i64_u/locals.wat
  88. 26
      tests/disas/winch/x64/f64_convert_i64_u/params.wat
  89. 24
      tests/disas/winch/x64/f64_floor/f64_floor_param.wat
  90. 18
      tests/disas/winch/x64/f64_floor/f64_floor_param_sse41.wat
  91. 24
      tests/disas/winch/x64/f64_nearest/f64_nearest_param.wat
  92. 18
      tests/disas/winch/x64/f64_nearest/f64_nearest_param_sse41.wat
  93. 18
      tests/disas/winch/x64/f64_neg/f64_neg_param.wat
  94. 18
      tests/disas/winch/x64/f64_promote_f32/locals.wat
  95. 14
      tests/disas/winch/x64/f64_promote_f32/params.wat
  96. 18
      tests/disas/winch/x64/f64_reinterpret_i64/locals.wat
  97. 18
      tests/disas/winch/x64/f64_reinterpret_i64/params.wat
  98. 18
      tests/disas/winch/x64/f64_sqrt/f64_sqrt_param.wat
  99. 24
      tests/disas/winch/x64/f64_trunc/f64_trunc_param.wat
  100. 18
      tests/disas/winch/x64/f64_trunc/f64_trunc_param_sse41.wat

2
tests/all/func.rs

@ -1966,7 +1966,7 @@ fn typed_v128(config: &mut Config) -> anyhow::Result<()> {
Ok(())
}
#[wasmtime_test(wasm_features(simd))]
#[wasmtime_test]
#[cfg_attr(miri, ignore)]
#[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))]
fn typed_v128_imports(config: &mut Config) -> anyhow::Result<()> {

16
tests/disas/winch/x64/block/get_and_set.wat

@ -14,21 +14,21 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x1c, %r11
;; addq $0x24, %r11
;; cmpq %rsp, %r11
;; ja 0x4e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %r11d
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %r11d
;; subq $4, %rsp
;; movl %r11d, (%rsp)
;; movl (%rsp), %eax
;; addq $4, %rsp
;; movl %eax, 4(%rsp)
;; addq $0x18, %rsp
;; movl %eax, 0xc(%rsp)
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 4e: ud2

16
tests/disas/winch/x64/block/get_and_tee.wat

@ -14,21 +14,21 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x1c, %r11
;; addq $0x24, %r11
;; cmpq %rsp, %r11
;; ja 0x4e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %r11d
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %r11d
;; subq $4, %rsp
;; movl %r11d, (%rsp)
;; movl (%rsp), %eax
;; addq $4, %rsp
;; movl %eax, 4(%rsp)
;; addq $0x18, %rsp
;; movl %eax, 0xc(%rsp)
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 4e: ud2

14
tests/disas/winch/x64/block/with_local_float.wat

@ -13,20 +13,20 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x1c, %r11
;; addq $0x24, %r11
;; cmpq %rsp, %r11
;; ja 0x52
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm15
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm15
;; subq $4, %rsp
;; movss %xmm15, (%rsp)
;; movss (%rsp), %xmm0
;; addq $4, %rsp
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 52: ud2

28
tests/disas/winch/x64/br/as_if_else.wat

@ -15,22 +15,22 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x52
;; ja 0x54
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl %ecx, (%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl %ecx, 8(%rsp)
;; movl 0xc(%rsp), %eax
;; testl %eax, %eax
;; je 0x47
;; 3f: movl (%rsp), %eax
;; jmp 0x4c
;; 47: movl $4, %eax
;; addq $0x18, %rsp
;; je 0x49
;; 40: movl 8(%rsp), %eax
;; jmp 0x4e
;; 49: movl $4, %eax
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 52: ud2
;; 54: ud2

28
tests/disas/winch/x64/br/as_if_then.wat

@ -15,22 +15,22 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x52
;; ja 0x54
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl %ecx, (%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl %ecx, 8(%rsp)
;; movl 0xc(%rsp), %eax
;; testl %eax, %eax
;; je 0x49
;; 3f: movl $3, %eax
;; jmp 0x4c
;; 49: movl (%rsp), %eax
;; addq $0x18, %rsp
;; je 0x4a
;; 40: movl $3, %eax
;; jmp 0x4e
;; 4a: movl 8(%rsp), %eax
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 52: ud2
;; 54: ud2

22
tests/disas/winch/x64/br/br_jump.wat

@ -18,23 +18,23 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x20, %r11
;; addq $0x28, %r11
;; cmpq %rsp, %r11
;; ja 0x5d
;; ja 0x5e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movl 4(%rsp), %r11d
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movl 0xc(%rsp), %r11d
;; subq $4, %rsp
;; movl %r11d, (%rsp)
;; movl 8(%rsp), %r11d
;; movl 0x10(%rsp), %r11d
;; subq $4, %rsp
;; movl %r11d, (%rsp)
;; addq $4, %rsp
;; jmp 0x41
;; 57: addq $0x18, %rsp
;; jmp 0x42
;; 58: addq $0x20, %rsp
;; popq %rbp
;; retq
;; 5d: ud2
;; 5e: ud2

26
tests/disas/winch/x64/br_if/as_block_last.wat

@ -30,28 +30,24 @@
;; movq (%r11), %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0xb2
;; ja 0xa2
;; 5b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; subq $8, %rsp
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movq %r14, %rdi
;; movq %r14, %rsi
;; callq 0
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; subq $8, %rsp
;; movq 0x18(%rsp), %r14
;; movq %r14, %rdi
;; movq %r14, %rsi
;; callq 0
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; movl 4(%rsp), %eax
;; movq 0x18(%rsp), %r14
;; movl 0xc(%rsp), %eax
;; testl %eax, %eax
;; jne 0xac
;; ac: addq $0x18, %rsp
;; jne 0x9c
;; 9c: addq $0x20, %rsp
;; popq %rbp
;; retq
;; b2: ud2
;; a2: ud2

26
tests/disas/winch/x64/br_if/as_block_last_value.wat

@ -32,29 +32,25 @@
;; movq (%r11), %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0xb7
;; ja 0xa7
;; 5b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; subq $8, %rsp
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movq %r14, %rdi
;; movq %r14, %rsi
;; callq 0
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; subq $8, %rsp
;; movq 0x18(%rsp), %r14
;; movq %r14, %rdi
;; movq %r14, %rsi
;; callq 0
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; movl 4(%rsp), %ecx
;; movq 0x18(%rsp), %r14
;; movl 0xc(%rsp), %ecx
;; movl $0xb, %eax
;; testl %ecx, %ecx
;; jne 0xb1
;; b1: addq $0x18, %rsp
;; jne 0xa1
;; a1: addq $0x20, %rsp
;; popq %rbp
;; retq
;; b7: ud2
;; a7: ud2

14
tests/disas/winch/x64/br_if/as_if_cond.wat

@ -16,15 +16,15 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x5e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %ecx
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %ecx
;; movl $1, %eax
;; testl %ecx, %ecx
;; jne 0x58
@ -33,7 +33,7 @@
;; 49: movl $2, %eax
;; jmp 0x58
;; 53: movl $3, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 5e: ud2

32
tests/disas/winch/x64/br_if/as_if_else.wat

@ -33,27 +33,25 @@
;; movq (%r11), %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0xad
;; ja 0xa7
;; 5b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl %ecx, (%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl %ecx, 8(%rsp)
;; movl 0xc(%rsp), %eax
;; testl %eax, %eax
;; je 0x9c
;; 7f: subq $8, %rsp
;; movq %r14, %rdi
;; je 0x95
;; 80: movq %r14, %rdi
;; movq %r14, %rsi
;; callq 0
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; jmp 0xa7
;; 9c: movl (%rsp), %eax
;; movq 0x18(%rsp), %r14
;; jmp 0xa1
;; 95: movl 8(%rsp), %eax
;; testl %eax, %eax
;; jne 0xa7
;; a7: addq $0x18, %rsp
;; jne 0xa1
;; a1: addq $0x20, %rsp
;; popq %rbp
;; retq
;; ad: ud2
;; a7: ud2

32
tests/disas/winch/x64/br_if/as_if_then.wat

@ -32,27 +32,25 @@
;; movq (%r11), %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0xad
;; ja 0xa7
;; 5b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl %ecx, (%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl %ecx, 8(%rsp)
;; movl 0xc(%rsp), %eax
;; testl %eax, %eax
;; je 0x8f
;; 7f: movl (%rsp), %eax
;; je 0x91
;; 80: movl 8(%rsp), %eax
;; testl %eax, %eax
;; jne 0xa7
;; jmp 0xa7
;; 8f: subq $8, %rsp
;; movq %r14, %rdi
;; jne 0xa1
;; jmp 0xa1
;; 91: movq %r14, %rdi
;; movq %r14, %rsi
;; callq 0
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; addq $0x18, %rsp
;; movq 0x18(%rsp), %r14
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; ad: ud2
;; a7: ud2

24
tests/disas/winch/x64/br_if/as_local_set_value.wat

@ -14,23 +14,23 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x5a
;; ja 0x5b
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl $0, (%rsp)
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl $0, 8(%rsp)
;; xorl %r11d, %r11d
;; movl 4(%rsp), %ecx
;; movl 0xc(%rsp), %ecx
;; movl $0x11, %eax
;; testl %ecx, %ecx
;; jne 0x54
;; 4b: movl %eax, 4(%rsp)
;; jne 0x55
;; 4c: movl %eax, 0xc(%rsp)
;; movl $0xffffffff, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 5a: ud2
;; 5b: ud2

22
tests/disas/winch/x64/br_if/as_loop_last.wat

@ -30,22 +30,20 @@
;; movq (%r11), %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x9a
;; ja 0x92
;; 5b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; subq $8, %rsp
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movq %r14, %rdi
;; movq %r14, %rsi
;; callq 0
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; movl 4(%rsp), %eax
;; movq 0x18(%rsp), %r14
;; movl 0xc(%rsp), %eax
;; testl %eax, %eax
;; jne 0x94
;; 94: addq $0x18, %rsp
;; jne 0x8c
;; 8c: addq $0x20, %rsp
;; popq %rbp
;; retq
;; 9a: ud2
;; 92: ud2

68
tests/disas/winch/x64/br_if/save_state_before_br_emission.wat

@ -42,64 +42,62 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x50, %r11
;; addq $0x58, %r11
;; cmpq %rsp, %r11
;; ja 0x101
;; ja 0x106
;; 1b: movq %rdi, %r14
;; subq $0x38, %rsp
;; movq %rdi, 0x30(%rsp)
;; movq %rsi, 0x28(%rsp)
;; movsd %xmm0, 0x20(%rsp)
;; movsd %xmm1, 0x18(%rsp)
;; movsd %xmm2, 0x10(%rsp)
;; movsd %xmm3, 8(%rsp)
;; movq %rdx, (%rsp)
;; subq $0x40, %rsp
;; movq %rdi, 0x38(%rsp)
;; movq %rsi, 0x30(%rsp)
;; movsd %xmm0, 0x28(%rsp)
;; movsd %xmm1, 0x20(%rsp)
;; movsd %xmm2, 0x18(%rsp)
;; movsd %xmm3, 0x10(%rsp)
;; movq %rdx, 8(%rsp)
;; movl $0, %eax
;; movsd 0x20(%rsp), %xmm15
;; subq $8, %rsp
;; movsd %xmm15, (%rsp)
;; movsd 0x28(%rsp), %xmm15
;; subq $8, %rsp
;; movsd %xmm15, (%rsp)
;; movsd 0x30(%rsp), %xmm15
;; subq $8, %rsp
;; movsd %xmm15, (%rsp)
;; movsd 0x38(%rsp), %xmm15
;; subq $8, %rsp
;; movsd %xmm15, (%rsp)
;; movsd (%rsp), %xmm0
;; addq $8, %rsp
;; subq $4, %rsp
;; movss 0x72(%rip), %xmm15
;; movss 0x71(%rip), %xmm15
;; movss %xmm15, (%rsp)
;; testl %eax, %eax
;; je 0xb6
;; a4: movl (%rsp), %r11d
;; je 0xb7
;; a5: movl (%rsp), %r11d
;; movl %r11d, 0x10(%rsp)
;; addq $0x10, %rsp
;; jmp 0xeb
;; b6: addq $4, %rsp
;; jmp 0xec
;; b7: addq $4, %rsp
;; movsd (%rsp), %xmm0
;; addq $8, %rsp
;; movq %xmm0, %rax
;; xorq $0, %rax
;; addq $8, %rsp
;; movsd 0x38(%rip), %xmm0
;; movsd 0x37(%rip), %xmm0
;; subq $4, %rsp
;; movss 0x23(%rip), %xmm15
;; movss 0x22(%rip), %xmm15
;; movss %xmm15, (%rsp)
;; movq 4(%rsp), %rax
;; movl (%rsp), %r11d
;; movq 0xc(%rsp), %rax
;; movss (%rsp), %xmm15
;; addq $4, %rsp
;; movl %r11d, (%rax)
;; addq $0x38, %rsp
;; movss %xmm15, (%rax)
;; addq $0x40, %rsp
;; popq %rbp
;; retq
;; 101: ud2
;; 103: addb %al, (%rax)
;; 105: addb %al, (%rax)
;; 107: addb %al, (%rax)
;; 109: addb %al, (%rax)
;; 10b: addb %al, (%rax)
;; 10d: addb %al, (%rax)
;; 10f: addb %al, (%rax)
;; 111: addb %al, (%rax)
;; 113: addb %al, (%rax)
;; 115: addb %al, (%rax)
;; 106: ud2
;; 108: addb %al, (%rax)
;; 10a: addb %al, (%rax)
;; 10c: addb %al, (%rax)
;; 10e: addb %al, (%rax)
;; 110: addb %al, (%rax)
;; 112: addb %al, (%rax)
;; 114: addb %al, (%rax)
;; 116: addb %al, (%rax)

14
tests/disas/winch/x64/br_table/large.wat

@ -743,15 +743,15 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x18104
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %eax
;; movl $0x6027, %ecx
;; cmpl %eax, %ecx
;; cmovbl %ecx, %eax
@ -25378,7 +25378,7 @@
;; movl $0, %eax
;; jmp 0x180fe
;; 180f9: movl $1, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 18104: ud2

12
tests/disas/winch/x64/br_table/nested_br_table_loop_block.wat

@ -23,15 +23,15 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x9f
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %eax
;; movl $2, %ecx
;; cmpl %eax, %ecx
;; cmovbl %ecx, %eax

14
tests/disas/winch/x64/br_table/stack_handling.wat

@ -16,15 +16,15 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x1c, %r11
;; addq $0x24, %r11
;; cmpq %rsp, %r11
;; ja 0x81
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %r11d
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %r11d
;; subq $4, %rsp
;; movl %r11d, (%rsp)
;; movl $0x30343439, %eax
@ -45,7 +45,7 @@
;; 6e: addq $4, %rsp
;; jmp 0x7b
;; 77: addq $4, %rsp
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 81: ud2

44
tests/disas/winch/x64/call/params.wat

@ -41,25 +41,25 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x50, %r11
;; addq $0x60, %r11
;; cmpq %rsp, %r11
;; ja 0x152
;; ja 0x154
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl %ecx, (%rsp)
;; movl 4(%rsp), %ecx
;; movl (%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl %ecx, 8(%rsp)
;; movl 0xc(%rsp), %ecx
;; movl 8(%rsp), %eax
;; xorl %edx, %edx
;; divl %ecx
;; subq $4, %rsp
;; movl %eax, (%rsp)
;; subq $0x34, %rsp
;; subq $0x3c, %rsp
;; movq %r14, %rdi
;; movq %r14, %rsi
;; movl 0x34(%rsp), %edx
;; movl 0x3c(%rsp), %edx
;; movl $1, %ecx
;; movl $2, %r8d
;; movl $3, %r9d
@ -74,15 +74,15 @@
;; movl $8, %r11d
;; movl %r11d, 0x20(%rsp)
;; callq 0x160
;; addq $0x34, %rsp
;; addq $0x3c, %rsp
;; addq $4, %rsp
;; movq 0x10(%rsp), %r14
;; movq 0x18(%rsp), %r14
;; subq $4, %rsp
;; movl %eax, (%rsp)
;; movl 4(%rsp), %r11d
;; movl 0xc(%rsp), %r11d
;; subq $4, %rsp
;; movl %r11d, (%rsp)
;; movl 0xc(%rsp), %r11d
;; movl 0x14(%rsp), %r11d
;; subq $4, %rsp
;; movl %r11d, (%rsp)
;; movl (%rsp), %ecx
@ -93,11 +93,11 @@
;; divl %ecx
;; subq $4, %rsp
;; movl %eax, (%rsp)
;; subq $0x30, %rsp
;; subq $0x38, %rsp
;; movq %r14, %rdi
;; movq %r14, %rsi
;; movl 0x34(%rsp), %edx
;; movl 0x30(%rsp), %ecx
;; movl 0x3c(%rsp), %edx
;; movl 0x38(%rsp), %ecx
;; movl $2, %r8d
;; movl $3, %r9d
;; movl $4, %r11d
@ -111,13 +111,13 @@
;; movl $8, %r11d
;; movl %r11d, 0x20(%rsp)
;; callq 0x160
;; addq $0x30, %rsp
;; addq $0x38, %rsp
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; addq $0x18, %rsp
;; movq 0x18(%rsp), %r14
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 152: ud2
;; 154: ud2
;;
;; wasm[0]::function[1]::add:
;; pushq %rbp

40
tests/disas/winch/x64/call/recursive.wat

@ -28,51 +28,53 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x20, %r11
;; addq $0x30, %r11
;; cmpq %rsp, %r11
;; ja 0xbc
;; ja 0xc5
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %eax
;; cmpl $1, %eax
;; movl $0, %eax
;; setle %al
;; testl %eax, %eax
;; je 0x51
;; 48: movl 4(%rsp), %eax
;; jmp 0xb6
;; 51: movl 4(%rsp), %eax
;; 48: movl 0xc(%rsp), %eax
;; jmp 0xbf
;; 51: movl 0xc(%rsp), %eax
;; subl $1, %eax
;; subq $4, %rsp
;; movl %eax, (%rsp)
;; subq $4, %rsp
;; subq $0xc, %rsp
;; movq %r14, %rdi
;; movq %r14, %rsi
;; movl 4(%rsp), %edx
;; movl 0xc(%rsp), %edx
;; callq 0
;; addq $0xc, %rsp
;; addq $4, %rsp
;; addq $4, %rsp
;; movq 0x10(%rsp), %r14
;; movl 4(%rsp), %ecx
;; movq 0x18(%rsp), %r14
;; movl 0xc(%rsp), %ecx
;; subl $2, %ecx
;; subq $4, %rsp
;; movl %eax, (%rsp)
;; subq $4, %rsp
;; movl %ecx, (%rsp)
;; subq $8, %rsp
;; movq %r14, %rdi
;; movq %r14, %rsi
;; movl (%rsp), %edx
;; movl 8(%rsp), %edx
;; callq 0
;; addq $8, %rsp
;; addq $4, %rsp
;; movq 0x14(%rsp), %r14
;; movq 0x1c(%rsp), %r14
;; movl (%rsp), %ecx
;; addq $4, %rsp
;; addl %eax, %ecx
;; movl %ecx, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; bc: ud2
;; c5: ud2

36
tests/disas/winch/x64/call/reg_on_stack.wat

@ -16,31 +16,33 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x24, %r11
;; addq $0x30, %r11
;; cmpq %rsp, %r11
;; ja 0xa4
;; ja 0xac
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %r11d
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %r11d
;; subq $4, %rsp
;; movl %r11d, (%rsp)
;; subq $4, %rsp
;; subq $0xc, %rsp
;; movq %r14, %rdi
;; movq %r14, %rsi
;; movl $1, %edx
;; callq 0
;; addq $4, %rsp
;; movq 0x14(%rsp), %r14
;; addq $0xc, %rsp
;; movq 0x1c(%rsp), %r14
;; subq $4, %rsp
;; movl %eax, (%rsp)
;; subq $8, %rsp
;; movq %r14, %rdi
;; movq %r14, %rsi
;; movl $1, %edx
;; callq 0
;; movq 0x18(%rsp), %r14
;; addq $8, %rsp
;; movq 0x20(%rsp), %r14
;; subq $4, %rsp
;; movl %eax, (%rsp)
;; movl (%rsp), %ecx
@ -48,11 +50,11 @@
;; movl (%rsp), %eax
;; addq $4, %rsp
;; testl %ecx, %ecx
;; je 0x9c
;; 93: addq $4, %rsp
;; jmp 0x9e
;; 9c: ud2
;; addq $0x18, %rsp
;; je 0xa4
;; 9b: addq $4, %rsp
;; jmp 0xa6
;; a4: ud2
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; a4: ud2
;; ac: ud2

46
tests/disas/winch/x64/call/simple.wat

@ -19,27 +19,25 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x20, %r11
;; addq $0x28, %r11
;; cmpq %rsp, %r11
;; ja 0x8b
;; ja 0x84
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; subq $8, %rsp
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movq %r14, %rdi
;; movq %r14, %rsi
;; movl $0x14, %edx
;; movl $0x50, %ecx
;; callq 0x90
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; movq 0x18(%rsp), %r14
;; movl $2, %ecx
;; movl %ecx, 4(%rsp)
;; movl %ecx, 0xc(%rsp)
;; subq $4, %rsp
;; movl %eax, (%rsp)
;; movl 8(%rsp), %r11d
;; movl 0x10(%rsp), %r11d
;; subq $4, %rsp
;; movl %r11d, (%rsp)
;; movl (%rsp), %ecx
@ -48,30 +46,30 @@
;; addq $4, %rsp
;; xorl %edx, %edx
;; divl %ecx
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 8b: ud2
;; 84: ud2
;;
;; wasm[0]::function[1]::product:
;; pushq %rbp
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0xd5
;; ja 0xd7
;; ab: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl %ecx, (%rsp)
;; movl (%rsp), %eax
;; movl 4(%rsp), %ecx
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl %ecx, 8(%rsp)
;; movl 8(%rsp), %eax
;; movl 0xc(%rsp), %ecx
;; imull %eax, %ecx
;; movl %ecx, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; d5: ud2
;; d7: ud2

102
tests/disas/winch/x64/call_indirect/call_indirect.wat

@ -37,21 +37,21 @@
;; movq (%r11), %r11
;; addq $0x30, %r11
;; cmpq %rsp, %r11
;; ja 0x1c8
;; ja 0x1da
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %eax
;; cmpl $1, %eax
;; movl $0, %eax
;; setbe %al
;; testl %eax, %eax
;; je 0x52
;; 48: movl $1, %eax
;; jmp 0x1c2
;; 52: movl 4(%rsp), %eax
;; jmp 0x1d4
;; 52: movl 0xc(%rsp), %eax
;; subl $2, %eax
;; subq $4, %rsp
;; movl %eax, (%rsp)
@ -59,7 +59,7 @@
;; movq %r14, %rdx
;; movl 0x60(%rdx), %ebx
;; cmpl %ebx, %ecx
;; jae 0x1ca
;; jae 0x1dc
;; 73: movl %ecx, %r11d
;; imulq $8, %r11, %r11
;; movq 0x58(%rdx), %rdx
@ -69,37 +69,39 @@
;; cmovaeq %rsi, %rdx
;; movq (%rdx), %rax
;; testq %rax, %rax
;; jne 0xbb
;; jne 0xc4
;; 96: subq $4, %rsp
;; movl %ecx, (%rsp)
;; subq $8, %rsp
;; movq %r14, %rdi
;; movl $0, %esi
;; movl (%rsp), %edx
;; callq 0x2dd
;; movl 8(%rsp), %edx
;; callq 0x2ef
;; addq $8, %rsp
;; addq $4, %rsp
;; movq 0x14(%rsp), %r14
;; jmp 0xbf
;; bb: andq $0xfffffffffffffffe, %rax
;; movq 0x1c(%rsp), %r14
;; jmp 0xc8
;; c4: andq $0xfffffffffffffffe, %rax
;; testq %rax, %rax
;; je 0x1cc
;; c8: movq 0x50(%r14), %r11
;; je 0x1de
;; d1: movq 0x50(%r14), %r11
;; movl (%r11), %ecx
;; movl 0x10(%rax), %edx
;; cmpl %edx, %ecx
;; jne 0x1ce
;; da: pushq %rax
;; jne 0x1e0
;; e3: pushq %rax
;; popq %rcx
;; movq 0x18(%rcx), %r8
;; movq 8(%rcx), %rbx
;; subq $4, %rsp
;; subq $0xc, %rsp
;; movq %r8, %rdi
;; movq %r14, %rsi
;; movl 4(%rsp), %edx
;; movl 0xc(%rsp), %edx
;; callq *%rbx
;; addq $0xc, %rsp
;; addq $4, %rsp
;; addq $4, %rsp
;; movq 0x10(%rsp), %r14
;; movl 4(%rsp), %ecx
;; movq 0x18(%rsp), %r14
;; movl 0xc(%rsp), %ecx
;; subl $1, %ecx
;; subq $4, %rsp
;; movl %eax, (%rsp)
@ -109,8 +111,8 @@
;; movq %r14, %rdx
;; movl 0x60(%rdx), %ebx
;; cmpl %ebx, %ecx
;; jae 0x1d0
;; 129: movl %ecx, %r11d
;; jae 0x1e2
;; 132: movl %ecx, %r11d
;; imulq $8, %r11, %r11
;; movq 0x58(%rdx), %rdx
;; movq %rdx, %rsi
@ -119,47 +121,49 @@
;; cmovaeq %rsi, %rdx
;; movq (%rdx), %rax
;; testq %rax, %rax
;; jne 0x17a
;; 14c: subq $4, %rsp
;; jne 0x183
;; 155: subq $4, %rsp
;; movl %ecx, (%rsp)
;; subq $0xc, %rsp
;; subq $4, %rsp
;; movq %r14, %rdi
;; movl $0, %esi
;; movl 0xc(%rsp), %edx
;; callq 0x2dd
;; addq $0xc, %rsp
;; movl 4(%rsp), %edx
;; callq 0x2ef
;; addq $4, %rsp
;; movq 0x18(%rsp), %r14
;; jmp 0x17e
;; 17a: andq $0xfffffffffffffffe, %rax
;; addq $4, %rsp
;; movq 0x20(%rsp), %r14
;; jmp 0x187
;; 183: andq $0xfffffffffffffffe, %rax
;; testq %rax, %rax
;; je 0x1d2
;; 187: movq 0x50(%r14), %r11
;; je 0x1e4
;; 190: movq 0x50(%r14), %r11
;; movl (%r11), %ecx
;; movl 0x10(%rax), %edx
;; cmpl %edx, %ecx
;; jne 0x1d4
;; 199: pushq %rax
;; jne 0x1e6
;; 1a2: pushq %rax
;; popq %rcx
;; movq 0x18(%rcx), %r8
;; movq 8(%rcx), %rbx
;; subq $8, %rsp
;; movq %r8, %rdi
;; movq %r14, %rsi
;; movl (%rsp), %edx
;; movl 8(%rsp), %edx
;; callq *%rbx
;; addq $8, %rsp
;; addq $4, %rsp
;; movq 0x14(%rsp), %r14
;; movq 0x1c(%rsp), %r14
;; movl (%rsp), %ecx
;; addq $4, %rsp
;; addl %eax, %ecx
;; movl %ecx, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 1c8: ud2
;; 1ca: ud2
;; 1cc: ud2
;; 1ce: ud2
;; 1d0: ud2
;; 1d2: ud2
;; 1d4: ud2
;; 1da: ud2
;; 1dc: ud2
;; 1de: ud2
;; 1e0: ud2
;; 1e2: ud2
;; 1e4: ud2
;; 1e6: ud2

72
tests/disas/winch/x64/call_indirect/local_arg.wat

@ -22,15 +22,15 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x36
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; addq $0x18, %rsp
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 36: ud2
@ -40,23 +40,23 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x20, %r11
;; addq $0x30, %r11
;; cmpq %rsp, %r11
;; ja 0x126
;; ja 0x130
;; 5b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movl 4(%rsp), %r11d
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movl 0xc(%rsp), %r11d
;; subq $4, %rsp
;; movl %r11d, (%rsp)
;; movl $0, %ecx
;; movq %r14, %rdx
;; movl 0x60(%rdx), %ebx
;; cmpl %ebx, %ecx
;; jae 0x128
;; 94: movl %ecx, %r11d
;; jae 0x132
;; 95: movl %ecx, %r11d
;; imulq $8, %r11, %r11
;; movq 0x58(%rdx), %rdx
;; movq %rdx, %rsi
@ -65,38 +65,40 @@
;; cmovaeq %rsi, %rdx
;; movq (%rdx), %rax
;; testq %rax, %rax
;; jne 0xdc
;; b7: subq $4, %rsp
;; jne 0xe6
;; b8: subq $4, %rsp
;; movl %ecx, (%rsp)
;; subq $8, %rsp
;; movq %r14, %rdi
;; movl $0, %esi
;; movl (%rsp), %edx
;; callq 0x303
;; movl 8(%rsp), %edx
;; callq 0x30d
;; addq $8, %rsp
;; addq $4, %rsp
;; movq 0x14(%rsp), %r14
;; jmp 0xe0
;; dc: andq $0xfffffffffffffffe, %rax
;; movq 0x1c(%rsp), %r14
;; jmp 0xea
;; e6: andq $0xfffffffffffffffe, %rax
;; testq %rax, %rax
;; je 0x12a
;; e9: movq 0x50(%r14), %r11
;; je 0x134
;; f3: movq 0x50(%r14), %r11
;; movl (%r11), %ecx
;; movl 0x10(%rax), %edx
;; cmpl %edx, %ecx
;; jne 0x12c
;; fb: movq 0x18(%rax), %rbx
;; jne 0x136
;; 105: movq 0x18(%rax), %rbx
;; movq 8(%rax), %rcx
;; subq $4, %rsp
;; subq $0xc, %rsp
;; movq %rbx, %rdi
;; movq %r14, %rsi
;; movl 4(%rsp), %edx
;; movl 0xc(%rsp), %edx
;; callq *%rcx
;; addq $0xc, %rsp
;; addq $4, %rsp
;; addq $4, %rsp
;; movq 0x10(%rsp), %r14
;; addq $0x18, %rsp
;; movq 0x18(%rsp), %r14
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 126: ud2
;; 128: ud2
;; 12a: ud2
;; 12c: ud2
;; 130: ud2
;; 132: ud2
;; 134: ud2
;; 136: ud2

14
tests/disas/winch/x64/f32_abs/f32_abs_param.wat

@ -12,19 +12,19 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x4d
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm0
;; movl $0x7fffffff, %r11d
;; movd %r11d, %xmm15
;; andps %xmm15, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 4d: ud2

36
tests/disas/winch/x64/f32_add/locals.wat

@ -22,28 +22,26 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x67
;; ja 0x6a
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x34(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x2e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x33(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x2d(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; addss %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 67: ud2
;; 69: addb %al, (%rax)
;; 6b: addb %al, (%rax)
;; 6d: addb %al, (%rax)
;; 6f: addb %cl, %ch
;; 71: int3
;; 6a: ud2
;; 6c: addb %al, (%rax)
;; 6e: addb %al, (%rax)
;; 70: int $0xcc

22
tests/disas/winch/x64/f32_add/params.wat

@ -13,20 +13,20 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x4f
;; ja 0x51
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; addss %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 4f: ud2
;; 51: ud2

22
tests/disas/winch/x64/f32_ceil/f32_ceil_param.wat

@ -12,25 +12,25 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x20, %r11
;; addq $0x30, %r11
;; cmpq %rsp, %r11
;; ja 0x6d
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm15
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm15
;; subq $4, %rsp
;; movss %xmm15, (%rsp)
;; subq $4, %rsp
;; movss 4(%rsp), %xmm0
;; subq $0xc, %rsp
;; movss 0xc(%rsp), %xmm0
;; movabsq $0, %r11
;; callq *%r11
;; addq $0xc, %rsp
;; addq $4, %rsp
;; addq $4, %rsp
;; movq 0x10(%rsp), %r14
;; addq $0x18, %rsp
;; movq 0x18(%rsp), %r14
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 6d: ud2

14
tests/disas/winch/x64/f32_ceil/f32_ceil_param_sse41.wat

@ -13,17 +13,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x44
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm0
;; roundss $2, %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 44: ud2

14
tests/disas/winch/x64/f32_const/call_id.wat

@ -10,16 +10,16 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x3e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm0
;; addq $0x18, %rsp
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm0
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 3e: ud2

14
tests/disas/winch/x64/f32_const/id.wat

@ -9,16 +9,16 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x3e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm0
;; addq $0x18, %rsp
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm0
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 3e: ud2

18
tests/disas/winch/x64/f32_convert_i32_s/locals.wat

@ -14,17 +14,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x42
;; ja 0x43
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movl 0xc(%rsp), %eax
;; cvtsi2ssl %eax, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 42: ud2
;; 43: ud2

14
tests/disas/winch/x64/f32_convert_i32_s/params.wat

@ -12,17 +12,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x3e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %eax
;; cvtsi2ssl %eax, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 3e: ud2

26
tests/disas/winch/x64/f32_convert_i32_u/locals.wat

@ -14,28 +14,28 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x6e
;; ja 0x6f
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movl 4(%rsp), %ecx
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movl 0xc(%rsp), %ecx
;; movl %ecx, %ecx
;; cmpq $0, %rcx
;; jl 0x4e
;; 44: cvtsi2ssq %rcx, %xmm0
;; jmp 0x68
;; 4e: movq %rcx, %r11
;; jl 0x4f
;; 45: cvtsi2ssq %rcx, %xmm0
;; jmp 0x69
;; 4f: movq %rcx, %r11
;; shrq $1, %r11
;; movq %rcx, %rax
;; andq $1, %rax
;; orq %r11, %rax
;; cvtsi2ssq %rax, %xmm0
;; addss %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 6e: ud2
;; 6f: ud2

14
tests/disas/winch/x64/f32_convert_i32_u/params.wat

@ -12,15 +12,15 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x6a
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %ecx
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %ecx
;; movl %ecx, %ecx
;; cmpq $0, %rcx
;; jl 0x4a
@ -33,7 +33,7 @@
;; orq %r11, %rax
;; cvtsi2ssq %rax, %xmm0
;; addss %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 6a: ud2

18
tests/disas/winch/x64/f32_convert_i64_s/locals.wat

@ -14,17 +14,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x43
;; ja 0x45
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movq (%rsp), %rax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movq 8(%rsp), %rax
;; cvtsi2ssq %rax, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 43: ud2
;; 45: ud2

18
tests/disas/winch/x64/f32_convert_i64_s/params.wat

@ -12,17 +12,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x3f
;; ja 0x41
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq %rdx, (%rsp)
;; movq (%rsp), %rax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq %rdx, 8(%rsp)
;; movq 8(%rsp), %rax
;; cvtsi2ssq %rax, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 3f: ud2
;; 41: ud2

26
tests/disas/winch/x64/f32_convert_i64_u/locals.wat

@ -14,27 +14,27 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x6c
;; ja 0x6e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movq (%rsp), %rcx
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movq 8(%rsp), %rcx
;; cmpq $0, %rcx
;; jl 0x4c
;; 42: cvtsi2ssq %rcx, %xmm0
;; jmp 0x66
;; 4c: movq %rcx, %r11
;; jl 0x4e
;; 44: cvtsi2ssq %rcx, %xmm0
;; jmp 0x68
;; 4e: movq %rcx, %r11
;; shrq $1, %r11
;; movq %rcx, %rax
;; andq $1, %rax
;; orq %r11, %rax
;; cvtsi2ssq %rax, %xmm0
;; addss %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 6c: ud2
;; 6e: ud2

26
tests/disas/winch/x64/f32_convert_i64_u/params.wat

@ -12,27 +12,27 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x68
;; ja 0x6a
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq %rdx, (%rsp)
;; movq (%rsp), %rcx
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq %rdx, 8(%rsp)
;; movq 8(%rsp), %rcx
;; cmpq $0, %rcx
;; jl 0x48
;; 3e: cvtsi2ssq %rcx, %xmm0
;; jmp 0x62
;; 48: movq %rcx, %r11
;; jl 0x4a
;; 40: cvtsi2ssq %rcx, %xmm0
;; jmp 0x64
;; 4a: movq %rcx, %r11
;; shrq $1, %r11
;; movq %rcx, %rax
;; andq $1, %rax
;; orq %r11, %rax
;; cvtsi2ssq %rax, %xmm0
;; addss %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 68: ud2
;; 6a: ud2

34
tests/disas/winch/x64/f32_copysign/locals.wat

@ -22,20 +22,20 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x7d
;; ja 0x80
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x44(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x3e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x4b(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x45(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; movl $0x80000000, %r11d
;; movd %r11d, %xmm15
;; andps %xmm15, %xmm0
@ -43,9 +43,11 @@
;; movaps %xmm15, %xmm1
;; orps %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 7d: ud2
;; 7f: addb %cl, %ch
;; 81: int3
;; 80: ud2
;; 82: addb %al, (%rax)
;; 84: addb %al, (%rax)
;; 86: addb %al, (%rax)
;; 88: int $0xcc

22
tests/disas/winch/x64/f32_copysign/params.wat

@ -13,17 +13,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x65
;; ja 0x67
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; movl $0x80000000, %r11d
;; movd %r11d, %xmm15
;; andps %xmm15, %xmm0
@ -31,7 +31,7 @@
;; movaps %xmm15, %xmm1
;; orps %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 65: ud2
;; 67: ud2

18
tests/disas/winch/x64/f32_demote_f64/locals.wat

@ -14,17 +14,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x43
;; ja 0x45
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movsd 8(%rsp), %xmm0
;; cvtsd2ss %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 43: ud2
;; 45: ud2

18
tests/disas/winch/x64/f32_demote_f64/params.wat

@ -12,17 +12,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x40
;; ja 0x42
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm0
;; cvtsd2ss %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 40: ud2
;; 42: ud2

36
tests/disas/winch/x64/f32_div/locals.wat

@ -22,28 +22,26 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x67
;; ja 0x6a
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x34(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x2e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x33(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x2d(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; divss %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 67: ud2
;; 69: addb %al, (%rax)
;; 6b: addb %al, (%rax)
;; 6d: addb %al, (%rax)
;; 6f: addb %cl, %ch
;; 71: int3
;; 6a: ud2
;; 6c: addb %al, (%rax)
;; 6e: addb %al, (%rax)
;; 70: int $0xcc

22
tests/disas/winch/x64/f32_div/params.wat

@ -13,20 +13,20 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x4f
;; ja 0x51
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; divss %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 4f: ud2
;; 51: ud2

34
tests/disas/winch/x64/f32_eq/locals.wat

@ -22,31 +22,29 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x79
;; ja 0x7c
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x44(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x3e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x43(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x3d(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm0, %xmm1
;; movl $0, %eax
;; sete %al
;; movl $0, %r11d
;; setnp %r11b
;; andl %r11d, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 79: ud2
;; 7b: addb %al, (%rax)
;; 7d: addb %al, (%rax)
;; 7f: addb %cl, %ch
;; 81: int3
;; 7c: ud2
;; 7e: addb %al, (%rax)
;; 80: int $0xcc

22
tests/disas/winch/x64/f32_eq/params.wat

@ -13,24 +13,24 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x61
;; ja 0x63
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm0, %xmm1
;; movl $0, %eax
;; sete %al
;; movl $0, %r11d
;; setnp %r11b
;; andl %r11d, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 61: ud2
;; 63: ud2

22
tests/disas/winch/x64/f32_floor/f32_floor_param.wat

@ -12,25 +12,25 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x20, %r11
;; addq $0x30, %r11
;; cmpq %rsp, %r11
;; ja 0x6d
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm15
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm15
;; subq $4, %rsp
;; movss %xmm15, (%rsp)
;; subq $4, %rsp
;; movss 4(%rsp), %xmm0
;; subq $0xc, %rsp
;; movss 0xc(%rsp), %xmm0
;; movabsq $0, %r11
;; callq *%r11
;; addq $0xc, %rsp
;; addq $4, %rsp
;; addq $4, %rsp
;; movq 0x10(%rsp), %r14
;; addq $0x18, %rsp
;; movq 0x18(%rsp), %r14
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 6d: ud2

14
tests/disas/winch/x64/f32_floor/f32_floor_param_sse41.wat

@ -13,17 +13,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x44
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm0
;; roundss $1, %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 44: ud2

34
tests/disas/winch/x64/f32_ge/locals.wat

@ -22,31 +22,29 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x79
;; ja 0x7c
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x44(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x3e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x43(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x3d(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm0, %xmm1
;; movl $0, %eax
;; setae %al
;; movl $0, %r11d
;; setnp %r11b
;; andl %r11d, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 79: ud2
;; 7b: addb %al, (%rax)
;; 7d: addb %al, (%rax)
;; 7f: addb %cl, %ch
;; 81: int3
;; 7c: ud2
;; 7e: addb %al, (%rax)
;; 80: int $0xcc

22
tests/disas/winch/x64/f32_ge/params.wat

@ -13,24 +13,24 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x61
;; ja 0x63
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm0, %xmm1
;; movl $0, %eax
;; setae %al
;; movl $0, %r11d
;; setnp %r11b
;; andl %r11d, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 61: ud2
;; 63: ud2

34
tests/disas/winch/x64/f32_gt/locals.wat

@ -22,31 +22,29 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x79
;; ja 0x7c
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x44(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x3e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x43(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x3d(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm0, %xmm1
;; movl $0, %eax
;; seta %al
;; movl $0, %r11d
;; setnp %r11b
;; andl %r11d, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 79: ud2
;; 7b: addb %al, (%rax)
;; 7d: addb %al, (%rax)
;; 7f: addb %cl, %ch
;; 81: int3
;; 7c: ud2
;; 7e: addb %al, (%rax)
;; 80: int $0xcc

22
tests/disas/winch/x64/f32_gt/params.wat

@ -13,24 +13,24 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x61
;; ja 0x63
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm0, %xmm1
;; movl $0, %eax
;; seta %al
;; movl $0, %r11d
;; setnp %r11b
;; andl %r11d, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 61: ud2
;; 63: ud2

35
tests/disas/winch/x64/f32_le/locals.wat

@ -22,26 +22,29 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x6c
;; ja 0x6f
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x34(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x2e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x3b(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x35(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm1, %xmm0
;; movl $0, %eax
;; setae %al
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 6c: ud2
;; 6e: addb %al, (%rax)
;; 70: int $0xcc
;; 6f: ud2
;; 71: addb %al, (%rax)
;; 73: addb %al, (%rax)
;; 75: addb %al, (%rax)
;; 77: addb %cl, %ch
;; 79: int3

22
tests/disas/winch/x64/f32_le/params.wat

@ -13,21 +13,21 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x54
;; ja 0x56
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm1, %xmm0
;; movl $0, %eax
;; setae %al
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 54: ud2
;; 56: ud2

35
tests/disas/winch/x64/f32_lt/locals.wat

@ -22,26 +22,29 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x6c
;; ja 0x6f
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x34(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x2e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x3b(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x35(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm1, %xmm0
;; movl $0, %eax
;; seta %al
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 6c: ud2
;; 6e: addb %al, (%rax)
;; 70: int $0xcc
;; 6f: ud2
;; 71: addb %al, (%rax)
;; 73: addb %al, (%rax)
;; 75: addb %al, (%rax)
;; 77: addb %cl, %ch
;; 79: int3

22
tests/disas/winch/x64/f32_lt/params.wat

@ -13,21 +13,21 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x54
;; ja 0x56
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm1, %xmm0
;; movl $0, %eax
;; seta %al
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 54: ud2
;; 56: ud2

49
tests/disas/winch/x64/f32_max/locals.wat

@ -22,34 +22,33 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x88
;; ja 0x8b
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x54(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x4e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x53(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x4d(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm0, %xmm1
;; jne 0x7b
;; jp 0x71
;; 69: andps %xmm0, %xmm1
;; jmp 0x7f
;; 71: addss %xmm0, %xmm1
;; jp 0x7f
;; 7b: maxss %xmm0, %xmm1
;; jne 0x7e
;; jp 0x74
;; 6c: andps %xmm0, %xmm1
;; jmp 0x82
;; 74: addss %xmm0, %xmm1
;; jp 0x82
;; 7e: maxss %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 88: ud2
;; 8a: addb %al, (%rax)
;; 8c: addb %al, (%rax)
;; 8e: addb %al, (%rax)
;; 90: int $0xcc
;; 8b: ud2
;; 8d: addb %al, (%rax)
;; 8f: addb %cl, %ch
;; 91: int3

36
tests/disas/winch/x64/f32_max/params.wat

@ -13,27 +13,27 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x70
;; ja 0x72
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm0, %xmm1
;; jne 0x63
;; jp 0x59
;; 51: andps %xmm0, %xmm1
;; jmp 0x67
;; 59: addss %xmm0, %xmm1
;; jp 0x67
;; 63: maxss %xmm0, %xmm1
;; jne 0x65
;; jp 0x5b
;; 53: andps %xmm0, %xmm1
;; jmp 0x69
;; 5b: addss %xmm0, %xmm1
;; jp 0x69
;; 65: maxss %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 70: ud2
;; 72: ud2

49
tests/disas/winch/x64/f32_min/locals.wat

@ -22,34 +22,33 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x88
;; ja 0x8b
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x54(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x4e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x53(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x4d(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm0, %xmm1
;; jne 0x7b
;; jp 0x71
;; 69: orps %xmm0, %xmm1
;; jmp 0x7f
;; 71: addss %xmm0, %xmm1
;; jp 0x7f
;; 7b: minss %xmm0, %xmm1
;; jne 0x7e
;; jp 0x74
;; 6c: orps %xmm0, %xmm1
;; jmp 0x82
;; 74: addss %xmm0, %xmm1
;; jp 0x82
;; 7e: minss %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 88: ud2
;; 8a: addb %al, (%rax)
;; 8c: addb %al, (%rax)
;; 8e: addb %al, (%rax)
;; 90: int $0xcc
;; 8b: ud2
;; 8d: addb %al, (%rax)
;; 8f: addb %cl, %ch
;; 91: int3

36
tests/disas/winch/x64/f32_min/params.wat

@ -13,27 +13,27 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x70
;; ja 0x72
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm0, %xmm1
;; jne 0x63
;; jp 0x59
;; 51: orps %xmm0, %xmm1
;; jmp 0x67
;; 59: addss %xmm0, %xmm1
;; jp 0x67
;; 63: minss %xmm0, %xmm1
;; jne 0x65
;; jp 0x5b
;; 53: orps %xmm0, %xmm1
;; jmp 0x69
;; 5b: addss %xmm0, %xmm1
;; jp 0x69
;; 65: minss %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 70: ud2
;; 72: ud2

36
tests/disas/winch/x64/f32_mul/locals.wat

@ -22,28 +22,26 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x67
;; ja 0x6a
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x34(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x2e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x33(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x2d(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; mulss %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 67: ud2
;; 69: addb %al, (%rax)
;; 6b: addb %al, (%rax)
;; 6d: addb %al, (%rax)
;; 6f: addb %cl, %ch
;; 71: int3
;; 6a: ud2
;; 6c: addb %al, (%rax)
;; 6e: addb %al, (%rax)
;; 70: int $0xcc

22
tests/disas/winch/x64/f32_mul/params.wat

@ -13,20 +13,20 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x4f
;; ja 0x51
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; mulss %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 4f: ud2
;; 51: ud2

34
tests/disas/winch/x64/f32_ne/locals.wat

@ -22,31 +22,29 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x79
;; ja 0x7c
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x44(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x3e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x43(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x3d(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm0, %xmm1
;; movl $0, %eax
;; setne %al
;; movl $0, %r11d
;; setp %r11b
;; orl %r11d, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 79: ud2
;; 7b: addb %al, (%rax)
;; 7d: addb %al, (%rax)
;; 7f: addb %cl, %ch
;; 81: int3
;; 7c: ud2
;; 7e: addb %al, (%rax)
;; 80: int $0xcc

22
tests/disas/winch/x64/f32_ne/params.wat

@ -13,24 +13,24 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x61
;; ja 0x63
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; ucomiss %xmm0, %xmm1
;; movl $0, %eax
;; setne %al
;; movl $0, %r11d
;; setp %r11b
;; orl %r11d, %eax
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 61: ud2
;; 63: ud2

14
tests/disas/winch/x64/f32_nearest/f32_floor_param_sse41.wat

@ -13,17 +13,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x44
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm0
;; roundss $0, %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 44: ud2

22
tests/disas/winch/x64/f32_nearest/f32_nearest_param.wat

@ -12,25 +12,25 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x20, %r11
;; addq $0x30, %r11
;; cmpq %rsp, %r11
;; ja 0x6d
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm15
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm15
;; subq $4, %rsp
;; movss %xmm15, (%rsp)
;; subq $4, %rsp
;; movss 4(%rsp), %xmm0
;; subq $0xc, %rsp
;; movss 0xc(%rsp), %xmm0
;; movabsq $0, %r11
;; callq *%r11
;; addq $0xc, %rsp
;; addq $4, %rsp
;; addq $4, %rsp
;; movq 0x10(%rsp), %r14
;; addq $0x18, %rsp
;; movq 0x18(%rsp), %r14
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 6d: ud2

14
tests/disas/winch/x64/f32_neg/f32_neg_param.wat

@ -12,19 +12,19 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x4d
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm0
;; movl $0x80000000, %r11d
;; movd %r11d, %xmm15
;; xorps %xmm15, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 4d: ud2

18
tests/disas/winch/x64/f32_reinterpret_i32/locals.wat

@ -14,17 +14,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x42
;; ja 0x43
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movl 0xc(%rsp), %eax
;; movd %eax, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 42: ud2
;; 43: ud2

14
tests/disas/winch/x64/f32_reinterpret_i32/params.wat

@ -12,17 +12,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x3e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %eax
;; movd %eax, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 3e: ud2

14
tests/disas/winch/x64/f32_sqrt/f32_sqrt_param.wat

@ -12,17 +12,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x42
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm0
;; sqrtss %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 42: ud2

36
tests/disas/winch/x64/f32_sub/locals.wat

@ -22,28 +22,26 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x67
;; ja 0x6a
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 0x34(%rip), %xmm0
;; movss %xmm0, 4(%rsp)
;; movss 0x2e(%rip), %xmm0
;; movss %xmm0, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0x33(%rip), %xmm0
;; movss %xmm0, 0xc(%rsp)
;; movss 0x2d(%rip), %xmm0
;; movss %xmm0, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; subss %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 67: ud2
;; 69: addb %al, (%rax)
;; 6b: addb %al, (%rax)
;; 6d: addb %al, (%rax)
;; 6f: addb %cl, %ch
;; 71: int3
;; 6a: ud2
;; 6c: addb %al, (%rax)
;; 6e: addb %al, (%rax)
;; 70: int $0xcc

22
tests/disas/winch/x64/f32_sub/params.wat

@ -13,20 +13,20 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x4f
;; ja 0x51
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss %xmm1, (%rsp)
;; movss (%rsp), %xmm0
;; movss 4(%rsp), %xmm1
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss %xmm1, 8(%rsp)
;; movss 8(%rsp), %xmm0
;; movss 0xc(%rsp), %xmm1
;; subss %xmm0, %xmm1
;; movaps %xmm1, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 4f: ud2
;; 51: ud2

22
tests/disas/winch/x64/f32_trunc/f32_trunc_param.wat

@ -12,25 +12,25 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x20, %r11
;; addq $0x30, %r11
;; cmpq %rsp, %r11
;; ja 0x6d
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm15
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm15
;; subq $4, %rsp
;; movss %xmm15, (%rsp)
;; subq $4, %rsp
;; movss 4(%rsp), %xmm0
;; subq $0xc, %rsp
;; movss 0xc(%rsp), %xmm0
;; movabsq $0, %r11
;; callq *%r11
;; addq $0xc, %rsp
;; addq $4, %rsp
;; addq $4, %rsp
;; movq 0x10(%rsp), %r14
;; addq $0x18, %rsp
;; movq 0x18(%rsp), %r14
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 6d: ud2

14
tests/disas/winch/x64/f32_trunc/f32_trunc_param_sse41.wat

@ -13,17 +13,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x44
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm0
;; roundss $3, %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 44: ud2

18
tests/disas/winch/x64/f64_abs/f64_abs_param.wat

@ -12,19 +12,19 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x50
;; ja 0x52
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm0
;; movabsq $0x7fffffffffffffff, %r11
;; movq %r11, %xmm15
;; andpd %xmm15, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 50: ud2
;; 52: ud2

24
tests/disas/winch/x64/f64_ceil/f64_ceil_param.wat

@ -12,23 +12,25 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x20, %r11
;; addq $0x30, %r11
;; cmpq %rsp, %r11
;; ja 0x62
;; ja 0x6d
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm15
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm15
;; subq $8, %rsp
;; movsd %xmm15, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $8, %rsp
;; movsd 8(%rsp), %xmm0
;; movabsq $0, %r11
;; callq *%r11
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; addq $0x18, %rsp
;; addq $8, %rsp
;; movq 0x18(%rsp), %r14
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 62: ud2
;; 6d: ud2

18
tests/disas/winch/x64/f64_ceil/f64_ceil_param_sse41.wat

@ -13,17 +13,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x42
;; ja 0x44
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm0
;; roundsd $2, %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 42: ud2
;; 44: ud2

18
tests/disas/winch/x64/f64_const/call_id.wat

@ -10,19 +10,19 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x3c
;; ja 0x3e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm0
;; addq $0x18, %rsp
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm0
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 3c: ud2
;; 3e: ud2
;;
;; wasm[0]::function[1]:
;; pushq %rbp

18
tests/disas/winch/x64/f64_const/id.wat

@ -9,16 +9,16 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x3c
;; ja 0x3e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm0
;; addq $0x18, %rsp
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm0
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 3c: ud2
;; 3e: ud2

18
tests/disas/winch/x64/f64_convert_i32_s/locals.wat

@ -14,17 +14,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x42
;; ja 0x43
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movl 0xc(%rsp), %eax
;; cvtsi2sdl %eax, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 42: ud2
;; 43: ud2

14
tests/disas/winch/x64/f64_convert_i32_s/params.wat

@ -12,17 +12,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x3e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %eax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %eax
;; cvtsi2sdl %eax, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 3e: ud2

26
tests/disas/winch/x64/f64_convert_i32_u/locals.wat

@ -14,28 +14,28 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x6e
;; ja 0x6f
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movl 4(%rsp), %ecx
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movl 0xc(%rsp), %ecx
;; movl %ecx, %ecx
;; cmpq $0, %rcx
;; jl 0x4e
;; 44: cvtsi2sdq %rcx, %xmm0
;; jmp 0x68
;; 4e: movq %rcx, %r11
;; jl 0x4f
;; 45: cvtsi2sdq %rcx, %xmm0
;; jmp 0x69
;; 4f: movq %rcx, %r11
;; shrq $1, %r11
;; movq %rcx, %rax
;; andq $1, %rax
;; orq %r11, %rax
;; cvtsi2sdq %rax, %xmm0
;; addsd %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 6e: ud2
;; 6f: ud2

14
tests/disas/winch/x64/f64_convert_i32_u/params.wat

@ -12,15 +12,15 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x6a
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movl %edx, 4(%rsp)
;; movl 4(%rsp), %ecx
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movl %edx, 0xc(%rsp)
;; movl 0xc(%rsp), %ecx
;; movl %ecx, %ecx
;; cmpq $0, %rcx
;; jl 0x4a
@ -33,7 +33,7 @@
;; orq %r11, %rax
;; cvtsi2sdq %rax, %xmm0
;; addsd %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 6a: ud2

18
tests/disas/winch/x64/f64_convert_i64_s/locals.wat

@ -14,17 +14,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x43
;; ja 0x45
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movq (%rsp), %rax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movq 8(%rsp), %rax
;; cvtsi2sdq %rax, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 43: ud2
;; 45: ud2

18
tests/disas/winch/x64/f64_convert_i64_s/params.wat

@ -12,17 +12,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x3f
;; ja 0x41
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq %rdx, (%rsp)
;; movq (%rsp), %rax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq %rdx, 8(%rsp)
;; movq 8(%rsp), %rax
;; cvtsi2sdq %rax, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 3f: ud2
;; 41: ud2

26
tests/disas/winch/x64/f64_convert_i64_u/locals.wat

@ -14,27 +14,27 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x6c
;; ja 0x6e
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movq (%rsp), %rcx
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movq 8(%rsp), %rcx
;; cmpq $0, %rcx
;; jl 0x4c
;; 42: cvtsi2sdq %rcx, %xmm0
;; jmp 0x66
;; 4c: movq %rcx, %r11
;; jl 0x4e
;; 44: cvtsi2sdq %rcx, %xmm0
;; jmp 0x68
;; 4e: movq %rcx, %r11
;; shrq $1, %r11
;; movq %rcx, %rax
;; andq $1, %rax
;; orq %r11, %rax
;; cvtsi2sdq %rax, %xmm0
;; addsd %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 6c: ud2
;; 6e: ud2

26
tests/disas/winch/x64/f64_convert_i64_u/params.wat

@ -12,27 +12,27 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x68
;; ja 0x6a
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq %rdx, (%rsp)
;; movq (%rsp), %rcx
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq %rdx, 8(%rsp)
;; movq 8(%rsp), %rcx
;; cmpq $0, %rcx
;; jl 0x48
;; 3e: cvtsi2sdq %rcx, %xmm0
;; jmp 0x62
;; 48: movq %rcx, %r11
;; jl 0x4a
;; 40: cvtsi2sdq %rcx, %xmm0
;; jmp 0x64
;; 4a: movq %rcx, %r11
;; shrq $1, %r11
;; movq %rcx, %rax
;; andq $1, %rax
;; orq %r11, %rax
;; cvtsi2sdq %rax, %xmm0
;; addsd %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 68: ud2
;; 6a: ud2

24
tests/disas/winch/x64/f64_floor/f64_floor_param.wat

@ -12,23 +12,25 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x20, %r11
;; addq $0x30, %r11
;; cmpq %rsp, %r11
;; ja 0x62
;; ja 0x6d
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm15
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm15
;; subq $8, %rsp
;; movsd %xmm15, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $8, %rsp
;; movsd 8(%rsp), %xmm0
;; movabsq $0, %r11
;; callq *%r11
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; addq $0x18, %rsp
;; addq $8, %rsp
;; movq 0x18(%rsp), %r14
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 62: ud2
;; 6d: ud2

18
tests/disas/winch/x64/f64_floor/f64_floor_param_sse41.wat

@ -13,17 +13,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x42
;; ja 0x44
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm0
;; roundsd $1, %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 42: ud2
;; 44: ud2

24
tests/disas/winch/x64/f64_nearest/f64_nearest_param.wat

@ -12,23 +12,25 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x20, %r11
;; addq $0x30, %r11
;; cmpq %rsp, %r11
;; ja 0x62
;; ja 0x6d
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm15
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm15
;; subq $8, %rsp
;; movsd %xmm15, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $8, %rsp
;; movsd 8(%rsp), %xmm0
;; movabsq $0, %r11
;; callq *%r11
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; addq $0x18, %rsp
;; addq $8, %rsp
;; movq 0x18(%rsp), %r14
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 62: ud2
;; 6d: ud2

18
tests/disas/winch/x64/f64_nearest/f64_nearest_param_sse41.wat

@ -13,17 +13,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x42
;; ja 0x44
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm0
;; roundsd $0, %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 42: ud2
;; 44: ud2

18
tests/disas/winch/x64/f64_neg/f64_neg_param.wat

@ -12,19 +12,19 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x50
;; ja 0x52
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm0
;; movabsq $9223372036854775808, %r11
;; movq %r11, %xmm15
;; xorpd %xmm15, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 50: ud2
;; 52: ud2

18
tests/disas/winch/x64/f64_promote_f32/locals.wat

@ -14,17 +14,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x44
;; ja 0x45
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movss 4(%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movss 0xc(%rsp), %xmm0
;; cvtss2sd %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 44: ud2
;; 45: ud2

14
tests/disas/winch/x64/f64_promote_f32/params.wat

@ -12,17 +12,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x42
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movss %xmm0, 4(%rsp)
;; movss 4(%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movss %xmm0, 0xc(%rsp)
;; movss 0xc(%rsp), %xmm0
;; cvtss2sd %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 42: ud2

18
tests/disas/winch/x64/f64_reinterpret_i64/locals.wat

@ -14,17 +14,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x43
;; ja 0x45
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq $0, (%rsp)
;; movq (%rsp), %rax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq $0, 8(%rsp)
;; movq 8(%rsp), %rax
;; movq %rax, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 43: ud2
;; 45: ud2

18
tests/disas/winch/x64/f64_reinterpret_i64/params.wat

@ -12,17 +12,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x3f
;; ja 0x41
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movq %rdx, (%rsp)
;; movq (%rsp), %rax
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movq %rdx, 8(%rsp)
;; movq 8(%rsp), %rax
;; movq %rax, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 3f: ud2
;; 41: ud2

18
tests/disas/winch/x64/f64_sqrt/f64_sqrt_param.wat

@ -12,17 +12,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x40
;; ja 0x42
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm0
;; sqrtsd %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 40: ud2
;; 42: ud2

24
tests/disas/winch/x64/f64_trunc/f64_trunc_param.wat

@ -12,23 +12,25 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x20, %r11
;; addq $0x30, %r11
;; cmpq %rsp, %r11
;; ja 0x62
;; ja 0x6d
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm15
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm15
;; subq $8, %rsp
;; movsd %xmm15, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $8, %rsp
;; movsd 8(%rsp), %xmm0
;; movabsq $0, %r11
;; callq *%r11
;; addq $8, %rsp
;; movq 0x10(%rsp), %r14
;; addq $0x18, %rsp
;; addq $8, %rsp
;; movq 0x18(%rsp), %r14
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 62: ud2
;; 6d: ud2

18
tests/disas/winch/x64/f64_trunc/f64_trunc_param_sse41.wat

@ -13,17 +13,17 @@
;; movq %rsp, %rbp
;; movq 8(%rdi), %r11
;; movq (%r11), %r11
;; addq $0x18, %r11
;; addq $0x20, %r11
;; cmpq %rsp, %r11
;; ja 0x42
;; ja 0x44
;; 1b: movq %rdi, %r14
;; subq $0x18, %rsp
;; movq %rdi, 0x10(%rsp)
;; movq %rsi, 8(%rsp)
;; movsd %xmm0, (%rsp)
;; movsd (%rsp), %xmm0
;; subq $0x20, %rsp
;; movq %rdi, 0x18(%rsp)
;; movq %rsi, 0x10(%rsp)
;; movsd %xmm0, 8(%rsp)
;; movsd 8(%rsp), %xmm0
;; roundsd $3, %xmm0, %xmm0
;; addq $0x18, %rsp
;; addq $0x20, %rsp
;; popq %rbp
;; retq
;; 42: ud2
;; 44: ud2

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save