1;;! target = "x86_64" 2;;! flags = "-W function-references,gc" 3;;! test = "compile" 4 5(module 6 (type $ty (struct (field (mut f32)) 7 (field (mut i8)) 8 (field (mut anyref)))) 9 10 (func (param f32 i32 anyref) (result (ref $ty)) 11 (struct.new $ty (local.get 0) (local.get 1) (local.get 2)) 12 ) 13) 14;; wasm[0]::function[0]: 15;; pushq %rbp 16;; movq %rsp, %rbp 17;; movq 8(%rdi), %r10 18;; movq 0x10(%r10), %r10 19;; addq $0x50, %r10 20;; cmpq %rsp, %r10 21;; ja 0xc7 22;; 19: subq $0x40, %rsp 23;; movq %r12, 0x20(%rsp) 24;; movq %r13, 0x28(%rsp) 25;; movq %r14, 0x30(%rsp) 26;; movq %rdx, %r12 27;; movdqu %xmm0, 8(%rsp) 28;; leaq (%rsp), %r14 29;; movl %ecx, (%r14) 30;; movl $0xb0000000, %esi 31;; xorl %edx, %edx 32;; movl $0x20, %ecx 33;; movl $8, %r8d 34;; movq %rdi, %r13 35;; callq 0x160 36;; movq 8(%r13), %r8 37;; ╰─╼ stack_map: frame_size=64, frame_offsets=[0] 38;; movq 0x18(%r8), %r8 39;; movq %rax, %r10 40;; movl %r10d, %r9d 41;; movdqu 8(%rsp), %xmm0 42;; movss %xmm0, 0x10(%r8, %r9) 43;; movq %r12, %rdx 44;; movb %dl, 0x14(%r8, %r9) 45;; movl (%r14), %r11d 46;; movq %r11, %rdx 47;; andl $1, %edx 48;; testl %r11d, %r11d 49;; sete %sil 50;; movzbl %sil, %esi 51;; orl %esi, %edx 52;; testl %edx, %edx 53;; jne 0xa4 54;; 97: movl %r11d, %ecx 55;; leaq (%r8, %rcx), %rax 56;; addq $1, 8(%r8, %rcx) 57;; movl (%r14), %edx 58;; movl %edx, 0x18(%r8, %r9) 59;; movq %r10, %rax 60;; movq 0x20(%rsp), %r12 61;; movq 0x28(%rsp), %r13 62;; movq 0x30(%rsp), %r14 63;; addq $0x40, %rsp 64;; movq %rbp, %rsp 65;; popq %rbp 66;; retq 67;; c7: ud2 68