// File: /workspace/github_cpp_makefile_star2_O1/dsharlet[P]array/test/shape.cpp
// Function: nda::test_make_dense_shape_3d_body()
TEST(make_dense_shape_3d) {
  dense_shape<3> s(10, 5, 20);
  s.resolve();
  auto x = s.x();
  auto y = s.y();
  auto z = s.z();
  assert_dim_eq(x, dense_dim<>(0, 10));
  assert_dim_eq(y, dim<>(0, 5, 10));
  assert_dim_eq(z, dim<>(0, 20, 50));

  ASSERT_EQ(s.width(), x.extent());
  ASSERT_EQ(s.height(), y.extent());
  ASSERT_EQ(s.channels(), z.extent());
  ASSERT_EQ(s.rows(), x.extent());
  ASSERT_EQ(s.columns(), y.extent());
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x248, %rsp            # imm = 0x248
xorl %ebp, %ebp
leaq 0xb8(%rsp), %r14
movq %rbp, (%r14)
movl $0xa, %eax
movq %rax, 0x8(%r14)
movl $0xa, %r15d
movabsq $-0x8000000000000000, %rbx # imm = 0x8000000000000000
movq %rbx, 0x10(%r14)
xorl %edi, %edi
movq %r14, %rsi
callq 0xd09f
leaq 0x70(%rsp), %rsi
movq %rbp, -0x18(%rsi)
movl $0x14, %eax
movq %rax, -0x10(%rsi)
movq %rbx, -0x8(%rsi)
movq %rbp, (%rsi)
movl $0x5, %eax
movq %rax, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
movq %rbp, 0x18(%rsi)
movq %r15, 0x20(%rsi)
leaq 0x58(%rsp), %rbx
movq %rbx, %rdi
movq %rbx, %rdx
callq 0xc4eb
movq 0x40(%rbx), %rax
leaq 0x40(%rsp), %r15
movq %rax, 0x10(%r15)
movups 0x30(%rbx), %xmm0
movaps %xmm0, (%r15)
movq 0x28(%rbx), %rax
leaq 0x20(%rsp), %r12
movq %rax, 0x10(%r12)
movups 0x18(%rbx), %xmm0
movaps %xmm0, (%r12)
movq 0x10(%rbx), %rax
leaq 0xa0(%rsp), %r13
movq %rax, 0x10(%r13)
movups (%rbx), %xmm0
movaps %xmm0, (%r13)
movq %rbp, (%r14)
movl $0xa, %eax
movq %rax, 0x8(%r14)
leaq 0xb8(%rsp), %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0x4a939
movq %rbp, (%r14)
movl $0x5, %eax
movq %rax, 0x8(%r14)
movl $0xa, %eax
movq %rax, 0x10(%r14)
leaq 0xb8(%rsp), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x4a3a3
movq %rbp, (%r14)
movl $0x14, %eax
movq %rax, 0x8(%r14)
movq $0x32, 0x10(%r14)
leaq 0xb8(%rsp), %rsi
movq %r13, %rdi
callq 0x4a3a3
movq 0x38(%rbx), %rbx
movq 0x8(%r15), %r15
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x3a81e(%rip), %rsi     # 0xbcf50
leaq 0x3a82e(%rip), %rdx     # 0xbcf67
movq %rsp, %rdi
callq 0xd0b8
xorl %esi, %esi
cmpq %r15, %rbx
sete %sil
leaq 0xb8(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf0a
leaq 0x1eef3(%rip), %rsi     # 0xa1654
leaq 0xb8(%rsp), %rdi
callq 0x18a16
leaq 0x3a7f3(%rip), %rsi     # 0xbcf68
movq %rax, %rdi
callq 0x18a86
leaq 0x22ba6(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x827ac
movq 0x90(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x1eea1(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x3a79b(%rip), %rsi     # 0xbcf5d
movq %rax, %rdi
callq 0x18abe
leaq 0x22b59(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x827f6
movq 0x48(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x35b6c(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0xb8(%rsp), %rdi
callq 0xbf62
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x82828
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x78(%rsp), %rbx
movq 0x28(%rsp), %r15
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x3a733(%rip), %rsi     # 0xbcf72
leaq 0x3a744(%rip), %rdx     # 0xbcf8a
callq 0xd0b8
xorl %esi, %esi
cmpq %r15, %rbx
sete %sil
leaq 0xb8(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf0a
leaq 0x1ede9(%rip), %rsi     # 0xa1654
leaq 0xb8(%rsp), %rdi
callq 0x18a16
leaq 0x3a70c(%rip), %rsi     # 0xbcf8b
movq %rax, %rdi
callq 0x18abe
leaq 0x22a9c(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x828b3
movq 0x78(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x1ed9a(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x3a6f3(%rip), %rsi     # 0xbcfbc
movq %rax, %rdi
callq 0x18abe
leaq 0x22a52(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x828fd
movq 0x28(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x35a65(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0xb8(%rsp), %rdi
callq 0xbf62
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x8292f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x60(%rsp), %rbx
movq 0xa8(%rsp), %r15
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x3a692(%rip), %rsi     # 0xbcfdb
leaq 0x3a6a5(%rip), %rdx     # 0xbcff5
callq 0xd0b8
xorl %esi, %esi
cmpq %r15, %rbx
sete %sil
leaq 0xb8(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf0a
leaq 0x1ecdf(%rip), %rsi     # 0xa1654
leaq 0xb8(%rsp), %rdi
callq 0x18a16
leaq 0x3a66d(%rip), %rsi     # 0xbcff6
movq %rax, %rdi
callq 0x18b2e
leaq 0x22992(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x829bd
movq 0x60(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x1ec90(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x3a618(%rip), %rsi     # 0xbcfeb
movq %rax, %rdi
callq 0x18abe
leaq 0x22948(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x82a0a
movq 0xa8(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x35958(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0xb8(%rsp), %rdi
callq 0xbf62
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x82a3c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x90(%rsp), %rbx
movq 0x48(%rsp), %r15
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x3a540(%rip), %rsi     # 0xbcf96
leaq 0x3a54f(%rip), %rdx     # 0xbcfac
callq 0xd0b8
xorl %esi, %esi
cmpq %r15, %rbx
sete %sil
leaq 0xb8(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf0a
leaq 0x1ebd2(%rip), %rsi     # 0xa1654
leaq 0xb8(%rsp), %rdi
callq 0x18a16
leaq 0x2b580(%rip), %rsi     # 0xae016
movq %rax, %rdi
callq 0x19c24
leaq 0x22885(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x82acd
movq 0x90(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x1eb80(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x3a47a(%rip), %rsi     # 0xbcf5d
movq %rax, %rdi
callq 0x18abe
leaq 0x22838(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x82b17
movq 0x48(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x3584b(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0xb8(%rsp), %rdi
callq 0xbf62
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x82b49
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x78(%rsp), %rbx
movq 0x28(%rsp), %r15
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x3a44d(%rip), %rsi     # 0xbcfad
leaq 0x3a45f(%rip), %rdx     # 0xbcfc6
callq 0xd0b8
xorl %esi, %esi
cmpq %r15, %rbx
sete %sil
leaq 0xb8(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf0a
leaq 0x1eac8(%rip), %rsi     # 0xa1654
leaq 0xb8(%rsp), %rdi
callq 0x18a16
leaq 0x2b49c(%rip), %rsi     # 0xae03c
movq %rax, %rdi
callq 0x56a5c
leaq 0x2277b(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x82bd4
movq 0x78(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x1ea79(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x3a3d2(%rip), %rsi     # 0xbcfbc
movq %rax, %rdi
callq 0x18abe
leaq 0x22731(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x82c1e
movq 0x28(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x35744(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0xb8(%rsp), %rdi
callq 0xbf62
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x82c50
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
addq $0x248, %rsp            # imm = 0x248
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x82c6a
jmp 0x82c6a
jmp 0x82c6a
jmp 0x82c6a
movq %rax, %rbx
jmp 0x82d01
jmp 0x82c93
jmp 0x82ca5
jmp 0x82cb7
jmp 0x82cc9
jmp 0x82cdb
jmp 0x82c84
jmp 0x82c84
jmp 0x82c84
jmp 0x82c84
movq %rax, %rbx
jmp 0x82ceb
jmp 0x82c93
jmp 0x82ca5
jmp 0x82cb7
jmp 0x82cc9
jmp 0x82cdb
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0xbf62
jmp 0x82ceb
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0xbf62
jmp 0x82ceb
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0xbf62
jmp 0x82ceb
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0xbf62
jmp 0x82ceb
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0xbf62
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x82d01
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq %rbx, %rdi
callq 0x2300
movq %rax, %rdi
callq 0xc036