// File: /workspace/github_cpp_makefile_star2_O2/dsharlet[P]array/test/split.cpp
// Function: nda::test_split_even_constant_body()
TEST(split_even_constant) {
  dense_array<int, 3> a({8, 9, 4});
  for (auto yo : split<3>(a.y())) {
    for (auto xo : split<4>(a.x())) {
      auto a_inner = a(xo, yo, _);
      // Compile-time constant splits should always be the same size.
      ASSERT_EQ(a_inner.size(), 48);
      fill_pattern(a_inner);
    }
  }
  check_pattern(a);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x338, %rsp            # imm = 0x338
leaq 0x1a0(%rsp), %rbx
pushq $0x8
popq %rsi
pushq $0x9
popq %rdx
pushq $0x4
popq %rcx
movq %rbx, %rdi
callq 0x10810
leaq 0xd0(%rsp), %rdi
movq %rbx, %rsi
callq 0x6750
leaq 0x108(%rsp), %rsi
leaq 0xa0(%rsp), %rdi
callq 0x6a7a3
movq 0xb0(%rsp), %rax
leaq 0x50(%rsp), %rcx
movq %rax, 0x10(%rcx)
movups 0xa0(%rsp), %xmm0
movaps %xmm0, (%rcx)
movq 0xb8(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x158(%rsp), %r13
leaq 0x138(%rsp), %r14
leaq 0x1a0(%rsp), %rbx
leaq 0x515f(%rip), %r15      # 0x8d647
leaq 0x9103(%rip), %r12      # 0x915f2
movq 0x50(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq 0x10(%rsp), %rax
je 0x8866d
leaq 0x70(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x89762
movq 0x80(%rsp), %rax
movq %rax, 0x40(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x30(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x30(%rsp), %rdx
cmpq 0x20(%rsp), %rdx
je 0x8865e
movq %r13, %rdi
leaq 0xd0(%rsp), %rsi
movq 0x18(%rsp), %rcx
callq 0x89782
movq %r15, %rbp
movq %r13, %r15
movq 0x168(%rsp), %r13
movq %r14, %rdi
leaq 0x23a9d(%rip), %rsi     # 0xac014
leaq 0xb(%rsp), %rdx
callq 0x66a0
imulq $0xc, %r13, %rax
xorl %esi, %esi
cmpq $0x30, %rax
sete %sil
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6894
movq %r15, %r13
movq %rbp, %r15
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x106fe
movq %rax, %rdi
leaq 0x23a74(%rip), %rsi     # 0xac029
callq 0x11bb4
movq %rax, %rdi
movq %r12, %rsi
callq 0x106fe
imulq $0xc, 0x168(%rsp), %rcx
testq %rcx, %rcx
movl $0x0, %edx
cmovleq %rdx, %rcx
movq %rcx, 0x28(%rsp)
movq %rax, %rdi
leaq 0x28(%rsp), %rsi
callq 0x11052
movq %rax, %rdi
movq %r15, %rsi
callq 0x106fe
movq %rax, %rdi
leaq 0x23a25(%rip), %rsi     # 0xac026
callq 0x10896
movq %rax, %rdi
movq %r12, %rsi
callq 0x106fe
movl $0x30, 0xc(%rsp)
movq %rax, %rdi
leaq 0xc(%rsp), %rsi
callq 0x10736
movq %rax, %rdi
leaq 0x1cc72(%rip), %rsi     # 0xa52a2
callq 0x106fe
movq %rbx, %rdi
callq 0x68d4
movq %r14, %rdi
callq 0x2090
movq %r13, %rdi
xorl %esi, %esi
callq 0x897b6
leaq 0x30(%rsp), %rdi
callq 0x897d4
jmp 0x8853a
leaq 0x50(%rsp), %rdi
callq 0x6a80e
jmp 0x884ef
xorps %xmm0, %xmm0
leaq 0x1a0(%rsp), %rsi
movaps %xmm0, (%rsi)
andq $0x0, 0x10(%rsi)
leaq 0xd0(%rsp), %rdi
callq 0x1132f
leaq 0xd0(%rsp), %rdi
callq 0x69c2
addq $0x338, %rsp            # imm = 0x338
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x886bf
jmp 0x886bf
jmp 0x886bf
jmp 0x886bf
jmp 0x886bf
jmp 0x886bf
jmp 0x886c6
movq %rax, %rbx
jmp 0x886d6
movq %rax, %rbx
jmp 0x886e3
jmp 0x886c6
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
callq 0x68d4
leaq 0x138(%rsp), %rdi
callq 0x2090
leaq 0xd0(%rsp), %rdi
callq 0x69c2
movq %rbx, %rdi
callq 0x22f0
movq %rax, %rdi
callq 0x6bba