// File: /workspace/github_cpp_makefile_star2_O1/dsharlet[P]array/test/shape.cpp
// Function: nda::test_auto_strides_body()
TEST(auto_strides) {
  check_resolved_strides<1>({{3, 5, unresolved}}, {1});
  check_resolved_strides<2>({5, 10}, {1, 5});

  // Stride one dimensions mixed in with extent 1 dimensions.
  check_resolved_strides<3>({1, 1, {0, 2, 1}}, {2, 2, 1});
  check_resolved_strides<3>({1, {0, 2, 1}, 1}, {2, 1, 2});
  check_resolved_strides<3>({1, 10, {0, 2, 1}}, {2, 2, 1});
  check_resolved_strides<3>({5, {0, 2, 1}, 1}, {2, 1, 10});

  // Interleaved with row stride.
  check_resolved_strides<3>({5, {0, 4, 20}, {0, 3, 1}}, {3, 20, 1});

  // Interleaved with row stride dense.
  check_resolved_strides<3>({5, {0, 4, 15}, {0, 3, 1}}, {3, 15, 1});

  // Interleaved with row stride oops.
  check_resolved_strides<3>({5, {0, 4, 14}, {0, 3, 1}}, {56, 14, 1});

  test_auto_strides<1>();
  test_auto_strides<2>();
  test_auto_strides<3>();
  test_auto_strides<4>();
  test_auto_strides<5>();
  test_auto_strides<6>();
  test_auto_strides<7>();
  test_auto_strides<8>();
  test_auto_strides<9>();
  test_auto_strides<10>();
}

// Assembly:
pushq %rbx
subq $0x280, %rsp            # imm = 0x280
movabsq $-0x8000000000000000, %rbx # imm = 0x8000000000000000
movq $0x3, 0x40(%rsp)
movq $0x5, 0x48(%rsp)
movq %rbx, 0x50(%rsp)
leaq 0x20(%rsp), %rsi
movq $0x1, (%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x1, %edx
callq 0x89afc
leaq 0x40(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x898f0
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x82d95
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
xorl %eax, %eax
movq %rax, 0x58(%rsp)
movq $0xa, 0x60(%rsp)
movq %rbx, 0x68(%rsp)
movq %rax, 0x70(%rsp)
movl $0x5, %eax
movq %rax, 0x78(%rsp)
movq %rbx, 0x80(%rsp)
leaq 0x20(%rsp), %rsi
movq $0x1, (%rsi)
movq %rax, 0x8(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x2, %edx
callq 0x89afc
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x89b41
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x82e0b
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
xorl %eax, %eax
movq %rax, 0x238(%rsp)
movq $0x2, 0x240(%rsp)
movl $0x1, %ecx
movq %rcx, 0x248(%rsp)
movq %rax, 0x250(%rsp)
movq %rcx, 0x258(%rsp)
movq %rbx, 0x260(%rsp)
movq %rax, 0x268(%rsp)
movq %rcx, 0x270(%rsp)
movq %rbx, 0x278(%rsp)
movups 0x3b86b(%rip), %xmm0    # 0xbe6d0
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
movq %rcx, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x89afc
leaq 0x238(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x89dab
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x82eae
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
xorl %eax, %eax
movq %rax, 0x1f0(%rsp)
movl $0x1, %ecx
movq %rcx, 0x1f8(%rsp)
movq %rbx, 0x200(%rsp)
movq %rax, 0x208(%rsp)
movl $0x2, %edx
movq %rdx, 0x210(%rsp)
movq %rcx, 0x218(%rsp)
movq %rax, 0x220(%rsp)
movq %rcx, 0x228(%rsp)
movq %rbx, 0x230(%rsp)
movups 0x3b7af(%rip), %xmm0    # 0xbe6b8
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
movq %rdx, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x89afc
leaq 0x1f0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x89dab
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x82f52
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
xorl %eax, %eax
movq %rax, 0x1a8(%rsp)
movq $0x2, 0x1b0(%rsp)
movl $0x1, %ecx
movq %rcx, 0x1b8(%rsp)
movq %rax, 0x1c0(%rsp)
movq $0xa, 0x1c8(%rsp)
movq %rbx, 0x1d0(%rsp)
movq %rax, 0x1d8(%rsp)
movq %rcx, 0x1e0(%rsp)
movq %rbx, 0x1e8(%rsp)
leaq 0x20(%rsp), %rsi
movups 0x3b71b(%rip), %xmm0    # 0xbe6d0
movaps %xmm0, (%rsi)
movq %rcx, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x89afc
leaq 0x1a8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x89dab
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x82ff9
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
xorl %eax, %eax
movq %rax, 0x160(%rsp)
movl $0x1, %ecx
movq %rcx, 0x168(%rsp)
movq %rbx, 0x170(%rsp)
movq %rax, 0x178(%rsp)
movq $0x2, 0x180(%rsp)
movq %rcx, 0x188(%rsp)
movq %rax, 0x190(%rsp)
movq $0x5, 0x198(%rsp)
movq %rbx, 0x1a0(%rsp)
movups 0x3b691(%rip), %xmm0    # 0xbe6e8
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
movq $0xa, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x89afc
leaq 0x160(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x89dab
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x830a4
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
xorl %eax, %eax
movq %rax, 0x118(%rsp)
movq $0x3, 0x120(%rsp)
movl $0x1, %ecx
movq %rcx, 0x128(%rsp)
movq %rax, 0x130(%rsp)
movq $0x4, 0x138(%rsp)
movq $0x14, 0x140(%rsp)
movq %rax, 0x148(%rsp)
movq $0x5, 0x150(%rsp)
movq %rbx, 0x158(%rsp)
movups 0x3b5f6(%rip), %xmm0    # 0xbe700
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
movq %rcx, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x89afc
leaq 0x118(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x89dab
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x83153
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
xorl %eax, %eax
movq %rax, 0xd0(%rsp)
movq $0x3, 0xd8(%rsp)
movl $0x1, %ecx
movq %rcx, 0xe0(%rsp)
movq %rax, 0xe8(%rsp)
movq $0x4, 0xf0(%rsp)
movq $0xf, 0xf8(%rsp)
movq %rax, 0x100(%rsp)
movq $0x5, 0x108(%rsp)
movq %rbx, 0x110(%rsp)
movups 0x3b55f(%rip), %xmm0    # 0xbe718
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
movq %rcx, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x89afc
leaq 0xd0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x89dab
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x83202
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
xorl %eax, %eax
movq %rax, 0x88(%rsp)
movq $0x3, 0x90(%rsp)
movl $0x1, %ecx
movq %rcx, 0x98(%rsp)
movq %rax, 0xa0(%rsp)
movq $0x4, 0xa8(%rsp)
movq $0xe, 0xb0(%rsp)
movq %rax, 0xb8(%rsp)
movq $0x5, 0xc0(%rsp)
movq %rbx, 0xc8(%rsp)
movups 0x3b4c8(%rip), %xmm0    # 0xbe730
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
movq %rcx, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x89afc
leaq 0x88(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x89dab
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x832b1
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
callq 0x8b58d
callq 0x8b750
callq 0x8bad0
callq 0x8be15
callq 0x8c458
callq 0x8c72d
callq 0x8cd64
callq 0x8d082
callq 0x8dc4a
callq 0x8dfb1
callq 0x8edae
callq 0x8f174
callq 0x90139
callq 0x9054b
callq 0x9186a
callq 0x91cda
callq 0x9325b
callq 0x93719
callq 0x94e84
callq 0x9539b
addq $0x280, %rsp            # imm = 0x280
popq %rbx
retq
jmp 0x8333e
jmp 0x8335a
jmp 0x8333e
jmp 0x8335a
jmp 0x8333e
jmp 0x8335a
jmp 0x8333e
jmp 0x8335a
jmp 0x8333e
jmp 0x8335a
jmp 0x8333e
jmp 0x8335a
jmp 0x8333e
jmp 0x8335a
jmp 0x8333e
jmp 0x8335a
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x8335d
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
jmp 0x8335d
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2300