// File: /workspace/github_cpp_makefile_star2_O3/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 0x8ba9e
leaq 0x40(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8b892
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x84da9
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 0x8ba9e
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8bae3
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x84e1f
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 0x3b3b7(%rip), %xmm0    # 0xc0230
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
movq %rcx, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x8ba9e
leaq 0x238(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8bd4d
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x84ec2
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 0x3b2fb(%rip), %xmm0    # 0xc0218
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
movq %rdx, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x8ba9e
leaq 0x1f0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8bd4d
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x84f66
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 0x3b267(%rip), %xmm0    # 0xc0230
movaps %xmm0, (%rsi)
movq %rcx, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x8ba9e
leaq 0x1a8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8bd4d
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x8500d
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 0x3b1dd(%rip), %xmm0    # 0xc0248
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
movq $0xa, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x8ba9e
leaq 0x160(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8bd4d
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x850b8
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 0x3b142(%rip), %xmm0    # 0xc0260
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
movq %rcx, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x8ba9e
leaq 0x118(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8bd4d
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x85167
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 0x3b0ab(%rip), %xmm0    # 0xc0278
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
movq %rcx, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x8ba9e
leaq 0xd0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8bd4d
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x85216
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 0x3b014(%rip), %xmm0    # 0xc0290
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
movq %rcx, 0x10(%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x3, %edx
callq 0x8ba9e
leaq 0x88(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8bd4d
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x852c5
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
callq 0x8d503
callq 0x8d692
callq 0x8da12
callq 0x8dc37
callq 0x8e109
callq 0x8e3de
callq 0x8e9f8
callq 0x8ed16
callq 0x8f8c0
callq 0x8fc27
callq 0x90a08
callq 0x90dce
callq 0x91d79
callq 0x9218b
callq 0x93490
callq 0x93900
callq 0x94e67
callq 0x95325
callq 0x96a76
callq 0x96f8d
addq $0x280, %rsp            # imm = 0x280
popq %rbx
retq
jmp 0x85352
jmp 0x8536e
jmp 0x85352
jmp 0x8536e
jmp 0x85352
jmp 0x8536e
jmp 0x85352
jmp 0x8536e
jmp 0x85352
jmp 0x8536e
jmp 0x85352
jmp 0x8536e
jmp 0x85352
jmp 0x8536e
jmp 0x85352
jmp 0x8536e
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x85371
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
jmp 0x85371
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2300