// File: /workspace/github_cpp_makefile_star2_O3/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 0xd133
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 0xc573
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 0x4b40b
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 0x4ae75
movq %rbp, (%r14)
movl $0x14, %eax
movq %rax, 0x8(%r14)
movq $0x32, 0x10(%r14)
leaq 0xb8(%rsp), %rsi
movq %r13, %rdi
callq 0x4ae75
movq 0x38(%rbx), %rbx
movq 0x8(%r15), %r15
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x3a372(%rip), %rsi     # 0xbeab0
leaq 0x3a382(%rip), %rdx     # 0xbeac7
movq %rsp, %rdi
callq 0xd14c
xorl %esi, %esi
cmpq %r15, %rbx
sete %sil
leaq 0xb8(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf80
leaq 0x1ef17(%rip), %rsi     # 0xa3684
leaq 0xb8(%rsp), %rdi
callq 0x18fba
leaq 0x3a347(%rip), %rsi     # 0xbeac8
movq %rax, %rdi
callq 0x1902a
leaq 0x22ac6(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x847b8
movq 0x90(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x1eec5(%rip), %rsi     # 0xa3684
movq %rbx, %rdi
callq 0x18fba
leaq 0x3a2ef(%rip), %rsi     # 0xbeabd
movq %rax, %rdi
callq 0x19062
leaq 0x22a79(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x84802
movq 0x48(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x35a90(%rip), %rsi     # 0xba299
movq %rbx, %rdi
callq 0x18fba
leaq 0xb8(%rsp), %rdi
callq 0xbfd8
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x84834
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x78(%rsp), %rbx
movq 0x28(%rsp), %r15
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x3a287(%rip), %rsi     # 0xbead2
leaq 0x3a298(%rip), %rdx     # 0xbeaea
callq 0xd14c
xorl %esi, %esi
cmpq %r15, %rbx
sete %sil
leaq 0xb8(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf80
leaq 0x1ee0d(%rip), %rsi     # 0xa3684
leaq 0xb8(%rsp), %rdi
callq 0x18fba
leaq 0x3a260(%rip), %rsi     # 0xbeaeb
movq %rax, %rdi
callq 0x19062
leaq 0x229bc(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x848bf
movq 0x78(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x1edbe(%rip), %rsi     # 0xa3684
movq %rbx, %rdi
callq 0x18fba
leaq 0x3a247(%rip), %rsi     # 0xbeb1c
movq %rax, %rdi
callq 0x19062
leaq 0x22972(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x84909
movq 0x28(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x35989(%rip), %rsi     # 0xba299
movq %rbx, %rdi
callq 0x18fba
leaq 0xb8(%rsp), %rdi
callq 0xbfd8
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x8493b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x60(%rsp), %rbx
movq 0xa8(%rsp), %r15
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x3a1e6(%rip), %rsi     # 0xbeb3b
leaq 0x3a1f9(%rip), %rdx     # 0xbeb55
callq 0xd14c
xorl %esi, %esi
cmpq %r15, %rbx
sete %sil
leaq 0xb8(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf80
leaq 0x1ed03(%rip), %rsi     # 0xa3684
leaq 0xb8(%rsp), %rdi
callq 0x18fba
leaq 0x3a1c1(%rip), %rsi     # 0xbeb56
movq %rax, %rdi
callq 0x190d2
leaq 0x228b2(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x849c9
movq 0x60(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x1ecb4(%rip), %rsi     # 0xa3684
movq %rbx, %rdi
callq 0x18fba
leaq 0x3a16c(%rip), %rsi     # 0xbeb4b
movq %rax, %rdi
callq 0x19062
leaq 0x22868(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x84a16
movq 0xa8(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x3587c(%rip), %rsi     # 0xba299
movq %rbx, %rdi
callq 0x18fba
leaq 0xb8(%rsp), %rdi
callq 0xbfd8
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x84a48
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x90(%rsp), %rbx
movq 0x48(%rsp), %r15
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x3a094(%rip), %rsi     # 0xbeaf6
leaq 0x3a0a3(%rip), %rdx     # 0xbeb0c
callq 0xd14c
xorl %esi, %esi
cmpq %r15, %rbx
sete %sil
leaq 0xb8(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf80
leaq 0x1ebf6(%rip), %rsi     # 0xa3684
leaq 0xb8(%rsp), %rdi
callq 0x18fba
leaq 0x2b4a4(%rip), %rsi     # 0xaff46
movq %rax, %rdi
callq 0x1a146
leaq 0x227a5(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x84ad9
movq 0x90(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x1eba4(%rip), %rsi     # 0xa3684
movq %rbx, %rdi
callq 0x18fba
leaq 0x39fce(%rip), %rsi     # 0xbeabd
movq %rax, %rdi
callq 0x19062
leaq 0x22758(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x84b23
movq 0x48(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x3576f(%rip), %rsi     # 0xba299
movq %rbx, %rdi
callq 0x18fba
leaq 0xb8(%rsp), %rdi
callq 0xbfd8
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x84b55
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x78(%rsp), %rbx
movq 0x28(%rsp), %r15
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x39fa1(%rip), %rsi     # 0xbeb0d
leaq 0x39fb3(%rip), %rdx     # 0xbeb26
callq 0xd14c
xorl %esi, %esi
cmpq %r15, %rbx
sete %sil
leaq 0xb8(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf80
leaq 0x1eaec(%rip), %rsi     # 0xa3684
leaq 0xb8(%rsp), %rdi
callq 0x18fba
leaq 0x2b3c0(%rip), %rsi     # 0xaff6c
movq %rax, %rdi
callq 0x57bb2
leaq 0x2269b(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x84be0
movq 0x78(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x1ea9d(%rip), %rsi     # 0xa3684
movq %rbx, %rdi
callq 0x18fba
leaq 0x39f26(%rip), %rsi     # 0xbeb1c
movq %rax, %rdi
callq 0x19062
leaq 0x22651(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x84c2a
movq 0x28(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x35668(%rip), %rsi     # 0xba299
movq %rbx, %rdi
callq 0x18fba
leaq 0xb8(%rsp), %rdi
callq 0xbfd8
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x84c5c
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 0x84c76
jmp 0x84c76
jmp 0x84c76
jmp 0x84c76
movq %rax, %rbx
jmp 0x84d0d
jmp 0x84c9f
jmp 0x84cb1
jmp 0x84cc3
jmp 0x84cd5
jmp 0x84ce7
jmp 0x84c90
jmp 0x84c90
jmp 0x84c90
jmp 0x84c90
movq %rax, %rbx
jmp 0x84cf7
jmp 0x84c9f
jmp 0x84cb1
jmp 0x84cc3
jmp 0x84cd5
jmp 0x84ce7
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0xbfd8
jmp 0x84cf7
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0xbfd8
jmp 0x84cf7
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0xbfd8
jmp 0x84cf7
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0xbfd8
jmp 0x84cf7
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0xbfd8
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x84d0d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq %rbx, %rdi
callq 0x2300
movq %rax, %rdi
callq 0xc0a9