// File: /workspace/github_cpp_makefile_star2_O2/dsharlet[P]array/test/shape.cpp
// Function: nda::test_bounds_body()
TEST(bounds) {
  dim</* Min= */ 0, /* Extent= */ 10> x;
  dense_dim<> y(-2, 12);
  auto s = make_shape(x, y);
  s.resolve();

  auto bounds = s.bounds();
  // Returns a generic shape w/o compile-time min, extents, or strides.
  ASSERT_EQ(bounds.dim<0>().Min, dynamic);
  ASSERT_EQ(bounds.dim<0>().Extent, dynamic);
  ASSERT_EQ(bounds.dim<0>().Stride, dynamic);
  ASSERT_EQ(bounds.dim<1>().Min, dynamic);
  ASSERT_EQ(bounds.dim<1>().Extent, dynamic);
  ASSERT_EQ(bounds.dim<1>().Stride, dynamic);
  // Check that dynamic min and extents are preserved.
  ASSERT_EQ(bounds.dim<0>().min(), x.min());
  ASSERT_EQ(bounds.dim<0>().extent(), x.extent());
  ASSERT_EQ(bounds.dim<1>().min(), y.min());
  ASSERT_EQ(bounds.dim<1>().extent(), y.extent());
  // Bounds have strides set to unresolved.
  ASSERT_EQ(bounds.dim<0>().stride(), nda::unresolved);
  ASSERT_EQ(bounds.dim<1>().stride(), nda::unresolved);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
leaq 0x1d0(%rsp), %rbx
movq %rbx, %rdi
callq 0x7714c
movq 0x8(%rbx), %rax
leaq 0x40(%rsp), %rdx
movq $-0x2, (%rdx)
movq $0xc, 0x8(%rdx)
leaq 0x10(%rsp), %rsi
movq %rax, 0x8(%rsi)
leaq 0x1e0(%rsp), %rbx
movq %rbx, %rdi
callq 0x77e42
movq %rbx, %rdi
callq 0x82632
movq (%rbx), %r14
movq 0x8(%rbx), %rbx
leaq 0x388db(%rip), %rsi     # 0xaa29b
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x66a0
leaq 0x40(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rdx
callq 0x6894
leaq 0x1bc5f(%rip), %rsi     # 0x8d647
leaq 0x40(%rsp), %rdi
callq 0x106fe
leaq 0x388c1(%rip), %rsi     # 0xaa2ba
movq %rax, %rdi
callq 0x11036
leaq 0x1fbea(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x3a059(%rip), %rsi     # 0xaba70
movq %rax, %rdi
callq 0x107ba
leaq 0x1bc21(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x388ec(%rip), %rsi     # 0xaa321
movq %rax, %rdi
callq 0x107f4
leaq 0x1fbae(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x3a00d(%rip), %rsi     # 0xaba60
movq %rax, %rdi
callq 0x107ba
leaq 0x33840(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x40(%rsp), %rdi
callq 0x68d4
leaq 0x10(%rsp), %rdi
callq 0x2090
leaq 0x38849(%rip), %rsi     # 0xaa2ce
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x66a0
leaq 0x40(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rdx
callq 0x6894
leaq 0x1bb9a(%rip), %rsi     # 0x8d647
leaq 0x40(%rsp), %rdi
callq 0x106fe
leaq 0x38832(%rip), %rsi     # 0xaa2f0
movq %rax, %rdi
callq 0x11256
leaq 0x1fb25(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x39f9c(%rip), %rsi     # 0xaba78
movq %rax, %rdi
callq 0x107ba
leaq 0x1bb5c(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x38827(%rip), %rsi     # 0xaa321
movq %rax, %rdi
callq 0x107f4
leaq 0x1fae9(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x39f48(%rip), %rsi     # 0xaba60
movq %rax, %rdi
callq 0x107ba
leaq 0x3377b(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x40(%rsp), %rdi
callq 0x68d4
leaq 0x10(%rsp), %rdi
callq 0x2090
leaq 0x387bd(%rip), %rsi     # 0xaa307
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x66a0
leaq 0x40(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rdx
callq 0x6894
leaq 0x1bad5(%rip), %rsi     # 0x8d647
leaq 0x40(%rsp), %rdi
callq 0x106fe
leaq 0x387a6(%rip), %rsi     # 0xaa329
movq %rax, %rdi
callq 0x11256
leaq 0x1fa60(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x39edf(%rip), %rsi     # 0xaba80
movq %rax, %rdi
callq 0x107ba
leaq 0x1ba97(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x38762(%rip), %rsi     # 0xaa321
movq %rax, %rdi
callq 0x107f4
leaq 0x1fa24(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x39e83(%rip), %rsi     # 0xaba60
movq %rax, %rdi
callq 0x107ba
leaq 0x336b6(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x40(%rsp), %rdi
callq 0x68d4
leaq 0x10(%rsp), %rdi
callq 0x2090
leaq 0x38731(%rip), %rsi     # 0xaa340
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x66a0
leaq 0x40(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rdx
callq 0x6894
leaq 0x1ba10(%rip), %rsi     # 0x8d647
leaq 0x40(%rsp), %rdi
callq 0x106fe
leaq 0x38717(%rip), %rsi     # 0xaa35f
movq %rax, %rdi
callq 0x11036
leaq 0x1f99b(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x39e0a(%rip), %rsi     # 0xaba70
movq %rax, %rdi
callq 0x107ba
leaq 0x1b9d2(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x3869d(%rip), %rsi     # 0xaa321
movq %rax, %rdi
callq 0x107f4
leaq 0x1f95f(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x39dbe(%rip), %rsi     # 0xaba60
movq %rax, %rdi
callq 0x107ba
leaq 0x335f1(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x40(%rsp), %rdi
callq 0x68d4
leaq 0x10(%rsp), %rdi
callq 0x2090
leaq 0x3869f(%rip), %rsi     # 0xaa373
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x66a0
leaq 0x40(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rdx
callq 0x6894
leaq 0x1b94b(%rip), %rsi     # 0x8d647
leaq 0x40(%rsp), %rdi
callq 0x106fe
leaq 0x38688(%rip), %rsi     # 0xaa395
movq %rax, %rdi
callq 0x11256
leaq 0x1f8d6(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x39d4d(%rip), %rsi     # 0xaba78
movq %rax, %rdi
callq 0x107ba
leaq 0x1b90d(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x385d8(%rip), %rsi     # 0xaa321
movq %rax, %rdi
callq 0x107f4
leaq 0x1f89a(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x39cf9(%rip), %rsi     # 0xaba60
movq %rax, %rdi
callq 0x107ba
leaq 0x3352c(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x40(%rsp), %rdi
callq 0x68d4
leaq 0x10(%rsp), %rdi
callq 0x2090
leaq 0x38613(%rip), %rsi     # 0xaa3ac
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x66a0
leaq 0x40(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rdx
callq 0x6894
leaq 0x1b886(%rip), %rsi     # 0x8d647
leaq 0x40(%rsp), %rdi
callq 0x106fe
leaq 0x385fc(%rip), %rsi     # 0xaa3ce
movq %rax, %rdi
callq 0x11256
leaq 0x1f811(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x39c90(%rip), %rsi     # 0xaba80
movq %rax, %rdi
callq 0x107ba
leaq 0x1b848(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x38513(%rip), %rsi     # 0xaa321
movq %rax, %rdi
callq 0x107f4
leaq 0x1f7d5(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x39c34(%rip), %rsi     # 0xaba60
movq %rax, %rdi
callq 0x107ba
leaq 0x33467(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x40(%rsp), %rdi
callq 0x68d4
leaq 0x10(%rsp), %rdi
callq 0x2090
leaq 0x38587(%rip), %rsi     # 0xaa3e5
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x66a0
leaq 0x40(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rdx
callq 0x6894
leaq 0x1b7c1(%rip), %rsi     # 0x8d647
leaq 0x40(%rsp), %rdi
callq 0x106fe
leaq 0x3856f(%rip), %rsi     # 0xaa406
movq %rax, %rdi
callq 0x109ea
leaq 0x1f74c(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x30(%rsp), %rsi
andq $0x0, (%rsi)
movq %rax, %rdi
callq 0x107ba
leaq 0x1b781(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x38529(%rip), %rsi     # 0xaa3fe
movq %rax, %rdi
callq 0x107f4
leaq 0x1f70e(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x38(%rsp), %rsi
andq $0x0, (%rsi)
movq %rax, %rdi
callq 0x107ba
leaq 0x3339e(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x40(%rsp), %rdi
callq 0x68d4
leaq 0x10(%rsp), %rdi
callq 0x2090
leaq 0x384f5(%rip), %rsi     # 0xaa41c
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x66a0
leaq 0x40(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rdx
callq 0x6894
leaq 0x1b6f8(%rip), %rsi     # 0x8d647
leaq 0x40(%rsp), %rdi
callq 0x106fe
leaq 0x384e3(%rip), %rsi     # 0xaa443
movq %rax, %rdi
callq 0x34cb0
leaq 0x1f683(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x30(%rsp), %rsi
movq $0xa, (%rsi)
movq %rax, %rdi
callq 0x107ba
leaq 0x1b6b5(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x38247(%rip), %rsi     # 0xaa1e8
movq %rax, %rdi
callq 0x107d8
leaq 0x1f642(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x38(%rsp), %rsi
movq $0xa, (%rsi)
movq %rax, %rdi
callq 0x107ba
leaq 0x332cf(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x40(%rsp), %rdi
callq 0x68d4
leaq 0x10(%rsp), %rdi
callq 0x2090
leaq 0x38466(%rip), %rsi     # 0xaa45c
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x66a0
xorl %esi, %esi
cmpq $-0x2, %r14
sete %sil
leaq 0x40(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x6894
leaq 0x1b622(%rip), %rsi     # 0x8d647
leaq 0x40(%rsp), %rdi
callq 0x106fe
leaq 0x38447(%rip), %rsi     # 0xaa47d
movq %rax, %rdi
callq 0x109ea
leaq 0x1f5ad(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x30(%rsp), %rsi
movq %r14, (%rsi)
movq %rax, %rdi
callq 0x107ba
leaq 0x1b5e3(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x38402(%rip), %rsi     # 0xaa475
movq %rax, %rdi
callq 0x107f4
leaq 0x1f570(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x38(%rsp), %rsi
movq $-0x2, (%rsi)
movq %rax, %rdi
callq 0x107ba
leaq 0x331fd(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x40(%rsp), %rdi
callq 0x68d4
leaq 0x10(%rsp), %rdi
callq 0x2090
leaq 0x383cb(%rip), %rsi     # 0xaa493
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x66a0
xorl %esi, %esi
cmpq $0xc, %rbx
sete %sil
leaq 0x40(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x6894
leaq 0x1b550(%rip), %rsi     # 0x8d647
leaq 0x40(%rsp), %rdi
callq 0x106fe
leaq 0x383b2(%rip), %rsi     # 0xaa4ba
movq %rax, %rdi
callq 0x34cb0
leaq 0x1f4db(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x30(%rsp), %rsi
movq %rbx, (%rsi)
movq %rax, %rdi
callq 0x107ba
leaq 0x1b511(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x38102(%rip), %rsi     # 0xaa247
movq %rax, %rdi
callq 0x107d8
leaq 0x1f49e(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x38(%rsp), %rsi
movq $0xc, (%rsi)
movq %rax, %rdi
callq 0x107ba
leaq 0x3312b(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x40(%rsp), %rdi
callq 0x68d4
leaq 0x10(%rsp), %rdi
callq 0x2090
leaq 0x38339(%rip), %rsi     # 0xaa4d3
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x66a0
leaq 0x40(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rdx
callq 0x6894
leaq 0x1b485(%rip), %rsi     # 0x8d647
leaq 0x40(%rsp), %rdi
callq 0x106fe
leaq 0x3832c(%rip), %rsi     # 0xaa4ff
movq %rax, %rdi
callq 0x34cb0
leaq 0x1f410(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
movabsq $-0x8000000000000000, %rbx # imm = 0x8000000000000000
leaq 0x30(%rsp), %rsi
movq %rbx, (%rsi)
movq %rax, %rdi
callq 0x107ba
leaq 0x1b43c(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x382d5(%rip), %rsi     # 0xaa4ef
movq %rax, %rdi
callq 0x3bfaa
leaq 0x1f3c9(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x39830(%rip), %rsi     # 0xaba68
movq %rax, %rdi
callq 0x107ba
leaq 0x3305b(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x40(%rsp), %rdi
callq 0x68d4
leaq 0x10(%rsp), %rdi
callq 0x2090
leaq 0x382ae(%rip), %rsi     # 0xaa518
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x66a0
leaq 0x40(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rdx
callq 0x6894
leaq 0x1b3b5(%rip), %rsi     # 0x8d647
leaq 0x40(%rsp), %rdi
callq 0x106fe
leaq 0x382a1(%rip), %rsi     # 0xaa544
movq %rax, %rdi
callq 0x34cb0
leaq 0x1f340(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x30(%rsp), %rsi
movq %rbx, (%rsi)
movq %rax, %rdi
callq 0x107ba
leaq 0x1b376(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x3820f(%rip), %rsi     # 0xaa4ef
movq %rax, %rdi
callq 0x3bfaa
leaq 0x1f303(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0x3976a(%rip), %rsi     # 0xaba68
movq %rax, %rdi
callq 0x107ba
leaq 0x32f95(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x40(%rsp), %rdi
callq 0x68d4
leaq 0x10(%rsp), %rdi
callq 0x2090
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r14
retq
jmp 0x7234a
jmp 0x7234a
jmp 0x7234a
jmp 0x7234a
jmp 0x7234a
jmp 0x7234a
jmp 0x7234a
jmp 0x7234a
jmp 0x7234a
jmp 0x7234a
jmp 0x7234a
movq %rax, %rbx
jmp 0x7237a
jmp 0x7236d
jmp 0x7236d
jmp 0x7238e
jmp 0x7236d
jmp 0x7239d
jmp 0x7236d
jmp 0x723ac
jmp 0x7236d
jmp 0x723bb
jmp 0x7236d
jmp 0x7236d
jmp 0x7236d
jmp 0x7236d
jmp 0x7236d
jmp 0x7236d
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2090
movq %rbx, %rdi
callq 0x22f0
jmp 0x723ca
jmp 0x723d9
jmp 0x7238e
jmp 0x7239d
jmp 0x723ac
jmp 0x723bb
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x68d4
jmp 0x72370
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x68d4
jmp 0x72370
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x68d4
jmp 0x72370
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x68d4
jmp 0x72370
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x68d4
jmp 0x72370
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x68d4
jmp 0x72370
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x68d4
jmp 0x72370
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x68d4
jmp 0x72370
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x68d4
jmp 0x72370
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x68d4
jmp 0x72370
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x68d4
jmp 0x72370
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x68d4
jmp 0x72370
movq %rax, %rdi
callq 0x6bba