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 0x18(%r10), %r10 19;; addq $0x40, %r10 20;; cmpq %rsp, %r10 21;; ja 0xaf 22;; 19: subq $0x30, %rsp 23;; movq %rbx, 0x20(%rsp) 24;; movq %r12, 0x28(%rsp) 25;; movq %rdx, %r12 26;; movdqu %xmm0, 8(%rsp) 27;; movl %ecx, (%rsp) 28;; movl $0xb0000000, %esi 29;; xorl %edx, %edx 30;; movl $0x28, %ecx 31;; movl $8, %r8d 32;; movq %rdi, %rbx 33;; callq 0x125 34;; movq 8(%rbx), %rcx 35;; ╰─╼ stack_map: frame_size=48, frame_offsets=[0] 36;; movq 0x20(%rcx), %rcx 37;; movl %eax, %edx 38;; movdqu 8(%rsp), %xmm0 39;; movss %xmm0, 0x18(%rcx, %rdx) 40;; movq %r12, %rsi 41;; movb %sil, 0x1c(%rcx, %rdx) 42;; movl (%rsp), %esi 43;; movq %rsi, %rdi 44;; andl $1, %edi 45;; testl %esi, %esi 46;; sete %r8b 47;; movzbl %r8b, %r8d 48;; orl %r8d, %edi 49;; testl %edi, %edi 50;; jne 0x95 51;; 89: movl %esi, %esi 52;; leaq (%rcx, %rsi), %rdi 53;; addq $1, 8(%rcx, %rsi) 54;; movl (%rsp), %esi 55;; movl %esi, 0x20(%rcx, %rdx) 56;; movq 0x20(%rsp), %rbx 57;; movq 0x28(%rsp), %r12 58;; addq $0x30, %rsp 59;; movq %rbp, %rsp 60;; popq %rbp 61;; retq 62;; af: ud2 63