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 0xb5 22;; 19: subq $0x30, %rsp 23;; movq %r13, 0x20(%rsp) 24;; movq %r14, 0x28(%rsp) 25;; movq %rdx, %r14 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, %r13 33;; callq 0x12f 34;; movq 8(%r13), %rdx 35;; ╰─╼ stack_map: frame_size=48, frame_offsets=[0] 36;; movq 0x20(%rdx), %rdx 37;; movl %eax, %r8d 38;; movdqu 8(%rsp), %xmm0 39;; movss %xmm0, 0x18(%rdx, %r8) 40;; movq %r14, %r9 41;; movb %r9b, 0x1c(%rdx, %r8) 42;; movl (%rsp), %r9d 43;; movq %r9, %rcx 44;; andl $1, %ecx 45;; testl %r9d, %r9d 46;; sete %r10b 47;; movzbl %r10b, %r10d 48;; orl %r10d, %ecx 49;; testl %ecx, %ecx 50;; jne 0x9a 51;; 8d: movl %r9d, %edi 52;; leaq (%rdx, %rdi), %rcx 53;; addq $1, 8(%rdx, %rdi) 54;; movl (%rsp), %ecx 55;; movl %ecx, 0x20(%rdx, %r8) 56;; movq 0x20(%rsp), %r13 57;; movq 0x28(%rsp), %r14 58;; addq $0x30, %rsp 59;; movq %rbp, %rsp 60;; popq %rbp 61;; retq 62;; b5: ud2 63