// File: /workspace/github_cpp_makefile_star2_O3/dsharlet[P]array/test/shape.cpp
// Function: void nda::test_one_dense_stride<3ul>()
void test_one_dense_stride() {
  for (size_t known = 0; known < rank; known++) {
    std::array<dim<>, rank> a;
    for (size_t d = 0; d < rank; d++) {
      a[d] = dim<>(d + 1);
      if (d == known) {
        // This is the dimension we know.
        a[d].set_stride(1);
      }
    }
    shape_of_rank<rank> s_one_dense(internal::array_to_tuple(a));
    s_one_dense.resolve();
    ASSERT_EQ(s_one_dense.size(), factorial(rank));
    ASSERT_EQ(s_one_dense.dim(known).stride(), 1);
    ASSERT(s_one_dense.is_compact());
    ASSERT(s_one_dense.is_one_to_one());
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x5b8, %rsp            # imm = 0x5B8
movabsq $-0x8000000000000000, %rdi # imm = 0x8000000000000000
leaq 0x60(%rsp), %rbx
movl $0x1, %esi
leaq 0x100(%rsp), %r12
xorl %r15d, %r15d
movq $0x0, (%rsp)
movl $0x10, %eax
xorps %xmm0, %xmm0
movups %xmm0, 0xa8(%rsp,%rax)
movq %rdi, 0xb8(%rsp,%rax)
addq $0x18, %rax
cmpq $0x58, %rax
jne 0x8e41e
movl $0x1, %eax
xorl %ecx, %ecx
movq $0x0, 0xb8(%rsp,%rcx)
movq %rax, 0xc0(%rsp,%rcx)
cmpq %rcx, %r15
movq %rdi, %rdx
cmoveq %rsi, %rdx
movq %rdx, 0xc8(%rsp,%rcx)
addq $0x18, %rcx
incq %rax
cmpq $0x48, %rcx
jne 0x8e43f
leaq 0xd0(%rsp), %rcx
movq 0x28(%rcx), %rax
movq %rax, 0x110(%rsp)
movups 0x18(%rcx), %xmm0
movaps %xmm0, 0x100(%rsp)
movq 0x10(%rcx), %rax
leaq 0x118(%rsp), %rdx
movq %rax, 0x10(%rdx)
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq 0xc8(%rsp), %rax
movq %rax, 0x28(%rdx)
movups 0xb8(%rsp), %xmm0
movups %xmm0, 0x18(%rdx)
movl $0x9, %ecx
leaq 0x8(%rsp), %rax
movq %rax, %rdi
movq %r12, %rsi
rep  movsq (%rsi), %es:(%rdi)
movq %rax, %rdi
leaq 0x38(%rsp), %rsi
leaq 0x20(%rsp), %rdx
movq %rax, %rcx
callq 0x1a9f3
movq %r12, %r14
movq 0x40(%rsp), %r13
movq 0x10(%rsp), %rbp
movq 0x28(%rsp), %r12
movq %rbx, 0x50(%rsp)
leaq 0x50(%rsp), %rbx
movq %rbx, %rdi
leaq 0x314a5(%rip), %rsi     # 0xbf9b3
leaq 0x314c3(%rip), %rdx     # 0xbf9d8
callq 0xd14c
imulq %r13, %r12
imulq %rbp, %r12
xorl %esi, %esi
cmpq $0x6, %r12
sete %sil
movq %r14, %rdi
movq %rbx, %rdx
callq 0xbf80
leaq 0x15146(%rip), %rbx     # 0xa3684
movq %r14, %r13
movq %r14, %rdi
movq %rbx, %rsi
callq 0x18fba
movq %rax, %rdi
leaq 0x31483(%rip), %rsi     # 0xbf9d9
callq 0x191ea
movq %rax, %rdi
leaq 0x18cf1(%rip), %rsi     # 0xa7256
callq 0x18fba
movq %rax, %rbp
cmpb $0x1, 0x188(%rax)
jne 0x8e59f
movq 0x40(%rsp), %rsi
imulq 0x28(%rsp), %rsi
imulq 0x10(%rsp), %rsi
testq %rsi, %rsi
movl $0x0, %eax
cmovleq %rax, %rsi
movq %rbp, %rdi
addq $0x10, %rdi
callq 0x2110
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x18fba
movq %rax, %rdi
leaq 0x31415(%rip), %rsi     # 0xbf9c9
callq 0x4acaa
movq %rax, %rdi
leaq 0x18c93(%rip), %rsi     # 0xa7256
callq 0x18fba
movq %rax, %rbp
cmpb $0x1, 0x188(%rax)
jne 0x8e5e5
movq %rbp, %rdi
addq $0x10, %rdi
movl $0x6, %esi
callq 0x2110
movq %rbp, %rdi
leaq 0x2bcaa(%rip), %rsi     # 0xba299
callq 0x18fba
movq %r13, %rdi
callq 0xbfd8
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x8e618
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x21f0
leaq 0x38(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x60(%rsp)
movups (%rcx), %xmm0
movaps %xmm0, 0x50(%rsp)
leaq 0x20(%rsp), %rcx
movq 0x10(%rcx), %rax
leaq 0x60(%rsp), %rdx
movq %rax, 0x18(%rdx)
movups (%rcx), %xmm0
movups %xmm0, 0x8(%rdx)
movq 0x18(%rsp), %rax
movq %rax, 0x30(%rdx)
movups 0x8(%rsp), %xmm0
movups %xmm0, 0x20(%rdx)
movq (%rsp), %rax
leaq (%rax,%rax,2), %r12
movq 0x60(%rsp,%r12,8), %r14
leaq 0xa8(%rsp), %rax
movq %rax, 0x98(%rsp)
leaq 0x98(%rsp), %rbp
movq %rbp, %rdi
leaq 0x31364(%rip), %rsi     # 0xbf9ec
leaq 0x31381(%rip), %rdx     # 0xbfa10
callq 0xd14c
xorl %esi, %esi
cmpq $0x1, %r14
sete %sil
movq %r13, %rdi
movq %rbp, %rdx
callq 0xbf80
leaq 0x60(%rsp), %r14
movq %r13, %rdi
movq %rbx, %rsi
callq 0x18fba
movq %rax, %rdi
leaq 0x3134e(%rip), %rsi     # 0xbfa11
callq 0x61168
movq %rax, %rdi
leaq 0x18b84(%rip), %rsi     # 0xa7256
callq 0x18fba
movq %rax, %rbp
leaq 0x38(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x60(%rsp)
movups (%rcx), %xmm0
movaps %xmm0, 0x50(%rsp)
leaq 0x20(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x18(%r14)
movups (%rcx), %xmm0
movups %xmm0, 0x8(%r14)
movq 0x18(%rsp), %rax
movq %rax, 0x30(%r14)
movups 0x8(%rsp), %xmm0
movups %xmm0, 0x20(%r14)
cmpb $0x1, 0x188(%rbp)
jne 0x8e732
movq 0x60(%rsp,%r12,8), %rsi
movq %rbp, %rdi
addq $0x10, %rdi
callq 0x21b0
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x18fba
movq %rax, %rdi
leaq 0x1c025(%rip), %rsi     # 0xaa76c
callq 0x18fba
movq %rax, %rdi
leaq 0x18b00(%rip), %rsi     # 0xa7256
callq 0x18fba
movq %rax, %rbp
cmpb $0x1, 0x188(%rax)
jne 0x8e778
movq %rbp, %rdi
addq $0x10, %rdi
movl $0x1, %esi
callq 0x22f0
movq %rbp, %rdi
leaq 0x2bb17(%rip), %rsi     # 0xba299
callq 0x18fba
movq %r13, %rdi
callq 0xbfd8
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x8e7b4
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x21f0
leaq 0x8(%rsp), %rdi
callq 0x1a5ec
movq %rax, %rbp
movq 0x40(%rsp), %r14
movq 0x10(%rsp), %r13
movq 0x28(%rsp), %r12
leaq 0x110(%rsp), %rax
movq %rax, 0x100(%rsp)
leaq 0x100(%rsp), %rbx
movq %rbx, %rdi
leaq 0x3123f(%rip), %rsi     # 0xbfa31
leaq 0x31250(%rip), %rdx     # 0xbfa49
callq 0xd14c
imulq %r14, %r12
imulq %r13, %r12
testq %r12, %r12
movl $0x0, %eax
cmovleq %rax, %r12
xorl %esi, %esi
cmpq %r12, %rbp
setbe %sil
leaq 0x428(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rdx
callq 0xbf80
movq %r14, %rdi
callq 0xbfd8
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x8e85b
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21f0
leaq 0x8(%rsp), %rdi
callq 0x1a5ec
movq %rax, %rbp
movq 0x40(%rsp), %r14
movq 0x10(%rsp), %r13
movq 0x28(%rsp), %r12
leaq 0x110(%rsp), %rax
movq %rax, 0x100(%rsp)
leaq 0x100(%rsp), %rbx
movq %rbx, %rdi
leaq 0x311b1(%rip), %rsi     # 0xbfa4a
leaq 0x311c5(%rip), %rdx     # 0xbfa65
callq 0xd14c
imulq %r14, %r12
imulq %r13, %r12
testq %r12, %r12
movl $0x0, %eax
cmovleq %rax, %r12
xorl %esi, %esi
cmpq %r12, %rbp
setae %sil
leaq 0x298(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rdx
callq 0xbf80
movq %rbx, %r12
movq %r14, %rdi
callq 0xbfd8
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
leaq 0x60(%rsp), %rbx
je 0x8e90a
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21f0
movq (%rsp), %rcx
incq %rcx
addq $0x18, %r15
movq %rcx, (%rsp)
cmpq $0x3, %rcx
movl $0x1, %esi
movabsq $-0x8000000000000000, %rdi # imm = 0x8000000000000000
jne 0x8e416
addq $0x5b8, %rsp            # imm = 0x5B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8e94a
jmp 0x8e94a
jmp 0x8e94a
movq %rax, %r14
jmp 0x8e9e8
jmp 0x8e98d
jmp 0x8e9bc
jmp 0x8e95d
movq %rax, %r14
jmp 0x8e99d
movq %rax, %r14
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x8e9e8
movq 0x110(%rsp), %rsi
jmp 0x8e9e0
movq %rax, %r14
leaq 0x60(%rsp), %rbx
jmp 0x8e9d1
jmp 0x8e98d
jmp 0x8e9bc
movq %rax, %r14
leaq 0x100(%rsp), %rdi
callq 0xbfd8
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x8e9e8
movq 0xa8(%rsp), %rsi
jmp 0x8e9e0
movq %rax, %r14
leaq 0x60(%rsp), %rbx
leaq 0x100(%rsp), %rdi
callq 0xbfd8
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x8e9e8
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x21f0
movq %r14, %rdi
callq 0x2300
movq %rax, %rdi
callq 0xc0a9