// File: /workspace/github_cpp_makefile_star2_O2/dsharlet[P]array/test/array.cpp
// Function: nda::test_array_move_body()
TEST(array_move) {
  array_of_rank<int, 3> a({4, 5, 6});
  fill_pattern(a);

  dense_array<int, 3> b({4, 5, 6});
  move(a, b);
  check_pattern(b);

  array_of_rank<int, 3> c({dim<>(0, 4, 2), 5, 6});
  move(b, c);
  check_pattern(c);

  array_of_rank<int, 3> d = make_move(a, c.shape());
  ASSERT_EQ(c.shape(), d.shape());
  check_pattern(d);

  dense_array<int, 3> e = make_move(a, b.shape());
  ASSERT_EQ(b.shape(), e.shape());
  check_pattern(e);

  dense_array<int, 3> g({4, {1, 2}, 5});
  move(a, g);
  check_pattern(g);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x428, %rsp            # imm = 0x428
leaq 0x200(%rsp), %rbx
pushq $0x4
popq %rsi
pushq $0x5
popq %rdx
pushq $0x6
popq %rcx
movq %rbx, %rdi
callq 0x10b74
leaq 0x130(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x10b92
movq %r14, %rdi
xorl %esi, %esi
callq 0x10bbd
leaq 0x200(%rsp), %rdi
pushq $0x4
popq %rsi
pushq $0x5
popq %rdx
pushq $0x6
popq %rcx
callq 0x10810
leaq 0xc8(%rsp), %rdi
leaq 0x200(%rsp), %rsi
callq 0x6750
leaq 0x130(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x116c4
xorps %xmm0, %xmm0
leaq 0x200(%rsp), %rsi
movaps %xmm0, (%rsi)
andq $0x0, 0x10(%rsi)
leaq 0xc8(%rsp), %rdi
callq 0x1132f
leaq 0x200(%rsp), %rsi
andq $0x0, (%rsi)
movabsq $-0x8000000000000000, %r15 # imm = 0x8000000000000000
movq $0x6, 0x8(%rsi)
movq %r15, 0x10(%rsi)
andq $0x0, 0x18(%rsi)
movq $0x5, 0x20(%rsi)
movq %r15, 0x28(%rsi)
andq $0x0, 0x30(%rsi)
movq $0x4, 0x38(%rsi)
movq $0x2, 0x40(%rsi)
leaq 0x198(%rsp), %rdi
callq 0x10b92
leaq 0xc8(%rsp), %rdi
leaq 0x198(%rsp), %rsi
callq 0x11719
xorps %xmm0, %xmm0
leaq 0x200(%rsp), %rsi
movaps %xmm0, (%rsi)
andq $0x0, 0x10(%rsi)
leaq 0x198(%rsp), %rdi
callq 0x113b4
leaq 0x1b8(%rsp), %r14
leaq 0x390(%rsp), %rdi
leaq 0x130(%rsp), %rsi
leaq 0x200(%rsp), %rcx
movq %r14, %rdx
callq 0x1176e
leaq 0x3b0(%rsp), %rbx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x1520e
movl %eax, %ebp
leaq 0x81031(%rip), %rsi     # 0x8f2e3
leaq 0x48(%rsp), %rdi
movq %rsp, %rdx
callq 0x66a0
movzbl %bpl, %esi
leaq 0x200(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x6894
leaq 0x7f36b(%rip), %rsi     # 0x8d647
leaq 0x200(%rsp), %rdi
callq 0x106fe
leaq 0x8100a(%rip), %rsi     # 0x8f2fa
movq %rax, %rdi
callq 0x1079e
leaq 0x832f3(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
movq %rax, %rdi
movq %r14, %rsi
callq 0x1141e
leaq 0x7f32e(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x80fc8(%rip), %rsi     # 0x8f2f0
movq %rax, %rdi
callq 0x1079e
leaq 0x832bb(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1141e
leaq 0x96f51(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x200(%rsp), %rdi
callq 0x68d4
leaq 0x48(%rsp), %rdi
callq 0x2090
xorps %xmm0, %xmm0
leaq 0x200(%rsp), %rsi
movaps %xmm0, (%rsi)
andq $0x0, 0x10(%rsi)
leaq 0x390(%rsp), %rdi
callq 0x113b4
leaq 0xe8(%rsp), %r14
leaq 0x48(%rsp), %rdi
leaq 0x130(%rsp), %rsi
leaq 0x200(%rsp), %rcx
movq %r14, %rdx
callq 0x117a7
leaq 0x68(%rsp), %rbx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x8360
movl %eax, %ebp
leaq 0x80f36(%rip), %rsi     # 0x8f304
movq %rsp, %rdi
leaq 0xb0(%rsp), %rdx
callq 0x66a0
movzbl %bpl, %esi
leaq 0x200(%rsp), %rdi
movq %rsp, %rdx
callq 0x6894
leaq 0x7f24e(%rip), %rsi     # 0x8d647
leaq 0x200(%rsp), %rdi
callq 0x106fe
leaq 0x80f0e(%rip), %rsi     # 0x8f31b
movq %rax, %rdi
callq 0x1079e
leaq 0x831d6(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
movq %rax, %rdi
movq %r14, %rsi
callq 0x11472
leaq 0x7f211(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x80ecc(%rip), %rsi     # 0x8f311
movq %rax, %rdi
callq 0x1079e
leaq 0x8319e(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
movq %rax, %rdi
movq %rbx, %rsi
callq 0x11472
leaq 0x96e34(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x200(%rsp), %rdi
callq 0x68d4
movq %rsp, %rdi
callq 0x2090
xorps %xmm0, %xmm0
leaq 0x200(%rsp), %rsi
movaps %xmm0, (%rsi)
andq $0x0, 0x10(%rsi)
leaq 0x48(%rsp), %rdi
callq 0x1132f
leaq 0xb0(%rsp), %rsi
andq $0x0, (%rsi)
movq $0x4, 0x8(%rsi)
leaq 0x410(%rsp), %rdx
movq $0x1, (%rdx)
leaq 0x3f8(%rsp), %rcx
andq $0x0, (%rcx)
movq $0x2, 0x8(%rdx)
movq %r15, 0x10(%rdx)
movq $0x5, 0x8(%rcx)
movq %r15, 0x10(%rcx)
movq %rsp, %rdi
callq 0x66f8
leaq 0x200(%rsp), %rdi
movq %rsp, %rsi
callq 0x6750
leaq 0x130(%rsp), %rdi
leaq 0x200(%rsp), %rsi
callq 0x116c4
xorps %xmm0, %xmm0
movq %rsp, %rsi
movaps %xmm0, (%rsi)
andq $0x0, 0x10(%rsi)
leaq 0x200(%rsp), %rdi
callq 0x1132f
leaq 0x200(%rsp), %rdi
callq 0x69c2
leaq 0x48(%rsp), %rdi
callq 0x69c2
leaq 0x390(%rsp), %rdi
callq 0x10d02
leaq 0x198(%rsp), %rdi
callq 0x10d02
leaq 0xc8(%rsp), %rdi
callq 0x69c2
leaq 0x130(%rsp), %rdi
callq 0x10d02
addq $0x428, %rsp            # imm = 0x428
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0xe592
movq %rax, %rbx
leaq 0x200(%rsp), %rdi
callq 0x69c2
jmp 0xe5f5
jmp 0xe5c9
jmp 0xe5c9
jmp 0xe5c9
jmp 0xe5b0
jmp 0xe5b0
jmp 0xe5b0
movq %rax, %rbx
jmp 0xe61b
jmp 0xe5b9
jmp 0xe5b9
movq %rax, %rbx
jmp 0xe628
jmp 0xe5c2
jmp 0xe5c2
movq %rax, %rbx
jmp 0xe635
jmp 0xe5d8
movq %rax, %rbx
jmp 0xe5f5
movq %rax, %rbx
jmp 0xe5ed
movq %rax, %rbx
jmp 0xe611
movq %rax, %rbx
jmp 0xe642
movq %rax, %rbx
leaq 0x200(%rsp), %rdi
callq 0x68d4
movq %rsp, %rdi
callq 0x2090
leaq 0x48(%rsp), %rdi
callq 0x69c2
jmp 0xe61b
movq %rax, %rbx
leaq 0x200(%rsp), %rdi
callq 0x68d4
leaq 0x48(%rsp), %rdi
callq 0x2090
leaq 0x390(%rsp), %rdi
callq 0x10d02
leaq 0x198(%rsp), %rdi
callq 0x10d02
leaq 0xc8(%rsp), %rdi
callq 0x69c2
leaq 0x130(%rsp), %rdi
callq 0x10d02
movq %rbx, %rdi
callq 0x22f0
movq %rax, %rdi
callq 0x6bba