// File: /workspace/github_cpp_makefile_star2_O2/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 $0x5a8, %rsp            # imm = 0x5A8
leaq 0x40(%rsp), %rbp
leaq 0xf0(%rsp), %r12
leaq 0xd0(%rsp), %r15
xorl %ebx, %ebx
cmpq $0x3, %rbx
je 0x79b75
leaq 0x88(%rsp), %rdi
callq 0x79bf0
movabsq $-0x8000000000000000, %rdi # imm = 0x8000000000000000
pushq $0x1
popq %rsi
pushq $0x10
popq %rax
xorl %ecx, %ecx
cmpq $0x58, %rax
je 0x7986c
andq $0x0, 0x78(%rsp,%rax)
cmpq %rbx, %rcx
leaq 0x1(%rcx), %rcx
movq %rdi, %rdx
cmoveq %rsi, %rdx
movq %rcx, 0x80(%rsp,%rax)
movq %rdx, 0x88(%rsp,%rax)
addq $0x18, %rax
jmp 0x7983c
leaq 0xa0(%rsp), %rcx
movq 0x28(%rcx), %rax
movq %rax, 0x100(%rsp)
movups 0x18(%rcx), %xmm0
movaps %xmm0, 0xf0(%rsp)
movq 0x10(%rcx), %rax
leaq 0x108(%rsp), %rdx
movq %rax, 0x10(%rdx)
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq 0x98(%rsp), %rax
movq %rax, 0x28(%rdx)
movups 0x88(%rsp), %xmm0
movups %xmm0, 0x18(%rdx)
pushq $0x9
popq %rcx
movq %rbp, %rdi
movq %r12, %rsi
rep  movsq (%rsi), %es:(%rdi)
movq %rbp, %rdi
callq 0x11e95
movq %r12, %r14
movq 0x78(%rsp), %r12
movq 0x48(%rsp), %r13
movq 0x60(%rsp), %rbp
movq %r15, %rdi
leaq 0x3183c(%rip), %rsi     # 0xab126
leaq 0x8(%rsp), %rdx
callq 0x66a0
pushq $0x3
popq %rdi
callq 0x713e7
imulq %r12, %rbp
imulq %r13, %rbp
testq %rbp, %rbp
movl $0x0, %ecx
cmovleq %rcx, %rbp
movq %rax, %r13
xorl %esi, %esi
cmpq %rax, %rbp
sete %sil
movq %r14, %rdi
movq %r15, %r12
movq %r15, %rdx
callq 0x6894
leaq 0x40(%rsp), %rbp
movq %r14, %rdi
leaq 0x13d0e(%rip), %rsi     # 0x8d647
callq 0x106fe
movq %rax, %rdi
leaq 0x31804(%rip), %rsi     # 0xab14c
callq 0x109ce
movq %rax, %rdi
leaq 0x17c9b(%rip), %rsi     # 0x915f2
callq 0x106fe
movq 0x60(%rsp), %rcx
imulq 0x78(%rsp), %rcx
imulq 0x48(%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
leaq 0x13cb2(%rip), %rsi     # 0x8d647
callq 0x106fe
movq %rax, %rdi
leaq 0x31798(%rip), %rsi     # 0xab13c
callq 0x3bfaa
movq %rax, %rdi
leaq 0x17c3f(%rip), %rsi     # 0x915f2
callq 0x106fe
movq %r13, 0x10(%rsp)
movq %rax, %rdi
leaq 0x10(%rsp), %rsi
callq 0x11052
movq %rax, %rdi
leaq 0x2b8ce(%rip), %rsi     # 0xa52a2
callq 0x106fe
movq %r14, %rdi
callq 0x68d4
movq %r12, %r15
movq %r12, %rdi
callq 0x2090
leaq 0x28(%rsp), %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x78978
movq 0x38(%rsp), %r12
movq %r15, %rdi
leaq 0x31754(%rip), %rsi     # 0xab15f
leaq 0x3(%rsp), %rdx
callq 0x66a0
xorl %esi, %esi
cmpq $0x1, %r12
sete %sil
movq %r14, %r12
movq %r14, %rdi
movq %r15, %rdx
callq 0x6894
leaq 0x418(%rsp), %r14
movq %r12, %rdi
leaq 0x13c08(%rip), %rsi     # 0x8d647
callq 0x106fe
movq %rax, %rdi
leaq 0x31736(%rip), %rsi     # 0xab184
callq 0x516d4
movq %rax, %rdi
leaq 0x17b95(%rip), %rsi     # 0x915f2
callq 0x106fe
movq %rax, %r13
leaq 0x10(%rsp), %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x78978
movq 0x20(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r13, %rdi
leaq 0x8(%rsp), %rsi
callq 0x107ba
movq %rax, %rdi
leaq 0x13bb1(%rip), %rsi     # 0x8d647
callq 0x106fe
movq %rax, %rdi
leaq 0x1b257(%rip), %rsi     # 0x94cfc
callq 0x106fe
movq %rax, %rdi
leaq 0x17b3e(%rip), %rsi     # 0x915f2
callq 0x106fe
movl $0x1, 0x4(%rsp)
movq %rax, %rdi
leaq 0x4(%rsp), %rsi
callq 0x10736
movq %rax, %rdi
leaq 0x2b7ca(%rip), %rsi     # 0xa52a2
callq 0x106fe
movq %r12, %rdi
callq 0x68d4
movq %r15, %rdi
callq 0x2090
movq %rbp, %rdi
callq 0x16f28
movl %eax, %r13d
movq %r12, %rdi
leaq 0x316a2(%rip), %rsi     # 0xab1a4
movq %r15, %rdx
callq 0x66a0
movzbl %r13b, %esi
movq %r14, %rdi
movq %r12, %rdx
callq 0x6894
movq %r14, %rdi
callq 0x68d4
movq %r12, %rdi
callq 0x2090
movq %rbp, %rdi
callq 0x79c14
movl %eax, %r13d
movq %r12, %rdi
leaq 0x3167f(%rip), %rsi     # 0xab1bd
movq %r15, %rdx
callq 0x66a0
movzbl %r13b, %esi
leaq 0x288(%rsp), %r14
movq %r14, %rdi
movq %r12, %rdx
callq 0x6894
movq %r14, %rdi
callq 0x68d4
movq %r12, %rdi
callq 0x2090
incq %rbx
jmp 0x79813
addq $0x5a8, %rsp            # imm = 0x5A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x79b8d
jmp 0x79b8d
jmp 0x79b8d
movq %rax, %rbx
jmp 0x79bdf
jmp 0x79b94
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
jmp 0x79bda
jmp 0x79bc2
jmp 0x79ba7
jmp 0x79bb0
movq %rax, %rbx
jmp 0x79bd2
jmp 0x79bc2
jmp 0x79bb0
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x68d4
jmp 0x79bd2
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x68d4
leaq 0xd0(%rsp), %rdi
callq 0x2090
movq %rbx, %rdi
callq 0x22f0
movq %rax, %rdi
callq 0x6bba
nop