Sfoglia il codice sorgente

Check for use of `InstId`s from the wrong `SemIR::File` (#5997)

Use the `CheckIRId` as a unique identifier for the scope of an `InstId`
- if an `InstId` is created within the scope of one `CheckIRId` it must
not be used in the scope of a different `CheckIRId`.

This is achieved without extra storage, but with false negatives for
large inputs.

When an `InstId` is created, the original index of the `Inst` is XORed
with a tag derived from the `CheckIRId` to produce the final `InstId`.
When the `InstId` is used, the expected tag is XORed with the `InstId`
to get back to the original index - if the tags don't match, the
resulting index will be corrupted, likely too large - resulting in an
out of bounds index CHECK-failure.

(the tag value is derived as such:
* take the CheckIRId
* left shift one bit (padding zero)
* left shift another bit (padding 1 - used to signify that the resulting
`InstId` has a tag combined into it)
* reverse the bits

In this way, the tag is unlikely to overlap with the index for small
test cases - making it possible to separate out the `CheckIRId` from the
index in these cases to provide more meaningful debugging/CHECK
messages, and more informative `SemIR` textual dumping that can now
include the `CheckIRId` along with the `Inst`'s index in the name of an
`inst`)

The test churn here is improved printing as tagged `InstId`s can now,
with best effort (more likely for small test cases where the `CheckIRId`
and the `Inst` index aren't at risk of overlapping from the high and low
bits), render the `CheckIRId` as part of the inst's name. Going from
`instNN` to `irMM.instNN`.

---------

Co-authored-by: Richard Smith <richard@metafoo.co.uk>
David Blaikie 7 mesi fa
parent
commit
12fa65e53c
31 ha cambiato i file con 2193 aggiunte e 2032 eliminazioni
  1. 1 0
      toolchain/base/BUILD
  2. 19 9
      toolchain/base/fixed_size_value_store.h
  3. 116 15
      toolchain/base/value_store.h
  4. 1 1
      toolchain/check/check_unit.cpp
  5. 3 3
      toolchain/check/context.cpp
  6. 6 3
      toolchain/check/import_ref.cpp
  7. 176 176
      toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon
  8. 61 61
      toolchain/check/testdata/basics/raw_sem_ir/multifile.carbon
  9. 61 61
      toolchain/check/testdata/basics/raw_sem_ir/multifile_with_textual_ir.carbon
  10. 1527 1527
      toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon
  11. 120 120
      toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon
  12. 1 1
      toolchain/check/testdata/basics/verbose.carbon
  13. 2 2
      toolchain/check/testdata/if_expr/fail_not_in_function.carbon
  14. 2 2
      toolchain/check/testdata/let/compile_time_bindings.carbon
  15. 1 1
      toolchain/check/testdata/let/fail_missing_value.carbon
  16. 8 8
      toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon
  17. 4 4
      toolchain/driver/compile_subcommand.cpp
  18. 1 1
      toolchain/language_server/context.cpp
  19. 3 3
      toolchain/lower/file_context.cpp
  20. 25 9
      toolchain/sem_ir/constant.h
  21. 2 1
      toolchain/sem_ir/file.cpp
  22. 1 1
      toolchain/sem_ir/file.h
  23. 5 3
      toolchain/sem_ir/formatter.cpp
  24. 2 0
      toolchain/sem_ir/generic.h
  25. 6 1
      toolchain/sem_ir/ids.cpp
  26. 4 0
      toolchain/sem_ir/inst.cpp
  27. 13 5
      toolchain/sem_ir/inst.h
  28. 1 1
      toolchain/sem_ir/inst_fingerprinter.cpp
  29. 16 6
      toolchain/sem_ir/inst_namer.cpp
  30. 1 3
      toolchain/sem_ir/inst_namer.h
  31. 4 4
      toolchain/sem_ir/yaml_test.cpp

+ 1 - 0
toolchain/base/BUILD

@@ -66,6 +66,7 @@ cc_library(
     hdrs = ["fixed_size_value_store.h"],
     deps = [
         ":mem_usage",
+        ":value_store",
         ":value_store_types",
         "//common:check",
         "@llvm-project//llvm:Support",

+ 19 - 9
toolchain/base/fixed_size_value_store.h

@@ -13,6 +13,7 @@
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/iterator_range.h"
 #include "toolchain/base/mem_usage.h"
+#include "toolchain/base/value_store.h"
 #include "toolchain/base/value_store_types.h"
 
 namespace Carbon {
@@ -47,9 +48,11 @@ class FixedSizeValueStore {
   }
 
   // Makes a ValueStore of the specified size, initialized to a default.
-  static auto MakeWithExplicitSize(size_t size, ConstRefType default_value)
+  static auto MakeWithExplicitSize(IdTag tag, size_t size,
+                                   ConstRefType default_value)
       -> FixedSizeValueStore {
     FixedSizeValueStore store;
+    store.tag_ = tag;
     store.values_.resize(size, default_value);
     return store;
   }
@@ -73,7 +76,8 @@ class FixedSizeValueStore {
   template <typename ValueStoreT>
     requires std::same_as<IdT, typename ValueStoreT::IdType>
   explicit FixedSizeValueStore(const ValueStoreT& size_source,
-                               ConstRefType default_value) {
+                               ConstRefType default_value)
+      : tag_(size_source.GetIdTag()) {
     values_.resize(size_source.size(), default_value);
   }
 
@@ -86,7 +90,8 @@ class FixedSizeValueStore {
       llvm::function_ref<
           auto(IdT, typename ValueStoreT::ConstRefType)->ValueType>
           factory_fn)
-      : values_(llvm::map_range(source.enumerate(), factory_fn)) {}
+      : values_(llvm::map_range(source.enumerate(), factory_fn)),
+        tag_(GetIdTag(source)) {}
 
   // Move-only.
   FixedSizeValueStore(FixedSizeValueStore&&) noexcept = default;
@@ -95,20 +100,23 @@ class FixedSizeValueStore {
 
   // Sets the value for an ID.
   auto Set(IdT id, ValueType value) -> void {
-    CARBON_DCHECK(id.index >= 0, "{0}", id);
-    values_[id.index] = value;
+    auto index = tag_.Remove(id.index);
+    CARBON_DCHECK(index >= 0, "{0}", id);
+    values_[index] = value;
   }
 
   // Returns a mutable value for an ID.
   auto Get(IdT id) -> RefType {
-    CARBON_DCHECK(id.index >= 0, "{0}", id);
-    return values_[id.index];
+    auto index = tag_.Remove(id.index);
+    CARBON_DCHECK(index >= 0, "{0}", id);
+    return values_[index];
   }
 
   // Returns the value for an ID.
   auto Get(IdT id) const -> ConstRefType {
-    CARBON_DCHECK(id.index >= 0, "{0}", id);
-    return values_[id.index];
+    auto index = tag_.Remove(id.index);
+    CARBON_DCHECK(index >= 0, "{0}", id);
+    return values_[index];
   }
 
   // Collects memory usage of the values.
@@ -135,6 +143,8 @@ class FixedSizeValueStore {
 
   // Storage for the `ValueT` objects, indexed by the id.
   llvm::SmallVector<ValueT, 0> values_;
+
+  IdTag tag_;
 };
 
 }  // namespace Carbon

+ 116 - 15
toolchain/base/value_store.h

@@ -32,6 +32,81 @@ class ValueStoreNotPrintable {};
 
 }  // namespace Internal
 
+struct IdTag {
+  IdTag()
+      : id_tag_(0),
+        initial_reserved_ids_(std::numeric_limits<int32_t>::max()) {}
+  explicit IdTag(int32_t id_index, int32_t initial_reserved_ids)
+      : initial_reserved_ids_(initial_reserved_ids) {
+    // Shift down by 1 to get out of the high bit to avoid using any negative
+    // ids, since they have special uses.
+    // Shift down by another 1 to free up the second highest bit for a marker to
+    // indicate whether the index is tagged (& needs to be untagged) or not.
+    // Add one to the index so it's not zero-based, to make it a bit less likely
+    // this doesn't collide with anything else (though with the
+    // second-highest-bit-tagging this might not be needed).
+    id_tag_ = llvm::reverseBits((((id_index + 1) << 1) | 1) << 1);
+  }
+  auto GetCheckIRId() const -> int32_t {
+    return (llvm::reverseBits(id_tag_) >> 2) - 1;
+  }
+  auto Apply(int32_t index) const -> int32_t {
+    if (index < initial_reserved_ids_) {
+      return index;
+    }
+    // assert that id_tag_ doesn't have the second highest bit set
+    return index ^ id_tag_;
+  }
+  static auto DecomposeWithBestEffort(int32_t tagged_index)
+      -> std::pair<int32_t, int32_t> {
+    if (tagged_index < 0) {
+      return {-1, tagged_index};
+    }
+    if ((llvm::reverseBits(2) & tagged_index) == 0) {
+      return {-1, tagged_index};
+    }
+    int length = 0;
+    int location = 0;
+    for (int i = 0; i != 32; ++i) {
+      int current_run = 0;
+      int location_of_current_run = i;
+      while (i != 32 && (tagged_index & (1 << i)) == 0) {
+        ++current_run;
+        ++i;
+      }
+      if (current_run != 0) {
+        --i;
+      }
+      if (current_run > length) {
+        length = current_run;
+        location = location_of_current_run;
+      }
+    }
+    if (length < 8) {
+      return {-1, tagged_index};
+    }
+    auto index_mask = llvm::maskTrailingOnes<uint32_t>(location);
+    auto ir_id = (llvm::reverseBits(tagged_index & ~index_mask) >> 2) - 1;
+    auto index = tagged_index & index_mask;
+    return {ir_id, index};
+  }
+  auto Remove(int32_t tagged_index) const -> int32_t {
+    if ((llvm::reverseBits(2) & tagged_index) == 0) {
+      CARBON_DCHECK(tagged_index < initial_reserved_ids_,
+                    "This untagged index is outside the initial reserved ids "
+                    "and should have been tagged.");
+      return tagged_index;
+    }
+    auto index = tagged_index ^ id_tag_;
+    CARBON_DCHECK(index >= initial_reserved_ids_,
+                  "When removing tagging bits, found an index that "
+                  "shouldn't've been tagged in the first place.");
+    return index;
+  }
+  int32_t id_tag_;
+  int32_t initial_reserved_ids_;
+};
+
 // A simple wrapper for accumulating values, providing IDs to later retrieve the
 // value. This does not do deduplication.
 template <typename IdT, typename ValueT>
@@ -74,6 +149,7 @@ class ValueStore
   };
 
   ValueStore() = default;
+  explicit ValueStore(IdTag tag) : tag_(tag) {}
 
   // Stores the value and returns an ID to reference it.
   auto Add(ValueType value) -> IdType {
@@ -82,8 +158,8 @@ class ValueStore
     // tracking down issues easier.
     CARBON_DCHECK(size_ < std::numeric_limits<int32_t>::max(), "Id overflow");
 
-    IdType id(size_);
-    auto [chunk_index, pos] = IdToChunkIndices(id);
+    IdType id(tag_.Apply(size_));
+    auto [chunk_index, pos] = RawIndexToChunkIndices(size_);
     ++size_;
 
     CARBON_DCHECK(static_cast<size_t>(chunk_index) <= chunks_.size(),
@@ -99,16 +175,12 @@ class ValueStore
 
   // Returns a mutable value for an ID.
   auto Get(IdType id) -> RefType {
-    CARBON_DCHECK(id.index >= 0, "{0}", id);
-    CARBON_DCHECK(id.index < size_, "{0}", id);
     auto [chunk_index, pos] = IdToChunkIndices(id);
     return chunks_[chunk_index].Get(pos);
   }
 
   // Returns the value for an ID.
   auto Get(IdType id) const -> ConstRefType {
-    CARBON_DCHECK(id.index >= 0, "{0}", id);
-    CARBON_DCHECK(id.index < size_, "{0}", id);
     auto [chunk_index, pos] = IdToChunkIndices(id);
     return chunks_[chunk_index].Get(pos);
   }
@@ -118,7 +190,7 @@ class ValueStore
     if (size <= size_) {
       return;
     }
-    auto [final_chunk_index, _] = IdToChunkIndices(IdType(size - 1));
+    auto [final_chunk_index, _] = RawIndexToChunkIndices(size - 1);
     chunks_.resize(final_chunk_index + 1);
   }
 
@@ -128,10 +200,10 @@ class ValueStore
       return;
     }
 
-    auto [begin_chunk_index, begin_pos] = IdToChunkIndices(IdType(size_));
+    auto [begin_chunk_index, begin_pos] = RawIndexToChunkIndices(size_);
     // Use an inclusive range so that if `size` would be the next chunk, we
     // don't try doing something with it.
-    auto [end_chunk_index, end_pos] = IdToChunkIndices(IdType(size - 1));
+    auto [end_chunk_index, end_pos] = RawIndexToChunkIndices(size - 1);
     chunks_.resize(end_chunk_index + 1);
 
     // If the begin and end chunks are the same, we only fill from begin to end.
@@ -192,13 +264,33 @@ class ValueStore
     // `mapped_iterator` incorrectly infers the pointer type for `PointerProxy`.
     // NOLINTNEXTLINE(readability-const-return-type)
     auto index_to_id = [&](int32_t i) -> const std::pair<IdType, ConstRefType> {
-      return std::pair<IdType, ConstRefType>(IdType(i), Get(IdType(i)));
+      IdType id(tag_.Apply(i));
+      return std::pair<IdType, ConstRefType>(id, Get(id));
     };
     // Because indices into `ValueStore` are all sequential values from 0, we
     // can use llvm::seq to walk all indices in the store.
     return llvm::map_range(llvm::seq(size_), index_to_id);
   }
 
+  auto GetIdTag() const -> IdTag { return tag_; }
+  auto GetRawIndex(IdT id) const -> int32_t {
+    auto index = tag_.Remove(id.index);
+    CARBON_DCHECK(index >= 0, "{0}", index);
+    // Attempt to decompose id.index to include extra detail in the check here
+#ifndef NDEBUG
+    if (index >= size_) {
+      auto [ir_id, decomposed_index] = IdTag::DecomposeWithBestEffort(id.index);
+      CARBON_DCHECK(
+          index < size_,
+          "Untagged index was outside of container range. Possibly tagged "
+          "index {0}. Best-effort decomposition: CheckIRId: {1}, index: {2}. "
+          "The IdTag for this container is: {3}",
+          id.index, ir_id, decomposed_index, tag_.GetCheckIRId());
+    }
+#endif
+    return index;
+  }
+
  private:
   // A chunk of `ValueType`s which has a fixed capacity, but variable size.
   // Tracks the size internally for verifying bounds.
@@ -312,9 +404,10 @@ class ValueStore
     int32_t num_ = 0;
   };
 
-  // Converts an id into an index into the set of chunks, and an offset into
-  // that specific chunk. Looks for index overflow in non-optimized builds.
-  static auto IdToChunkIndices(IdType id) -> std::pair<int32_t, int32_t> {
+  // Converts a raw index into an index into the set of chunks, and an offset
+  // into that specific chunk. Looks for index overflow in non-optimized builds.
+  static auto RawIndexToChunkIndices(int32_t index)
+      -> std::pair<int32_t, int32_t> {
     constexpr auto LowBits = Chunk::IndexBits();
 
     // Verify there are no unused bits when indexing up to the `Capacity`. This
@@ -328,16 +421,24 @@ class ValueStore
     static_assert(LowBits < 30);
 
     // The index of the chunk is the high bits.
-    auto chunk = id.index >> LowBits;
+    auto chunk = index >> LowBits;
     // The index into the chunk is the low bits.
-    auto pos = id.index & ((1 << LowBits) - 1);
+    auto pos = index & ((1 << LowBits) - 1);
     return {chunk, pos};
   }
 
+  // Converts an id into an index into the set of chunks, and an offset into
+  // that specific chunk.
+  auto IdToChunkIndices(IdType id) const -> std::pair<int32_t, int32_t> {
+    return RawIndexToChunkIndices(GetRawIndex(id));
+  }
+
   // Number of elements added to the store. The number should never exceed what
   // fits in an `int32_t`, which is checked in non-optimized builds in Add().
   int32_t size_ = 0;
 
+  IdTag tag_;
+
   // Storage for the `ValueType` objects, indexed by the id. We use a vector of
   // chunks of `ValueType` instead of just a vector of `ValueType` so that
   // addresses of `ValueType` objects are stable. This allows the rest of the

+ 1 - 1
toolchain/check/check_unit.cpp

@@ -195,7 +195,7 @@ auto CheckUnit::CollectTransitiveImports(SemIR::InstId import_decl_id,
   // exported to this IR.
   auto ir_to_result_index =
       FixedSizeValueStore<SemIR::CheckIRId, int>::MakeWithExplicitSize(
-          unit_and_imports_->unit->total_ir_count, -1);
+          IdTag(), unit_and_imports_->unit->total_ir_count, -1);
 
   // First add direct imports. This means that if an entity is imported both
   // directly and indirectly, the import path will reflect the direct import.

+ 3 - 3
toolchain/check/context.cpp

@@ -31,9 +31,9 @@ Context::Context(DiagnosticEmitterBase* emitter,
       scope_stack_(sem_ir_),
       deferred_definition_worklist_(vlog_stream),
       vtable_stack_("vtable_stack_", *sem_ir, vlog_stream),
-      check_ir_map_(
-          FixedSizeValueStore<SemIR::CheckIRId, SemIR::ImportIRId>::
-              MakeWithExplicitSize(total_ir_count_, SemIR::ImportIRId::None)),
+      check_ir_map_(FixedSizeValueStore<SemIR::CheckIRId, SemIR::ImportIRId>::
+                        MakeWithExplicitSize(IdTag(), total_ir_count_,
+                                             SemIR::ImportIRId::None)),
       global_init_(this),
       region_stack_([this](SemIR::LocId loc_id, std::string label) {
         TODO(loc_id, label);

+ 6 - 3
toolchain/check/import_ref.cpp

@@ -36,8 +36,9 @@ namespace Carbon::Check {
 // Adds the ImportIR, excluding the update to the check_ir_map.
 static auto InternalAddImportIR(Context& context, SemIR::ImportIR import_ir)
     -> SemIR::ImportIRId {
-  context.import_ir_constant_values().push_back(
-      SemIR::ConstantValueStore(SemIR::ConstantId::None));
+  context.import_ir_constant_values().push_back(SemIR::ConstantValueStore(
+      SemIR::ConstantId::None,
+      import_ir.sem_ir ? &import_ir.sem_ir->insts() : nullptr));
   return context.import_irs().Add(import_ir);
 }
 
@@ -50,7 +51,9 @@ static auto SetSpecialImportIR(Context& context, SemIR::ImportIR import_ir,
     ir_id = AddImportIR(context, import_ir);
   } else {
     // We don't have a check_ir_id, so add without touching check_ir_map.
-    ir_id = InternalAddImportIR(context, import_ir);
+    context.import_ir_constant_values().push_back(
+        SemIR::ConstantValueStore(SemIR::ConstantValueStore::Unusable));
+    ir_id = context.import_irs().Add(import_ir);
   }
   CARBON_CHECK(ir_id == expected_import_ir_id,
                "Actual ImportIRId ($0) != Expected ImportIRId ({1})", ir_id,

+ 176 - 176
toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon

@@ -38,16 +38,16 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:   import_ir_insts:
 // CHECK:STDOUT:     import_ir_inst0: {ir_id: ir1, clang_source_loc_id: clang_source_loc0}
 // CHECK:STDOUT:   clang_decls:
-// CHECK:STDOUT:     clang_decl_id0:  {key: "<translation unit>", inst_id: inst16}
-// CHECK:STDOUT:     clang_decl_id1:  {key: "struct X {}", inst_id: inst18}
-// CHECK:STDOUT:     clang_decl_id2:  {key: {decl: "void f(X x = {})", num_params: 0}, inst_id: inst41}
-// CHECK:STDOUT:     clang_decl_id3:  {key: {decl: "extern void f__carbon_thunk()", num_params: 0}, inst_id: inst44}
-// CHECK:STDOUT:     clang_decl_id4:  {key: {decl: "void f(X x = {})", num_params: 1}, inst_id: inst55}
-// CHECK:STDOUT:     clang_decl_id5:  {key: {decl: "extern void f__carbon_thunk(X * _Nonnull x)", num_params: 1}, inst_id: inst64}
+// CHECK:STDOUT:     clang_decl_id0:  {key: "<translation unit>", inst_id: ir0.inst16}
+// CHECK:STDOUT:     clang_decl_id1:  {key: "struct X {}", inst_id: ir0.inst18}
+// CHECK:STDOUT:     clang_decl_id2:  {key: {decl: "void f(X x = {})", num_params: 0}, inst_id: ir0.inst41}
+// CHECK:STDOUT:     clang_decl_id3:  {key: {decl: "extern void f__carbon_thunk()", num_params: 0}, inst_id: ir0.inst44}
+// CHECK:STDOUT:     clang_decl_id4:  {key: {decl: "void f(X x = {})", num_params: 1}, inst_id: ir0.inst55}
+// CHECK:STDOUT:     clang_decl_id5:  {key: {decl: "extern void f__carbon_thunk(X * _Nonnull x)", num_params: 1}, inst_id: ir0.inst64}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst16, name1: inst27}}
-// CHECK:STDOUT:     name_scope1:     {inst: inst16, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name3: inst18, name4: inst38}}
-// CHECK:STDOUT:     name_scope2:     {inst: inst18, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: ir0.inst16, name1: ir0.inst27}}
+// CHECK:STDOUT:     name_scope1:     {inst: ir0.inst16, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name3: ir0.inst18, name4: ir0.inst38}}
+// CHECK:STDOUT:     name_scope2:     {inst: ir0.inst18, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
 // CHECK:STDOUT:   entity_names:
 // CHECK:STDOUT:     entity_name0:    {name: name2, parent_scope: name_scope<none>, index: -1, is_template: 0, clang_decl_id: clang_decl_id<none>}
 // CHECK:STDOUT:     entity_name1:    {name: name2, parent_scope: name_scope<none>, index: -1, is_template: 0, clang_decl_id: clang_decl_id<none>}
@@ -59,7 +59,7 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:     function3:       {name: name4, parent_scope: name_scope1, call_params_id: inst_block13}
 // CHECK:STDOUT:     function4:       {name: name6, parent_scope: name_scope1, call_params_id: inst_block18}
 // CHECK:STDOUT:   classes:
-// CHECK:STDOUT:     class0:          {name: name3, parent_scope: name_scope1, self_type_id: type(inst19), inheritance_kind: Base, is_dynamic: 0, scope_id: name_scope2, body_block_id: inst_block10, adapt_id: inst<none>, base_id: inst<none>, complete_type_witness_id: inst33, vtable_decl_id: inst<none>}}
+// CHECK:STDOUT:     class0:          {name: name3, parent_scope: name_scope1, self_type_id: type(ir0.inst19), inheritance_kind: Base, is_dynamic: 0, scope_id: name_scope2, body_block_id: inst_block10, adapt_id: inst<none>, base_id: inst<none>, complete_type_witness_id: ir0.inst33, vtable_decl_id: inst<none>}}
 // CHECK:STDOUT:   generics:        {}
 // CHECK:STDOUT:   specifics:       {}
 // CHECK:STDOUT:   struct_type_fields:
@@ -71,30 +71,30 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     'type(inst28)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst29)}
-// CHECK:STDOUT:     'type(inst29)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst29)}
+// CHECK:STDOUT:     'type(ir0.inst28)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst29)}
+// CHECK:STDOUT:     'type(ir0.inst29)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst29)}
 // CHECK:STDOUT:     'type(inst(WitnessType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     'type(inst32)':
-// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst35)}
-// CHECK:STDOUT:     'type(inst35)':
-// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst35)}
-// CHECK:STDOUT:     'type(inst19)':
-// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst35)}
-// CHECK:STDOUT:     'type(inst37)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst29)}
-// CHECK:STDOUT:     'type(inst42)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst29)}
-// CHECK:STDOUT:     'type(inst45)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst29)}
-// CHECK:STDOUT:     'type(inst56)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst29)}
-// CHECK:STDOUT:     'type(inst65)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst29)}
-// CHECK:STDOUT:     'type(inst58)':
-// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst58)}
+// CHECK:STDOUT:     'type(ir0.inst32)':
+// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(ir0.inst35)}
+// CHECK:STDOUT:     'type(ir0.inst35)':
+// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(ir0.inst35)}
+// CHECK:STDOUT:     'type(ir0.inst19)':
+// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(ir0.inst35)}
+// CHECK:STDOUT:     'type(ir0.inst37)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst29)}
+// CHECK:STDOUT:     'type(ir0.inst42)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst29)}
+// CHECK:STDOUT:     'type(ir0.inst45)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst29)}
+// CHECK:STDOUT:     'type(ir0.inst56)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst29)}
+// CHECK:STDOUT:     'type(ir0.inst65)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst29)}
+// CHECK:STDOUT:     'type(ir0.inst58)':
+// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(ir0.inst58)}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     'inst(TypeType)':  {kind: TypeType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(AutoType)':  {kind: AutoType, type: type(TypeType)}
@@ -111,62 +111,62 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:     'inst(VtableType)': {kind: VtableType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(WitnessType)': {kind: WitnessType, type: type(TypeType)}
 // CHECK:STDOUT:     inst14:          {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst15:          {kind: ImportCppDecl}
-// CHECK:STDOUT:     inst16:          {kind: Namespace, arg0: name_scope1, arg1: inst15, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst17:          {kind: NameRef, arg0: name0, arg1: inst16, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst18:          {kind: ClassDecl, arg0: class0, arg1: inst_block<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst19:          {kind: ClassType, arg0: class0, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst20:          {kind: NameRef, arg0: name3, arg1: inst18, type: type(TypeType)}
-// CHECK:STDOUT:     inst21:          {kind: BindName, arg0: entity_name0, arg1: inst25, type: type(inst19)}
-// CHECK:STDOUT:     inst22:          {kind: PatternType, arg0: inst19, type: type(TypeType)}
-// CHECK:STDOUT:     inst23:          {kind: BindingPattern, arg0: entity_name0, type: type(inst22)}
-// CHECK:STDOUT:     inst24:          {kind: ValueParamPattern, arg0: inst23, arg1: call_param0, type: type(inst22)}
-// CHECK:STDOUT:     inst25:          {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(inst19)}
-// CHECK:STDOUT:     inst26:          {kind: SpliceBlock, arg0: inst_block4, arg1: inst20, type: type(TypeType)}
-// CHECK:STDOUT:     inst27:          {kind: FunctionDecl, arg0: function0, arg1: inst_block8, type: type(inst28)}
-// CHECK:STDOUT:     inst28:          {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst29:          {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst30:          {kind: StructValue, arg0: inst_block_empty, type: type(inst28)}
-// CHECK:STDOUT:     inst31:          {kind: CustomLayoutType, arg0: struct_type_fields0, arg1: custom_layout1, type: type(TypeType)}
-// CHECK:STDOUT:     inst32:          {kind: CustomLayoutType, arg0: struct_type_fields0, arg1: custom_layout1, type: type(TypeType)}
-// CHECK:STDOUT:     inst33:          {kind: CompleteTypeWitness, arg0: inst31, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst34:          {kind: CompleteTypeWitness, arg0: inst32, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst35:          {kind: PointerType, arg0: inst32, type: type(TypeType)}
-// CHECK:STDOUT:     inst36:          {kind: NameRef, arg0: name0, arg1: inst16, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst37:          {kind: CppOverloadSetType, arg0: cpp_overload_set0, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst38:          {kind: CppOverloadSetValue, arg0: cpp_overload_set0, type: type(inst37)}
-// CHECK:STDOUT:     inst39:          {kind: CppOverloadSetValue, arg0: cpp_overload_set0, type: type(inst37)}
-// CHECK:STDOUT:     inst40:          {kind: NameRef, arg0: name4, arg1: inst38, type: type(inst37)}
-// CHECK:STDOUT:     inst41:          {kind: FunctionDecl, arg0: function1, arg1: inst_block_empty, type: type(inst42)}
-// CHECK:STDOUT:     inst42:          {kind: FunctionType, arg0: function1, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst43:          {kind: StructValue, arg0: inst_block_empty, type: type(inst42)}
-// CHECK:STDOUT:     inst44:          {kind: FunctionDecl, arg0: function2, arg1: inst_block_empty, type: type(inst45)}
-// CHECK:STDOUT:     inst45:          {kind: FunctionType, arg0: function2, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst46:          {kind: StructValue, arg0: inst_block_empty, type: type(inst45)}
-// CHECK:STDOUT:     inst47:          {kind: Call, arg0: inst44, arg1: inst_block_empty, type: type(inst29)}
-// CHECK:STDOUT:     inst48:          {kind: NameRef, arg0: name0, arg1: inst16, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst49:          {kind: NameRef, arg0: name4, arg1: inst38, type: type(inst37)}
-// CHECK:STDOUT:     inst50:          {kind: NameRef, arg0: name2, arg1: inst21, type: type(inst19)}
-// CHECK:STDOUT:     inst51:          {kind: BindName, arg0: entity_name1, arg1: inst54, type: type(inst19)}
-// CHECK:STDOUT:     inst52:          {kind: BindingPattern, arg0: entity_name1, type: type(inst22)}
-// CHECK:STDOUT:     inst53:          {kind: ValueParamPattern, arg0: inst52, arg1: call_param0, type: type(inst22)}
-// CHECK:STDOUT:     inst54:          {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(inst19)}
-// CHECK:STDOUT:     inst55:          {kind: FunctionDecl, arg0: function3, arg1: inst_block15, type: type(inst56)}
-// CHECK:STDOUT:     inst56:          {kind: FunctionType, arg0: function3, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst57:          {kind: StructValue, arg0: inst_block_empty, type: type(inst56)}
-// CHECK:STDOUT:     inst58:          {kind: PointerType, arg0: inst19, type: type(TypeType)}
-// CHECK:STDOUT:     inst59:          {kind: BindName, arg0: entity_name2, arg1: inst63, type: type(inst58)}
-// CHECK:STDOUT:     inst60:          {kind: PatternType, arg0: inst58, type: type(TypeType)}
-// CHECK:STDOUT:     inst61:          {kind: BindingPattern, arg0: entity_name2, type: type(inst60)}
-// CHECK:STDOUT:     inst62:          {kind: ValueParamPattern, arg0: inst61, arg1: call_param0, type: type(inst60)}
-// CHECK:STDOUT:     inst63:          {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(inst58)}
-// CHECK:STDOUT:     inst64:          {kind: FunctionDecl, arg0: function4, arg1: inst_block20, type: type(inst65)}
-// CHECK:STDOUT:     inst65:          {kind: FunctionType, arg0: function4, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst66:          {kind: StructValue, arg0: inst_block_empty, type: type(inst65)}
-// CHECK:STDOUT:     inst67:          {kind: ValueAsRef, arg0: inst50, type: type(inst19)}
-// CHECK:STDOUT:     inst68:          {kind: AddrOf, arg0: inst67, type: type(inst58)}
-// CHECK:STDOUT:     inst69:          {kind: Call, arg0: inst64, arg1: inst_block22, type: type(inst29)}
-// CHECK:STDOUT:     inst70:          {kind: Return}
+// CHECK:STDOUT:     ir0.inst15:      {kind: ImportCppDecl}
+// CHECK:STDOUT:     ir0.inst16:      {kind: Namespace, arg0: name_scope1, arg1: ir0.inst15, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     ir0.inst17:      {kind: NameRef, arg0: name0, arg1: ir0.inst16, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     ir0.inst18:      {kind: ClassDecl, arg0: class0, arg1: inst_block<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst19:      {kind: ClassType, arg0: class0, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst20:      {kind: NameRef, arg0: name3, arg1: ir0.inst18, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst21:      {kind: BindName, arg0: entity_name0, arg1: ir0.inst25, type: type(ir0.inst19)}
+// CHECK:STDOUT:     ir0.inst22:      {kind: PatternType, arg0: ir0.inst19, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst23:      {kind: BindingPattern, arg0: entity_name0, type: type(ir0.inst22)}
+// CHECK:STDOUT:     ir0.inst24:      {kind: ValueParamPattern, arg0: ir0.inst23, arg1: call_param0, type: type(ir0.inst22)}
+// CHECK:STDOUT:     ir0.inst25:      {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(ir0.inst19)}
+// CHECK:STDOUT:     ir0.inst26:      {kind: SpliceBlock, arg0: inst_block4, arg1: ir0.inst20, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst27:      {kind: FunctionDecl, arg0: function0, arg1: inst_block8, type: type(ir0.inst28)}
+// CHECK:STDOUT:     ir0.inst28:      {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst29:      {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst30:      {kind: StructValue, arg0: inst_block_empty, type: type(ir0.inst28)}
+// CHECK:STDOUT:     ir0.inst31:      {kind: CustomLayoutType, arg0: struct_type_fields0, arg1: custom_layout1, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst32:      {kind: CustomLayoutType, arg0: struct_type_fields0, arg1: custom_layout1, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst33:      {kind: CompleteTypeWitness, arg0: ir0.inst31, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst34:      {kind: CompleteTypeWitness, arg0: ir0.inst32, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst35:      {kind: PointerType, arg0: ir0.inst32, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst36:      {kind: NameRef, arg0: name0, arg1: ir0.inst16, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     ir0.inst37:      {kind: CppOverloadSetType, arg0: cpp_overload_set0, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst38:      {kind: CppOverloadSetValue, arg0: cpp_overload_set0, type: type(ir0.inst37)}
+// CHECK:STDOUT:     ir0.inst39:      {kind: CppOverloadSetValue, arg0: cpp_overload_set0, type: type(ir0.inst37)}
+// CHECK:STDOUT:     ir0.inst40:      {kind: NameRef, arg0: name4, arg1: ir0.inst38, type: type(ir0.inst37)}
+// CHECK:STDOUT:     ir0.inst41:      {kind: FunctionDecl, arg0: function1, arg1: inst_block_empty, type: type(ir0.inst42)}
+// CHECK:STDOUT:     ir0.inst42:      {kind: FunctionType, arg0: function1, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst43:      {kind: StructValue, arg0: inst_block_empty, type: type(ir0.inst42)}
+// CHECK:STDOUT:     ir0.inst44:      {kind: FunctionDecl, arg0: function2, arg1: inst_block_empty, type: type(ir0.inst45)}
+// CHECK:STDOUT:     ir0.inst45:      {kind: FunctionType, arg0: function2, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst46:      {kind: StructValue, arg0: inst_block_empty, type: type(ir0.inst45)}
+// CHECK:STDOUT:     ir0.inst47:      {kind: Call, arg0: ir0.inst44, arg1: inst_block_empty, type: type(ir0.inst29)}
+// CHECK:STDOUT:     ir0.inst48:      {kind: NameRef, arg0: name0, arg1: ir0.inst16, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     ir0.inst49:      {kind: NameRef, arg0: name4, arg1: ir0.inst38, type: type(ir0.inst37)}
+// CHECK:STDOUT:     ir0.inst50:      {kind: NameRef, arg0: name2, arg1: ir0.inst21, type: type(ir0.inst19)}
+// CHECK:STDOUT:     ir0.inst51:      {kind: BindName, arg0: entity_name1, arg1: ir0.inst54, type: type(ir0.inst19)}
+// CHECK:STDOUT:     ir0.inst52:      {kind: BindingPattern, arg0: entity_name1, type: type(ir0.inst22)}
+// CHECK:STDOUT:     ir0.inst53:      {kind: ValueParamPattern, arg0: ir0.inst52, arg1: call_param0, type: type(ir0.inst22)}
+// CHECK:STDOUT:     ir0.inst54:      {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(ir0.inst19)}
+// CHECK:STDOUT:     ir0.inst55:      {kind: FunctionDecl, arg0: function3, arg1: inst_block15, type: type(ir0.inst56)}
+// CHECK:STDOUT:     ir0.inst56:      {kind: FunctionType, arg0: function3, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst57:      {kind: StructValue, arg0: inst_block_empty, type: type(ir0.inst56)}
+// CHECK:STDOUT:     ir0.inst58:      {kind: PointerType, arg0: ir0.inst19, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst59:      {kind: BindName, arg0: entity_name2, arg1: ir0.inst63, type: type(ir0.inst58)}
+// CHECK:STDOUT:     ir0.inst60:      {kind: PatternType, arg0: ir0.inst58, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst61:      {kind: BindingPattern, arg0: entity_name2, type: type(ir0.inst60)}
+// CHECK:STDOUT:     ir0.inst62:      {kind: ValueParamPattern, arg0: ir0.inst61, arg1: call_param0, type: type(ir0.inst60)}
+// CHECK:STDOUT:     ir0.inst63:      {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(ir0.inst58)}
+// CHECK:STDOUT:     ir0.inst64:      {kind: FunctionDecl, arg0: function4, arg1: inst_block20, type: type(ir0.inst65)}
+// CHECK:STDOUT:     ir0.inst65:      {kind: FunctionType, arg0: function4, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst66:      {kind: StructValue, arg0: inst_block_empty, type: type(ir0.inst65)}
+// CHECK:STDOUT:     ir0.inst67:      {kind: ValueAsRef, arg0: ir0.inst50, type: type(ir0.inst19)}
+// CHECK:STDOUT:     ir0.inst68:      {kind: AddrOf, arg0: ir0.inst67, type: type(ir0.inst58)}
+// CHECK:STDOUT:     ir0.inst69:      {kind: Call, arg0: ir0.inst64, arg1: inst_block22, type: type(ir0.inst29)}
+// CHECK:STDOUT:     ir0.inst70:      {kind: Return}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
 // CHECK:STDOUT:       'inst(TypeType)':  concrete_constant(inst(TypeType))
@@ -184,119 +184,119 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:       'inst(VtableType)': concrete_constant(inst(VtableType))
 // CHECK:STDOUT:       'inst(WitnessType)': concrete_constant(inst(WitnessType))
 // CHECK:STDOUT:       inst14:          concrete_constant(inst14)
-// CHECK:STDOUT:       inst16:          concrete_constant(inst16)
-// CHECK:STDOUT:       inst17:          concrete_constant(inst16)
-// CHECK:STDOUT:       inst18:          concrete_constant(inst19)
-// CHECK:STDOUT:       inst19:          concrete_constant(inst19)
-// CHECK:STDOUT:       inst20:          concrete_constant(inst19)
-// CHECK:STDOUT:       inst22:          concrete_constant(inst22)
-// CHECK:STDOUT:       inst23:          concrete_constant(inst23)
-// CHECK:STDOUT:       inst24:          concrete_constant(inst24)
-// CHECK:STDOUT:       inst26:          concrete_constant(inst19)
-// CHECK:STDOUT:       inst27:          concrete_constant(inst30)
-// CHECK:STDOUT:       inst28:          concrete_constant(inst28)
-// CHECK:STDOUT:       inst29:          concrete_constant(inst29)
-// CHECK:STDOUT:       inst30:          concrete_constant(inst30)
-// CHECK:STDOUT:       inst31:          concrete_constant(inst32)
-// CHECK:STDOUT:       inst32:          concrete_constant(inst32)
-// CHECK:STDOUT:       inst33:          concrete_constant(inst34)
-// CHECK:STDOUT:       inst34:          concrete_constant(inst34)
-// CHECK:STDOUT:       inst35:          concrete_constant(inst35)
-// CHECK:STDOUT:       inst36:          concrete_constant(inst16)
-// CHECK:STDOUT:       inst37:          concrete_constant(inst37)
-// CHECK:STDOUT:       inst38:          concrete_constant(inst39)
-// CHECK:STDOUT:       inst39:          concrete_constant(inst39)
-// CHECK:STDOUT:       inst40:          concrete_constant(inst39)
-// CHECK:STDOUT:       inst41:          concrete_constant(inst43)
-// CHECK:STDOUT:       inst42:          concrete_constant(inst42)
-// CHECK:STDOUT:       inst43:          concrete_constant(inst43)
-// CHECK:STDOUT:       inst44:          concrete_constant(inst46)
-// CHECK:STDOUT:       inst45:          concrete_constant(inst45)
-// CHECK:STDOUT:       inst46:          concrete_constant(inst46)
-// CHECK:STDOUT:       inst48:          concrete_constant(inst16)
-// CHECK:STDOUT:       inst49:          concrete_constant(inst39)
-// CHECK:STDOUT:       inst52:          concrete_constant(inst52)
-// CHECK:STDOUT:       inst53:          concrete_constant(inst53)
-// CHECK:STDOUT:       inst55:          concrete_constant(inst57)
-// CHECK:STDOUT:       inst56:          concrete_constant(inst56)
-// CHECK:STDOUT:       inst57:          concrete_constant(inst57)
-// CHECK:STDOUT:       inst58:          concrete_constant(inst58)
-// CHECK:STDOUT:       inst60:          concrete_constant(inst60)
-// CHECK:STDOUT:       inst61:          concrete_constant(inst61)
-// CHECK:STDOUT:       inst62:          concrete_constant(inst62)
-// CHECK:STDOUT:       inst64:          concrete_constant(inst66)
-// CHECK:STDOUT:       inst65:          concrete_constant(inst65)
-// CHECK:STDOUT:       inst66:          concrete_constant(inst66)
+// CHECK:STDOUT:       ir0.inst16:      concrete_constant(ir0.inst16)
+// CHECK:STDOUT:       ir0.inst17:      concrete_constant(ir0.inst16)
+// CHECK:STDOUT:       ir0.inst18:      concrete_constant(ir0.inst19)
+// CHECK:STDOUT:       ir0.inst19:      concrete_constant(ir0.inst19)
+// CHECK:STDOUT:       ir0.inst20:      concrete_constant(ir0.inst19)
+// CHECK:STDOUT:       ir0.inst22:      concrete_constant(ir0.inst22)
+// CHECK:STDOUT:       ir0.inst23:      concrete_constant(ir0.inst23)
+// CHECK:STDOUT:       ir0.inst24:      concrete_constant(ir0.inst24)
+// CHECK:STDOUT:       ir0.inst26:      concrete_constant(ir0.inst19)
+// CHECK:STDOUT:       ir0.inst27:      concrete_constant(ir0.inst30)
+// CHECK:STDOUT:       ir0.inst28:      concrete_constant(ir0.inst28)
+// CHECK:STDOUT:       ir0.inst29:      concrete_constant(ir0.inst29)
+// CHECK:STDOUT:       ir0.inst30:      concrete_constant(ir0.inst30)
+// CHECK:STDOUT:       ir0.inst31:      concrete_constant(ir0.inst32)
+// CHECK:STDOUT:       ir0.inst32:      concrete_constant(ir0.inst32)
+// CHECK:STDOUT:       ir0.inst33:      concrete_constant(ir0.inst34)
+// CHECK:STDOUT:       ir0.inst34:      concrete_constant(ir0.inst34)
+// CHECK:STDOUT:       ir0.inst35:      concrete_constant(ir0.inst35)
+// CHECK:STDOUT:       ir0.inst36:      concrete_constant(ir0.inst16)
+// CHECK:STDOUT:       ir0.inst37:      concrete_constant(ir0.inst37)
+// CHECK:STDOUT:       ir0.inst38:      concrete_constant(ir0.inst39)
+// CHECK:STDOUT:       ir0.inst39:      concrete_constant(ir0.inst39)
+// CHECK:STDOUT:       ir0.inst40:      concrete_constant(ir0.inst39)
+// CHECK:STDOUT:       ir0.inst41:      concrete_constant(ir0.inst43)
+// CHECK:STDOUT:       ir0.inst42:      concrete_constant(ir0.inst42)
+// CHECK:STDOUT:       ir0.inst43:      concrete_constant(ir0.inst43)
+// CHECK:STDOUT:       ir0.inst44:      concrete_constant(ir0.inst46)
+// CHECK:STDOUT:       ir0.inst45:      concrete_constant(ir0.inst45)
+// CHECK:STDOUT:       ir0.inst46:      concrete_constant(ir0.inst46)
+// CHECK:STDOUT:       ir0.inst48:      concrete_constant(ir0.inst16)
+// CHECK:STDOUT:       ir0.inst49:      concrete_constant(ir0.inst39)
+// CHECK:STDOUT:       ir0.inst52:      concrete_constant(ir0.inst52)
+// CHECK:STDOUT:       ir0.inst53:      concrete_constant(ir0.inst53)
+// CHECK:STDOUT:       ir0.inst55:      concrete_constant(ir0.inst57)
+// CHECK:STDOUT:       ir0.inst56:      concrete_constant(ir0.inst56)
+// CHECK:STDOUT:       ir0.inst57:      concrete_constant(ir0.inst57)
+// CHECK:STDOUT:       ir0.inst58:      concrete_constant(ir0.inst58)
+// CHECK:STDOUT:       ir0.inst60:      concrete_constant(ir0.inst60)
+// CHECK:STDOUT:       ir0.inst61:      concrete_constant(ir0.inst61)
+// CHECK:STDOUT:       ir0.inst62:      concrete_constant(ir0.inst62)
+// CHECK:STDOUT:       ir0.inst64:      concrete_constant(ir0.inst66)
+// CHECK:STDOUT:       ir0.inst65:      concrete_constant(ir0.inst65)
+// CHECK:STDOUT:       ir0.inst66:      concrete_constant(ir0.inst66)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst27
+// CHECK:STDOUT:       0:               ir0.inst27
 // CHECK:STDOUT:     imports:
-// CHECK:STDOUT:       0:               inst16
-// CHECK:STDOUT:       1:               inst18
-// CHECK:STDOUT:       2:               inst38
-// CHECK:STDOUT:       3:               inst41
-// CHECK:STDOUT:       4:               inst44
-// CHECK:STDOUT:       5:               inst55
-// CHECK:STDOUT:       6:               inst64
+// CHECK:STDOUT:       0:               ir0.inst16
+// CHECK:STDOUT:       1:               ir0.inst18
+// CHECK:STDOUT:       2:               ir0.inst38
+// CHECK:STDOUT:       3:               ir0.inst41
+// CHECK:STDOUT:       4:               ir0.inst44
+// CHECK:STDOUT:       5:               ir0.inst55
+// CHECK:STDOUT:       6:               ir0.inst64
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block4:
-// CHECK:STDOUT:       0:               inst17
-// CHECK:STDOUT:       1:               inst20
+// CHECK:STDOUT:       0:               ir0.inst17
+// CHECK:STDOUT:       1:               ir0.inst20
 // CHECK:STDOUT:     inst_block5:
-// CHECK:STDOUT:       0:               inst24
+// CHECK:STDOUT:       0:               ir0.inst24
 // CHECK:STDOUT:     inst_block6:
-// CHECK:STDOUT:       0:               inst25
+// CHECK:STDOUT:       0:               ir0.inst25
 // CHECK:STDOUT:     inst_block7:
-// CHECK:STDOUT:       0:               inst23
-// CHECK:STDOUT:       1:               inst24
+// CHECK:STDOUT:       0:               ir0.inst23
+// CHECK:STDOUT:       1:               ir0.inst24
 // CHECK:STDOUT:     inst_block8:
-// CHECK:STDOUT:       0:               inst25
-// CHECK:STDOUT:       1:               inst26
-// CHECK:STDOUT:       2:               inst21
+// CHECK:STDOUT:       0:               ir0.inst25
+// CHECK:STDOUT:       1:               ir0.inst26
+// CHECK:STDOUT:       2:               ir0.inst21
 // CHECK:STDOUT:     inst_block9:
-// CHECK:STDOUT:       0:               inst36
-// CHECK:STDOUT:       1:               inst40
-// CHECK:STDOUT:       2:               inst47
-// CHECK:STDOUT:       3:               inst48
-// CHECK:STDOUT:       4:               inst49
-// CHECK:STDOUT:       5:               inst50
-// CHECK:STDOUT:       6:               inst67
-// CHECK:STDOUT:       7:               inst68
-// CHECK:STDOUT:       8:               inst69
-// CHECK:STDOUT:       9:               inst70
+// CHECK:STDOUT:       0:               ir0.inst36
+// CHECK:STDOUT:       1:               ir0.inst40
+// CHECK:STDOUT:       2:               ir0.inst47
+// CHECK:STDOUT:       3:               ir0.inst48
+// CHECK:STDOUT:       4:               ir0.inst49
+// CHECK:STDOUT:       5:               ir0.inst50
+// CHECK:STDOUT:       6:               ir0.inst67
+// CHECK:STDOUT:       7:               ir0.inst68
+// CHECK:STDOUT:       8:               ir0.inst69
+// CHECK:STDOUT:       9:               ir0.inst70
 // CHECK:STDOUT:     inst_block10:
-// CHECK:STDOUT:       0:               inst31
-// CHECK:STDOUT:       1:               inst33
+// CHECK:STDOUT:       0:               ir0.inst31
+// CHECK:STDOUT:       1:               ir0.inst33
 // CHECK:STDOUT:     inst_block11:    {}
 // CHECK:STDOUT:     inst_block12:
-// CHECK:STDOUT:       0:               inst53
+// CHECK:STDOUT:       0:               ir0.inst53
 // CHECK:STDOUT:     inst_block13:
-// CHECK:STDOUT:       0:               inst54
+// CHECK:STDOUT:       0:               ir0.inst54
 // CHECK:STDOUT:     inst_block14:
-// CHECK:STDOUT:       0:               inst52
-// CHECK:STDOUT:       1:               inst53
+// CHECK:STDOUT:       0:               ir0.inst52
+// CHECK:STDOUT:       1:               ir0.inst53
 // CHECK:STDOUT:     inst_block15:
-// CHECK:STDOUT:       0:               inst54
-// CHECK:STDOUT:       1:               inst51
+// CHECK:STDOUT:       0:               ir0.inst54
+// CHECK:STDOUT:       1:               ir0.inst51
 // CHECK:STDOUT:     inst_block16:    {}
 // CHECK:STDOUT:     inst_block17:
-// CHECK:STDOUT:       0:               inst62
+// CHECK:STDOUT:       0:               ir0.inst62
 // CHECK:STDOUT:     inst_block18:
-// CHECK:STDOUT:       0:               inst63
+// CHECK:STDOUT:       0:               ir0.inst63
 // CHECK:STDOUT:     inst_block19:
-// CHECK:STDOUT:       0:               inst61
-// CHECK:STDOUT:       1:               inst62
+// CHECK:STDOUT:       0:               ir0.inst61
+// CHECK:STDOUT:       1:               ir0.inst62
 // CHECK:STDOUT:     inst_block20:
-// CHECK:STDOUT:       0:               inst63
-// CHECK:STDOUT:       1:               inst59
+// CHECK:STDOUT:       0:               ir0.inst63
+// CHECK:STDOUT:       1:               ir0.inst59
 // CHECK:STDOUT:     inst_block21:
-// CHECK:STDOUT:       0:               inst50
+// CHECK:STDOUT:       0:               ir0.inst50
 // CHECK:STDOUT:     inst_block22:
-// CHECK:STDOUT:       0:               inst68
+// CHECK:STDOUT:       0:               ir0.inst68
 // CHECK:STDOUT:     inst_block23:
 // CHECK:STDOUT:       0:               inst14
-// CHECK:STDOUT:       1:               inst15
-// CHECK:STDOUT:       2:               inst27
+// CHECK:STDOUT:       1:               ir0.inst15
+// CHECK:STDOUT:       2:               ir0.inst27
 // CHECK:STDOUT: ...

+ 61 - 61
toolchain/check/testdata/basics/raw_sem_ir/multifile.carbon

@@ -36,7 +36,7 @@ fn B() {
 // CHECK:STDOUT:   import_ir_insts: {}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst15}}
+// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: ir0.inst15}}
 // CHECK:STDOUT:   entity_names:    {}
 // CHECK:STDOUT:   functions:
 // CHECK:STDOUT:     function0:       {name: name0, parent_scope: name_scope0, call_params_id: inst_block_empty, body: [inst_block5]}
@@ -52,37 +52,37 @@ fn B() {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     'type(inst16)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst17)}
-// CHECK:STDOUT:     'type(inst17)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst17)}
+// CHECK:STDOUT:     'type(ir0.inst16)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst17)}
+// CHECK:STDOUT:     'type(ir0.inst17)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst17)}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     inst14:          {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst15:          {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(inst16)}
-// CHECK:STDOUT:     inst16:          {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst17:          {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst18:          {kind: StructValue, arg0: inst_block_empty, type: type(inst16)}
-// CHECK:STDOUT:     inst19:          {kind: Return}
+// CHECK:STDOUT:     ir0.inst15:      {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(ir0.inst16)}
+// CHECK:STDOUT:     ir0.inst16:      {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst17:      {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst18:      {kind: StructValue, arg0: inst_block_empty, type: type(ir0.inst16)}
+// CHECK:STDOUT:     ir0.inst19:      {kind: Return}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
 // CHECK:STDOUT:       inst14:          concrete_constant(inst14)
-// CHECK:STDOUT:       inst15:          concrete_constant(inst18)
-// CHECK:STDOUT:       inst16:          concrete_constant(inst16)
-// CHECK:STDOUT:       inst17:          concrete_constant(inst17)
-// CHECK:STDOUT:       inst18:          concrete_constant(inst18)
+// CHECK:STDOUT:       ir0.inst15:      concrete_constant(ir0.inst18)
+// CHECK:STDOUT:       ir0.inst16:      concrete_constant(ir0.inst16)
+// CHECK:STDOUT:       ir0.inst17:      concrete_constant(ir0.inst17)
+// CHECK:STDOUT:       ir0.inst18:      concrete_constant(ir0.inst18)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst15
+// CHECK:STDOUT:       0:               ir0.inst15
 // CHECK:STDOUT:     imports:         {}
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block4:     {}
 // CHECK:STDOUT:     inst_block5:
-// CHECK:STDOUT:       0:               inst19
+// CHECK:STDOUT:       0:               ir0.inst19
 // CHECK:STDOUT:     inst_block6:
 // CHECK:STDOUT:       0:               inst14
-// CHECK:STDOUT:       1:               inst15
+// CHECK:STDOUT:       1:               ir0.inst15
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: ---
 // CHECK:STDOUT: filename:        b.carbon
@@ -90,14 +90,14 @@ fn B() {
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     ir0:             {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     ir1:             {decl_id: inst<none>, is_export: false}
-// CHECK:STDOUT:     ir2:             {decl_id: inst15, is_export: false}
+// CHECK:STDOUT:     ir2:             {decl_id: ir1.inst15, is_export: false}
 // CHECK:STDOUT:   import_ir_insts:
-// CHECK:STDOUT:     import_ir_inst0: {ir_id: ir2, inst_id: inst15}
-// CHECK:STDOUT:     import_ir_inst1: {ir_id: ir2, inst_id: inst15}
+// CHECK:STDOUT:     import_ir_inst0: {ir_id: ir2, inst_id: ir0.inst15}
+// CHECK:STDOUT:     import_ir_inst1: {ir_id: ir2, inst_id: ir0.inst15}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name1: inst16, name0: inst17}}
-// CHECK:STDOUT:     name_scope1:     {inst: inst16, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst22}}
+// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name1: ir1.inst16, name0: ir1.inst17}}
+// CHECK:STDOUT:     name_scope1:     {inst: ir1.inst16, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: ir1.inst22}}
 // CHECK:STDOUT:   entity_names:
 // CHECK:STDOUT:     entity_name0:    {name: name1, parent_scope: name_scope1, index: -1, is_template: 0, clang_decl_id: clang_decl_id<none>}
 // CHECK:STDOUT:   functions:
@@ -115,58 +115,58 @@ fn B() {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     'type(inst18)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst19)}
-// CHECK:STDOUT:     'type(inst19)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst19)}
+// CHECK:STDOUT:     'type(ir1.inst18)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir1.inst19)}
+// CHECK:STDOUT:     'type(ir1.inst19)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir1.inst19)}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     inst14:          {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst15:          {kind: ImportDecl, arg0: name1}
-// CHECK:STDOUT:     inst16:          {kind: Namespace, arg0: name_scope1, arg1: inst15, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst17:          {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(inst18)}
-// CHECK:STDOUT:     inst18:          {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst19:          {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst20:          {kind: StructValue, arg0: inst_block_empty, type: type(inst18)}
-// CHECK:STDOUT:     inst21:          {kind: NameRef, arg0: name1, arg1: inst16, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst22:          {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name0, type: type(inst24)}
-// CHECK:STDOUT:     inst23:          {kind: FunctionDecl, arg0: function1, arg1: inst_block_empty, type: type(inst24)}
-// CHECK:STDOUT:     inst24:          {kind: FunctionType, arg0: function1, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst25:          {kind: StructValue, arg0: inst_block_empty, type: type(inst24)}
-// CHECK:STDOUT:     inst26:          {kind: NameRef, arg0: name1, arg1: inst22, type: type(inst24)}
-// CHECK:STDOUT:     inst27:          {kind: Call, arg0: inst26, arg1: inst_block_empty, type: type(inst19)}
-// CHECK:STDOUT:     inst28:          {kind: Return}
+// CHECK:STDOUT:     ir1.inst15:      {kind: ImportDecl, arg0: name1}
+// CHECK:STDOUT:     ir1.inst16:      {kind: Namespace, arg0: name_scope1, arg1: ir1.inst15, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     ir1.inst17:      {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(ir1.inst18)}
+// CHECK:STDOUT:     ir1.inst18:      {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir1.inst19:      {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     ir1.inst20:      {kind: StructValue, arg0: inst_block_empty, type: type(ir1.inst18)}
+// CHECK:STDOUT:     ir1.inst21:      {kind: NameRef, arg0: name1, arg1: ir1.inst16, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     ir1.inst22:      {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name0, type: type(ir1.inst24)}
+// CHECK:STDOUT:     ir1.inst23:      {kind: FunctionDecl, arg0: function1, arg1: inst_block_empty, type: type(ir1.inst24)}
+// CHECK:STDOUT:     ir1.inst24:      {kind: FunctionType, arg0: function1, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir1.inst25:      {kind: StructValue, arg0: inst_block_empty, type: type(ir1.inst24)}
+// CHECK:STDOUT:     ir1.inst26:      {kind: NameRef, arg0: name1, arg1: ir1.inst22, type: type(ir1.inst24)}
+// CHECK:STDOUT:     ir1.inst27:      {kind: Call, arg0: ir1.inst26, arg1: inst_block_empty, type: type(ir1.inst19)}
+// CHECK:STDOUT:     ir1.inst28:      {kind: Return}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
 // CHECK:STDOUT:       inst14:          concrete_constant(inst14)
-// CHECK:STDOUT:       inst16:          concrete_constant(inst16)
-// CHECK:STDOUT:       inst17:          concrete_constant(inst20)
-// CHECK:STDOUT:       inst18:          concrete_constant(inst18)
-// CHECK:STDOUT:       inst19:          concrete_constant(inst19)
-// CHECK:STDOUT:       inst20:          concrete_constant(inst20)
-// CHECK:STDOUT:       inst21:          concrete_constant(inst16)
-// CHECK:STDOUT:       inst22:          concrete_constant(inst25)
-// CHECK:STDOUT:       inst23:          concrete_constant(inst25)
-// CHECK:STDOUT:       inst24:          concrete_constant(inst24)
-// CHECK:STDOUT:       inst25:          concrete_constant(inst25)
-// CHECK:STDOUT:       inst26:          concrete_constant(inst25)
+// CHECK:STDOUT:       ir1.inst16:      concrete_constant(ir1.inst16)
+// CHECK:STDOUT:       ir1.inst17:      concrete_constant(ir1.inst20)
+// CHECK:STDOUT:       ir1.inst18:      concrete_constant(ir1.inst18)
+// CHECK:STDOUT:       ir1.inst19:      concrete_constant(ir1.inst19)
+// CHECK:STDOUT:       ir1.inst20:      concrete_constant(ir1.inst20)
+// CHECK:STDOUT:       ir1.inst21:      concrete_constant(ir1.inst16)
+// CHECK:STDOUT:       ir1.inst22:      concrete_constant(ir1.inst25)
+// CHECK:STDOUT:       ir1.inst23:      concrete_constant(ir1.inst25)
+// CHECK:STDOUT:       ir1.inst24:      concrete_constant(ir1.inst24)
+// CHECK:STDOUT:       ir1.inst25:      concrete_constant(ir1.inst25)
+// CHECK:STDOUT:       ir1.inst26:      concrete_constant(ir1.inst25)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst17
+// CHECK:STDOUT:       0:               ir1.inst17
 // CHECK:STDOUT:     imports:
-// CHECK:STDOUT:       0:               inst16
-// CHECK:STDOUT:       1:               inst22
-// CHECK:STDOUT:       2:               inst23
+// CHECK:STDOUT:       0:               ir1.inst16
+// CHECK:STDOUT:       1:               ir1.inst22
+// CHECK:STDOUT:       2:               ir1.inst23
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block4:     {}
 // CHECK:STDOUT:     inst_block5:
-// CHECK:STDOUT:       0:               inst21
-// CHECK:STDOUT:       1:               inst26
-// CHECK:STDOUT:       2:               inst27
-// CHECK:STDOUT:       3:               inst28
+// CHECK:STDOUT:       0:               ir1.inst21
+// CHECK:STDOUT:       1:               ir1.inst26
+// CHECK:STDOUT:       2:               ir1.inst27
+// CHECK:STDOUT:       3:               ir1.inst28
 // CHECK:STDOUT:     inst_block6:
 // CHECK:STDOUT:       0:               inst14
-// CHECK:STDOUT:       1:               inst15
-// CHECK:STDOUT:       2:               inst17
+// CHECK:STDOUT:       1:               ir1.inst15
+// CHECK:STDOUT:       2:               ir1.inst17
 // CHECK:STDOUT: ...

+ 61 - 61
toolchain/check/testdata/basics/raw_sem_ir/multifile_with_textual_ir.carbon

@@ -36,7 +36,7 @@ fn B() {
 // CHECK:STDOUT:   import_ir_insts: {}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst15}}
+// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: ir0.inst15}}
 // CHECK:STDOUT:   entity_names:    {}
 // CHECK:STDOUT:   functions:
 // CHECK:STDOUT:     function0:       {name: name0, parent_scope: name_scope0, call_params_id: inst_block_empty, body: [inst_block5]}
@@ -52,37 +52,37 @@ fn B() {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     'type(inst16)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst17)}
-// CHECK:STDOUT:     'type(inst17)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst17)}
+// CHECK:STDOUT:     'type(ir0.inst16)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst17)}
+// CHECK:STDOUT:     'type(ir0.inst17)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst17)}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     inst14:          {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst15:          {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(inst16)}
-// CHECK:STDOUT:     inst16:          {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst17:          {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst18:          {kind: StructValue, arg0: inst_block_empty, type: type(inst16)}
-// CHECK:STDOUT:     inst19:          {kind: Return}
+// CHECK:STDOUT:     ir0.inst15:      {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(ir0.inst16)}
+// CHECK:STDOUT:     ir0.inst16:      {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst17:      {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst18:      {kind: StructValue, arg0: inst_block_empty, type: type(ir0.inst16)}
+// CHECK:STDOUT:     ir0.inst19:      {kind: Return}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
 // CHECK:STDOUT:       inst14:          concrete_constant(inst14)
-// CHECK:STDOUT:       inst15:          concrete_constant(inst18)
-// CHECK:STDOUT:       inst16:          concrete_constant(inst16)
-// CHECK:STDOUT:       inst17:          concrete_constant(inst17)
-// CHECK:STDOUT:       inst18:          concrete_constant(inst18)
+// CHECK:STDOUT:       ir0.inst15:      concrete_constant(ir0.inst18)
+// CHECK:STDOUT:       ir0.inst16:      concrete_constant(ir0.inst16)
+// CHECK:STDOUT:       ir0.inst17:      concrete_constant(ir0.inst17)
+// CHECK:STDOUT:       ir0.inst18:      concrete_constant(ir0.inst18)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst15
+// CHECK:STDOUT:       0:               ir0.inst15
 // CHECK:STDOUT:     imports:         {}
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block4:     {}
 // CHECK:STDOUT:     inst_block5:
-// CHECK:STDOUT:       0:               inst19
+// CHECK:STDOUT:       0:               ir0.inst19
 // CHECK:STDOUT:     inst_block6:
 // CHECK:STDOUT:       0:               inst14
-// CHECK:STDOUT:       1:               inst15
+// CHECK:STDOUT:       1:               ir0.inst15
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: --- a.carbon
 // CHECK:STDOUT:
@@ -109,14 +109,14 @@ fn B() {
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     ir0:             {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     ir1:             {decl_id: inst<none>, is_export: false}
-// CHECK:STDOUT:     ir2:             {decl_id: inst15, is_export: false}
+// CHECK:STDOUT:     ir2:             {decl_id: ir1.inst15, is_export: false}
 // CHECK:STDOUT:   import_ir_insts:
-// CHECK:STDOUT:     import_ir_inst0: {ir_id: ir2, inst_id: inst15}
-// CHECK:STDOUT:     import_ir_inst1: {ir_id: ir2, inst_id: inst15}
+// CHECK:STDOUT:     import_ir_inst0: {ir_id: ir2, inst_id: ir0.inst15}
+// CHECK:STDOUT:     import_ir_inst1: {ir_id: ir2, inst_id: ir0.inst15}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name1: inst16, name0: inst17}}
-// CHECK:STDOUT:     name_scope1:     {inst: inst16, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst22}}
+// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name1: ir1.inst16, name0: ir1.inst17}}
+// CHECK:STDOUT:     name_scope1:     {inst: ir1.inst16, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: ir1.inst22}}
 // CHECK:STDOUT:   entity_names:
 // CHECK:STDOUT:     entity_name0:    {name: name1, parent_scope: name_scope1, index: -1, is_template: 0, clang_decl_id: clang_decl_id<none>}
 // CHECK:STDOUT:   functions:
@@ -134,60 +134,60 @@ fn B() {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     'type(inst18)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst19)}
-// CHECK:STDOUT:     'type(inst19)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst19)}
+// CHECK:STDOUT:     'type(ir1.inst18)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir1.inst19)}
+// CHECK:STDOUT:     'type(ir1.inst19)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir1.inst19)}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     inst14:          {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst15:          {kind: ImportDecl, arg0: name1}
-// CHECK:STDOUT:     inst16:          {kind: Namespace, arg0: name_scope1, arg1: inst15, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst17:          {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(inst18)}
-// CHECK:STDOUT:     inst18:          {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst19:          {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst20:          {kind: StructValue, arg0: inst_block_empty, type: type(inst18)}
-// CHECK:STDOUT:     inst21:          {kind: NameRef, arg0: name1, arg1: inst16, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst22:          {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name0, type: type(inst24)}
-// CHECK:STDOUT:     inst23:          {kind: FunctionDecl, arg0: function1, arg1: inst_block_empty, type: type(inst24)}
-// CHECK:STDOUT:     inst24:          {kind: FunctionType, arg0: function1, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst25:          {kind: StructValue, arg0: inst_block_empty, type: type(inst24)}
-// CHECK:STDOUT:     inst26:          {kind: NameRef, arg0: name1, arg1: inst22, type: type(inst24)}
-// CHECK:STDOUT:     inst27:          {kind: Call, arg0: inst26, arg1: inst_block_empty, type: type(inst19)}
-// CHECK:STDOUT:     inst28:          {kind: Return}
+// CHECK:STDOUT:     ir1.inst15:      {kind: ImportDecl, arg0: name1}
+// CHECK:STDOUT:     ir1.inst16:      {kind: Namespace, arg0: name_scope1, arg1: ir1.inst15, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     ir1.inst17:      {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(ir1.inst18)}
+// CHECK:STDOUT:     ir1.inst18:      {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir1.inst19:      {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     ir1.inst20:      {kind: StructValue, arg0: inst_block_empty, type: type(ir1.inst18)}
+// CHECK:STDOUT:     ir1.inst21:      {kind: NameRef, arg0: name1, arg1: ir1.inst16, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     ir1.inst22:      {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name0, type: type(ir1.inst24)}
+// CHECK:STDOUT:     ir1.inst23:      {kind: FunctionDecl, arg0: function1, arg1: inst_block_empty, type: type(ir1.inst24)}
+// CHECK:STDOUT:     ir1.inst24:      {kind: FunctionType, arg0: function1, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir1.inst25:      {kind: StructValue, arg0: inst_block_empty, type: type(ir1.inst24)}
+// CHECK:STDOUT:     ir1.inst26:      {kind: NameRef, arg0: name1, arg1: ir1.inst22, type: type(ir1.inst24)}
+// CHECK:STDOUT:     ir1.inst27:      {kind: Call, arg0: ir1.inst26, arg1: inst_block_empty, type: type(ir1.inst19)}
+// CHECK:STDOUT:     ir1.inst28:      {kind: Return}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
 // CHECK:STDOUT:       inst14:          concrete_constant(inst14)
-// CHECK:STDOUT:       inst16:          concrete_constant(inst16)
-// CHECK:STDOUT:       inst17:          concrete_constant(inst20)
-// CHECK:STDOUT:       inst18:          concrete_constant(inst18)
-// CHECK:STDOUT:       inst19:          concrete_constant(inst19)
-// CHECK:STDOUT:       inst20:          concrete_constant(inst20)
-// CHECK:STDOUT:       inst21:          concrete_constant(inst16)
-// CHECK:STDOUT:       inst22:          concrete_constant(inst25)
-// CHECK:STDOUT:       inst23:          concrete_constant(inst25)
-// CHECK:STDOUT:       inst24:          concrete_constant(inst24)
-// CHECK:STDOUT:       inst25:          concrete_constant(inst25)
-// CHECK:STDOUT:       inst26:          concrete_constant(inst25)
+// CHECK:STDOUT:       ir1.inst16:      concrete_constant(ir1.inst16)
+// CHECK:STDOUT:       ir1.inst17:      concrete_constant(ir1.inst20)
+// CHECK:STDOUT:       ir1.inst18:      concrete_constant(ir1.inst18)
+// CHECK:STDOUT:       ir1.inst19:      concrete_constant(ir1.inst19)
+// CHECK:STDOUT:       ir1.inst20:      concrete_constant(ir1.inst20)
+// CHECK:STDOUT:       ir1.inst21:      concrete_constant(ir1.inst16)
+// CHECK:STDOUT:       ir1.inst22:      concrete_constant(ir1.inst25)
+// CHECK:STDOUT:       ir1.inst23:      concrete_constant(ir1.inst25)
+// CHECK:STDOUT:       ir1.inst24:      concrete_constant(ir1.inst24)
+// CHECK:STDOUT:       ir1.inst25:      concrete_constant(ir1.inst25)
+// CHECK:STDOUT:       ir1.inst26:      concrete_constant(ir1.inst25)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst17
+// CHECK:STDOUT:       0:               ir1.inst17
 // CHECK:STDOUT:     imports:
-// CHECK:STDOUT:       0:               inst16
-// CHECK:STDOUT:       1:               inst22
-// CHECK:STDOUT:       2:               inst23
+// CHECK:STDOUT:       0:               ir1.inst16
+// CHECK:STDOUT:       1:               ir1.inst22
+// CHECK:STDOUT:       2:               ir1.inst23
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block4:     {}
 // CHECK:STDOUT:     inst_block5:
-// CHECK:STDOUT:       0:               inst21
-// CHECK:STDOUT:       1:               inst26
-// CHECK:STDOUT:       2:               inst27
-// CHECK:STDOUT:       3:               inst28
+// CHECK:STDOUT:       0:               ir1.inst21
+// CHECK:STDOUT:       1:               ir1.inst26
+// CHECK:STDOUT:       2:               ir1.inst27
+// CHECK:STDOUT:       3:               ir1.inst28
 // CHECK:STDOUT:     inst_block6:
 // CHECK:STDOUT:       0:               inst14
-// CHECK:STDOUT:       1:               inst15
-// CHECK:STDOUT:       2:               inst17
+// CHECK:STDOUT:       1:               ir1.inst15
+// CHECK:STDOUT:       2:               ir1.inst17
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: --- b.carbon
 // CHECK:STDOUT:

+ 1527 - 1527
toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon

@@ -23,214 +23,214 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     ir0:             {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     ir1:             {decl_id: inst<none>, is_export: false}
-// CHECK:STDOUT:     ir2:             {decl_id: inst15, is_export: false}
-// CHECK:STDOUT:     ir3:             {decl_id: inst15, is_export: false}
-// CHECK:STDOUT:     ir4:             {decl_id: inst15, is_export: false}
-// CHECK:STDOUT:     ir5:             {decl_id: inst15, is_export: false}
+// CHECK:STDOUT:     ir2:             {decl_id: ir0.inst15, is_export: false}
+// CHECK:STDOUT:     ir3:             {decl_id: ir0.inst15, is_export: false}
+// CHECK:STDOUT:     ir4:             {decl_id: ir0.inst15, is_export: false}
+// CHECK:STDOUT:     ir5:             {decl_id: ir0.inst15, is_export: false}
 // CHECK:STDOUT:   import_ir_insts:
-// CHECK:STDOUT:     import_ir_inst0: {ir_id: ir4, inst_id: inst15}
-// CHECK:STDOUT:     import_ir_inst1: {ir_id: ir4, inst_id: inst15}
-// CHECK:STDOUT:     import_ir_inst2: {ir_id: ir4, inst_id: inst17}
-// CHECK:STDOUT:     import_ir_inst3: {ir_id: ir4, inst_id: inst45}
-// CHECK:STDOUT:     import_ir_inst4: {ir_id: ir4, inst_id: inst40}
-// CHECK:STDOUT:     import_ir_inst5: {ir_id: ir4, inst_id: inst40}
-// CHECK:STDOUT:     import_ir_inst6: {ir_id: ir4, inst_id: inst40}
-// CHECK:STDOUT:     import_ir_inst7: {ir_id: ir4, inst_id: inst34}
-// CHECK:STDOUT:     import_ir_inst8: {ir_id: ir4, inst_id: inst35}
-// CHECK:STDOUT:     import_ir_inst9: {ir_id: ir4, inst_id: inst28}
-// CHECK:STDOUT:     import_ir_inst10: {ir_id: ir4, inst_id: inst30}
-// CHECK:STDOUT:     import_ir_inst11: {ir_id: ir4, inst_id: inst17}
-// CHECK:STDOUT:     import_ir_inst12: {ir_id: ir4, inst_id: inst21}
-// CHECK:STDOUT:     import_ir_inst13: {ir_id: ir4, inst_id: inst24}
-// CHECK:STDOUT:     import_ir_inst14: {ir_id: ir4, inst_id: inst29}
-// CHECK:STDOUT:     import_ir_inst15: {ir_id: ir4, inst_id: inst97}
-// CHECK:STDOUT:     import_ir_inst16: {ir_id: ir4, inst_id: inst95}
-// CHECK:STDOUT:     import_ir_inst17: {ir_id: ir4, inst_id: inst84}
-// CHECK:STDOUT:     import_ir_inst18: {ir_id: ir4, inst_id: inst80}
-// CHECK:STDOUT:     import_ir_inst19: {ir_id: ir4, inst_id: inst90}
-// CHECK:STDOUT:     import_ir_inst20: {ir_id: ir4, inst_id: inst93}
-// CHECK:STDOUT:     import_ir_inst21: {ir_id: ir4, inst_id: inst116}
-// CHECK:STDOUT:     import_ir_inst22: {ir_id: ir4, inst_id: inst96}
-// CHECK:STDOUT:     import_ir_inst23: {ir_id: ir4, inst_id: inst82}
-// CHECK:STDOUT:     import_ir_inst24: {ir_id: ir4, inst_id: inst88}
-// CHECK:STDOUT:     import_ir_inst25: {ir_id: ir4, inst_id: inst92}
-// CHECK:STDOUT:     import_ir_inst26: {ir_id: ir4, inst_id: inst99}
-// CHECK:STDOUT:     import_ir_inst27: {ir_id: ir4, inst_id: inst116}
-// CHECK:STDOUT:     import_ir_inst28: {ir_id: ir4, inst_id: inst111}
-// CHECK:STDOUT:     import_ir_inst29: {ir_id: ir4, inst_id: inst112}
-// CHECK:STDOUT:     import_ir_inst30: {ir_id: ir4, inst_id: inst107}
-// CHECK:STDOUT:     import_ir_inst31: {ir_id: ir4, inst_id: inst109}
-// CHECK:STDOUT:     import_ir_inst32: {ir_id: ir4, inst_id: inst80}
-// CHECK:STDOUT:     import_ir_inst33: {ir_id: ir4, inst_id: inst119}
-// CHECK:STDOUT:     import_ir_inst34: {ir_id: ir4, inst_id: inst120}
-// CHECK:STDOUT:     import_ir_inst35: {ir_id: ir4, inst_id: inst102}
-// CHECK:STDOUT:     import_ir_inst36: {ir_id: ir4, inst_id: inst103}
-// CHECK:STDOUT:     import_ir_inst37: {ir_id: ir4, inst_id: inst104}
-// CHECK:STDOUT:     import_ir_inst38: {ir_id: ir4, inst_id: inst108}
-// CHECK:STDOUT:     import_ir_inst39: {ir_id: ir4, inst_id: inst124}
-// CHECK:STDOUT:     import_ir_inst40: {ir_id: ir4, inst_id: inst132}
-// CHECK:STDOUT:     import_ir_inst41: {ir_id: ir4, inst_id: inst139}
-// CHECK:STDOUT:     import_ir_inst42: {ir_id: ir4, inst_id: inst143}
-// CHECK:STDOUT:     import_ir_inst43: {ir_id: ir4, inst_id: inst144}
-// CHECK:STDOUT:     import_ir_inst44: {ir_id: ir4, inst_id: inst149}
-// CHECK:STDOUT:     import_ir_inst45: {ir_id: ir4, inst_id: inst170}
-// CHECK:STDOUT:     import_ir_inst46: {ir_id: ir4, inst_id: inst168}
-// CHECK:STDOUT:     import_ir_inst47: {ir_id: ir4, inst_id: inst166}
-// CHECK:STDOUT:     import_ir_inst48: {ir_id: ir4, inst_id: inst167}
-// CHECK:STDOUT:     import_ir_inst49: {ir_id: ir4, inst_id: inst194}
-// CHECK:STDOUT:     import_ir_inst50: {ir_id: ir4, inst_id: inst192}
-// CHECK:STDOUT:     import_ir_inst51: {ir_id: ir4, inst_id: inst190}
-// CHECK:STDOUT:     import_ir_inst52: {ir_id: ir4, inst_id: inst191}
-// CHECK:STDOUT:     import_ir_inst53: {ir_id: ir4, inst_id: inst218}
-// CHECK:STDOUT:     import_ir_inst54: {ir_id: ir4, inst_id: inst216}
-// CHECK:STDOUT:     import_ir_inst55: {ir_id: ir4, inst_id: inst214}
-// CHECK:STDOUT:     import_ir_inst56: {ir_id: ir4, inst_id: inst215}
-// CHECK:STDOUT:     import_ir_inst57: {ir_id: ir4, inst_id: inst242}
-// CHECK:STDOUT:     import_ir_inst58: {ir_id: ir4, inst_id: inst240}
-// CHECK:STDOUT:     import_ir_inst59: {ir_id: ir4, inst_id: inst238}
-// CHECK:STDOUT:     import_ir_inst60: {ir_id: ir4, inst_id: inst239}
-// CHECK:STDOUT:     import_ir_inst61: {ir_id: ir4, inst_id: inst271}
-// CHECK:STDOUT:     import_ir_inst62: {ir_id: ir4, inst_id: inst269}
-// CHECK:STDOUT:     import_ir_inst63: {ir_id: ir4, inst_id: inst263}
-// CHECK:STDOUT:     import_ir_inst64: {ir_id: ir4, inst_id: inst260}
-// CHECK:STDOUT:     import_ir_inst65: {ir_id: ir4, inst_id: inst265}
-// CHECK:STDOUT:     import_ir_inst66: {ir_id: ir4, inst_id: inst268}
-// CHECK:STDOUT:     import_ir_inst67: {ir_id: ir4, inst_id: inst288}
-// CHECK:STDOUT:     import_ir_inst68: {ir_id: ir4, inst_id: inst270}
-// CHECK:STDOUT:     import_ir_inst69: {ir_id: ir4, inst_id: inst262}
-// CHECK:STDOUT:     import_ir_inst70: {ir_id: ir4, inst_id: inst267}
-// CHECK:STDOUT:     import_ir_inst71: {ir_id: ir4, inst_id: inst273}
-// CHECK:STDOUT:     import_ir_inst72: {ir_id: ir4, inst_id: inst288}
-// CHECK:STDOUT:     import_ir_inst73: {ir_id: ir4, inst_id: inst283}
-// CHECK:STDOUT:     import_ir_inst74: {ir_id: ir4, inst_id: inst284}
-// CHECK:STDOUT:     import_ir_inst75: {ir_id: ir4, inst_id: inst279}
-// CHECK:STDOUT:     import_ir_inst76: {ir_id: ir4, inst_id: inst281}
-// CHECK:STDOUT:     import_ir_inst77: {ir_id: ir4, inst_id: inst260}
-// CHECK:STDOUT:     import_ir_inst78: {ir_id: ir4, inst_id: inst291}
-// CHECK:STDOUT:     import_ir_inst79: {ir_id: ir4, inst_id: inst292}
-// CHECK:STDOUT:     import_ir_inst80: {ir_id: ir4, inst_id: inst295}
-// CHECK:STDOUT:     import_ir_inst81: {ir_id: ir4, inst_id: inst275}
-// CHECK:STDOUT:     import_ir_inst82: {ir_id: ir4, inst_id: inst276}
-// CHECK:STDOUT:     import_ir_inst83: {ir_id: ir4, inst_id: inst280}
-// CHECK:STDOUT:     import_ir_inst84: {ir_id: ir4, inst_id: inst301}
-// CHECK:STDOUT:     import_ir_inst85: {ir_id: ir4, inst_id: inst299}
+// CHECK:STDOUT:     import_ir_inst0: {ir_id: ir4, inst_id: ir3.inst15}
+// CHECK:STDOUT:     import_ir_inst1: {ir_id: ir4, inst_id: ir3.inst15}
+// CHECK:STDOUT:     import_ir_inst2: {ir_id: ir4, inst_id: ir3.inst17}
+// CHECK:STDOUT:     import_ir_inst3: {ir_id: ir4, inst_id: ir3.inst45}
+// CHECK:STDOUT:     import_ir_inst4: {ir_id: ir4, inst_id: ir3.inst40}
+// CHECK:STDOUT:     import_ir_inst5: {ir_id: ir4, inst_id: ir3.inst40}
+// CHECK:STDOUT:     import_ir_inst6: {ir_id: ir4, inst_id: ir3.inst40}
+// CHECK:STDOUT:     import_ir_inst7: {ir_id: ir4, inst_id: ir3.inst34}
+// CHECK:STDOUT:     import_ir_inst8: {ir_id: ir4, inst_id: ir3.inst35}
+// CHECK:STDOUT:     import_ir_inst9: {ir_id: ir4, inst_id: ir3.inst28}
+// CHECK:STDOUT:     import_ir_inst10: {ir_id: ir4, inst_id: ir3.inst30}
+// CHECK:STDOUT:     import_ir_inst11: {ir_id: ir4, inst_id: ir3.inst17}
+// CHECK:STDOUT:     import_ir_inst12: {ir_id: ir4, inst_id: ir3.inst21}
+// CHECK:STDOUT:     import_ir_inst13: {ir_id: ir4, inst_id: ir3.inst24}
+// CHECK:STDOUT:     import_ir_inst14: {ir_id: ir4, inst_id: ir3.inst29}
+// CHECK:STDOUT:     import_ir_inst15: {ir_id: ir4, inst_id: ir3.inst97}
+// CHECK:STDOUT:     import_ir_inst16: {ir_id: ir4, inst_id: ir3.inst95}
+// CHECK:STDOUT:     import_ir_inst17: {ir_id: ir4, inst_id: ir3.inst84}
+// CHECK:STDOUT:     import_ir_inst18: {ir_id: ir4, inst_id: ir3.inst80}
+// CHECK:STDOUT:     import_ir_inst19: {ir_id: ir4, inst_id: ir3.inst90}
+// CHECK:STDOUT:     import_ir_inst20: {ir_id: ir4, inst_id: ir3.inst93}
+// CHECK:STDOUT:     import_ir_inst21: {ir_id: ir4, inst_id: ir3.inst116}
+// CHECK:STDOUT:     import_ir_inst22: {ir_id: ir4, inst_id: ir3.inst96}
+// CHECK:STDOUT:     import_ir_inst23: {ir_id: ir4, inst_id: ir3.inst82}
+// CHECK:STDOUT:     import_ir_inst24: {ir_id: ir4, inst_id: ir3.inst88}
+// CHECK:STDOUT:     import_ir_inst25: {ir_id: ir4, inst_id: ir3.inst92}
+// CHECK:STDOUT:     import_ir_inst26: {ir_id: ir4, inst_id: ir3.inst99}
+// CHECK:STDOUT:     import_ir_inst27: {ir_id: ir4, inst_id: ir3.inst116}
+// CHECK:STDOUT:     import_ir_inst28: {ir_id: ir4, inst_id: ir3.inst111}
+// CHECK:STDOUT:     import_ir_inst29: {ir_id: ir4, inst_id: ir3.inst112}
+// CHECK:STDOUT:     import_ir_inst30: {ir_id: ir4, inst_id: ir3.inst107}
+// CHECK:STDOUT:     import_ir_inst31: {ir_id: ir4, inst_id: ir3.inst109}
+// CHECK:STDOUT:     import_ir_inst32: {ir_id: ir4, inst_id: ir3.inst80}
+// CHECK:STDOUT:     import_ir_inst33: {ir_id: ir4, inst_id: ir3.inst119}
+// CHECK:STDOUT:     import_ir_inst34: {ir_id: ir4, inst_id: ir3.inst120}
+// CHECK:STDOUT:     import_ir_inst35: {ir_id: ir4, inst_id: ir3.inst102}
+// CHECK:STDOUT:     import_ir_inst36: {ir_id: ir4, inst_id: ir3.inst103}
+// CHECK:STDOUT:     import_ir_inst37: {ir_id: ir4, inst_id: ir3.inst104}
+// CHECK:STDOUT:     import_ir_inst38: {ir_id: ir4, inst_id: ir3.inst108}
+// CHECK:STDOUT:     import_ir_inst39: {ir_id: ir4, inst_id: ir3.inst124}
+// CHECK:STDOUT:     import_ir_inst40: {ir_id: ir4, inst_id: ir3.inst132}
+// CHECK:STDOUT:     import_ir_inst41: {ir_id: ir4, inst_id: ir3.inst139}
+// CHECK:STDOUT:     import_ir_inst42: {ir_id: ir4, inst_id: ir3.inst143}
+// CHECK:STDOUT:     import_ir_inst43: {ir_id: ir4, inst_id: ir3.inst144}
+// CHECK:STDOUT:     import_ir_inst44: {ir_id: ir4, inst_id: ir3.inst149}
+// CHECK:STDOUT:     import_ir_inst45: {ir_id: ir4, inst_id: ir3.inst170}
+// CHECK:STDOUT:     import_ir_inst46: {ir_id: ir4, inst_id: ir3.inst168}
+// CHECK:STDOUT:     import_ir_inst47: {ir_id: ir4, inst_id: ir3.inst166}
+// CHECK:STDOUT:     import_ir_inst48: {ir_id: ir4, inst_id: ir3.inst167}
+// CHECK:STDOUT:     import_ir_inst49: {ir_id: ir4, inst_id: ir3.inst194}
+// CHECK:STDOUT:     import_ir_inst50: {ir_id: ir4, inst_id: ir3.inst192}
+// CHECK:STDOUT:     import_ir_inst51: {ir_id: ir4, inst_id: ir3.inst190}
+// CHECK:STDOUT:     import_ir_inst52: {ir_id: ir4, inst_id: ir3.inst191}
+// CHECK:STDOUT:     import_ir_inst53: {ir_id: ir4, inst_id: ir3.inst218}
+// CHECK:STDOUT:     import_ir_inst54: {ir_id: ir4, inst_id: ir3.inst216}
+// CHECK:STDOUT:     import_ir_inst55: {ir_id: ir4, inst_id: ir3.inst214}
+// CHECK:STDOUT:     import_ir_inst56: {ir_id: ir4, inst_id: ir3.inst215}
+// CHECK:STDOUT:     import_ir_inst57: {ir_id: ir4, inst_id: ir3.inst242}
+// CHECK:STDOUT:     import_ir_inst58: {ir_id: ir4, inst_id: ir3.inst240}
+// CHECK:STDOUT:     import_ir_inst59: {ir_id: ir4, inst_id: ir3.inst238}
+// CHECK:STDOUT:     import_ir_inst60: {ir_id: ir4, inst_id: ir3.inst239}
+// CHECK:STDOUT:     import_ir_inst61: {ir_id: ir4, inst_id: ir3.inst271}
+// CHECK:STDOUT:     import_ir_inst62: {ir_id: ir4, inst_id: ir3.inst269}
+// CHECK:STDOUT:     import_ir_inst63: {ir_id: ir4, inst_id: ir3.inst263}
+// CHECK:STDOUT:     import_ir_inst64: {ir_id: ir4, inst_id: ir3.inst260}
+// CHECK:STDOUT:     import_ir_inst65: {ir_id: ir4, inst_id: ir3.inst265}
+// CHECK:STDOUT:     import_ir_inst66: {ir_id: ir4, inst_id: ir3.inst268}
+// CHECK:STDOUT:     import_ir_inst67: {ir_id: ir4, inst_id: ir3.inst288}
+// CHECK:STDOUT:     import_ir_inst68: {ir_id: ir4, inst_id: ir3.inst270}
+// CHECK:STDOUT:     import_ir_inst69: {ir_id: ir4, inst_id: ir3.inst262}
+// CHECK:STDOUT:     import_ir_inst70: {ir_id: ir4, inst_id: ir3.inst267}
+// CHECK:STDOUT:     import_ir_inst71: {ir_id: ir4, inst_id: ir3.inst273}
+// CHECK:STDOUT:     import_ir_inst72: {ir_id: ir4, inst_id: ir3.inst288}
+// CHECK:STDOUT:     import_ir_inst73: {ir_id: ir4, inst_id: ir3.inst283}
+// CHECK:STDOUT:     import_ir_inst74: {ir_id: ir4, inst_id: ir3.inst284}
+// CHECK:STDOUT:     import_ir_inst75: {ir_id: ir4, inst_id: ir3.inst279}
+// CHECK:STDOUT:     import_ir_inst76: {ir_id: ir4, inst_id: ir3.inst281}
+// CHECK:STDOUT:     import_ir_inst77: {ir_id: ir4, inst_id: ir3.inst260}
+// CHECK:STDOUT:     import_ir_inst78: {ir_id: ir4, inst_id: ir3.inst291}
+// CHECK:STDOUT:     import_ir_inst79: {ir_id: ir4, inst_id: ir3.inst292}
+// CHECK:STDOUT:     import_ir_inst80: {ir_id: ir4, inst_id: ir3.inst295}
+// CHECK:STDOUT:     import_ir_inst81: {ir_id: ir4, inst_id: ir3.inst275}
+// CHECK:STDOUT:     import_ir_inst82: {ir_id: ir4, inst_id: ir3.inst276}
+// CHECK:STDOUT:     import_ir_inst83: {ir_id: ir4, inst_id: ir3.inst280}
+// CHECK:STDOUT:     import_ir_inst84: {ir_id: ir4, inst_id: ir3.inst301}
+// CHECK:STDOUT:     import_ir_inst85: {ir_id: ir4, inst_id: ir3.inst299}
 // CHECK:STDOUT:     import_ir_inst86: {ir_id: ir4, inst_id: inst(TypeType)}
-// CHECK:STDOUT:     import_ir_inst87: {ir_id: ir4, inst_id: inst298}
-// CHECK:STDOUT:     import_ir_inst88: {ir_id: ir4, inst_id: inst322}
-// CHECK:STDOUT:     import_ir_inst89: {ir_id: ir4, inst_id: inst320}
-// CHECK:STDOUT:     import_ir_inst90: {ir_id: ir4, inst_id: inst318}
-// CHECK:STDOUT:     import_ir_inst91: {ir_id: ir4, inst_id: inst319}
-// CHECK:STDOUT:     import_ir_inst92: {ir_id: ir4, inst_id: inst370}
-// CHECK:STDOUT:     import_ir_inst93: {ir_id: ir4, inst_id: inst368}
-// CHECK:STDOUT:     import_ir_inst94: {ir_id: ir4, inst_id: inst349}
-// CHECK:STDOUT:     import_ir_inst95: {ir_id: ir4, inst_id: inst343}
-// CHECK:STDOUT:     import_ir_inst96: {ir_id: ir4, inst_id: inst341}
-// CHECK:STDOUT:     import_ir_inst97: {ir_id: ir4, inst_id: inst346}
-// CHECK:STDOUT:     import_ir_inst98: {ir_id: ir4, inst_id: inst363}
-// CHECK:STDOUT:     import_ir_inst99: {ir_id: ir4, inst_id: inst365}
-// CHECK:STDOUT:     import_ir_inst100: {ir_id: ir4, inst_id: inst392}
-// CHECK:STDOUT:     import_ir_inst101: {ir_id: ir4, inst_id: inst369}
-// CHECK:STDOUT:     import_ir_inst102: {ir_id: ir4, inst_id: inst342}
-// CHECK:STDOUT:     import_ir_inst103: {ir_id: ir4, inst_id: inst348}
-// CHECK:STDOUT:     import_ir_inst104: {ir_id: ir4, inst_id: inst356}
-// CHECK:STDOUT:     import_ir_inst105: {ir_id: ir4, inst_id: inst360}
-// CHECK:STDOUT:     import_ir_inst106: {ir_id: ir4, inst_id: inst364}
-// CHECK:STDOUT:     import_ir_inst107: {ir_id: ir4, inst_id: inst372}
-// CHECK:STDOUT:     import_ir_inst108: {ir_id: ir4, inst_id: inst392}
-// CHECK:STDOUT:     import_ir_inst109: {ir_id: ir4, inst_id: inst387}
-// CHECK:STDOUT:     import_ir_inst110: {ir_id: ir4, inst_id: inst388}
-// CHECK:STDOUT:     import_ir_inst111: {ir_id: ir4, inst_id: inst383}
-// CHECK:STDOUT:     import_ir_inst112: {ir_id: ir4, inst_id: inst385}
-// CHECK:STDOUT:     import_ir_inst113: {ir_id: ir4, inst_id: inst341}
-// CHECK:STDOUT:     import_ir_inst114: {ir_id: ir4, inst_id: inst346}
-// CHECK:STDOUT:     import_ir_inst115: {ir_id: ir4, inst_id: inst395}
-// CHECK:STDOUT:     import_ir_inst116: {ir_id: ir4, inst_id: inst396}
-// CHECK:STDOUT:     import_ir_inst117: {ir_id: ir4, inst_id: inst376}
-// CHECK:STDOUT:     import_ir_inst118: {ir_id: ir4, inst_id: inst377}
-// CHECK:STDOUT:     import_ir_inst119: {ir_id: ir4, inst_id: inst378}
-// CHECK:STDOUT:     import_ir_inst120: {ir_id: ir4, inst_id: inst379}
-// CHECK:STDOUT:     import_ir_inst121: {ir_id: ir4, inst_id: inst380}
-// CHECK:STDOUT:     import_ir_inst122: {ir_id: ir4, inst_id: inst384}
-// CHECK:STDOUT:     import_ir_inst123: {ir_id: ir4, inst_id: inst401}
-// CHECK:STDOUT:     import_ir_inst124: {ir_id: ir4, inst_id: inst409}
-// CHECK:STDOUT:     import_ir_inst125: {ir_id: ir4, inst_id: inst413}
-// CHECK:STDOUT:     import_ir_inst126: {ir_id: ir4, inst_id: inst415}
-// CHECK:STDOUT:     import_ir_inst127: {ir_id: ir4, inst_id: inst416}
-// CHECK:STDOUT:     import_ir_inst128: {ir_id: ir4, inst_id: inst419}
-// CHECK:STDOUT:     import_ir_inst129: {ir_id: ir4, inst_id: inst431}
-// CHECK:STDOUT:     import_ir_inst130: {ir_id: ir4, inst_id: inst436}
-// CHECK:STDOUT:     import_ir_inst131: {ir_id: ir4, inst_id: inst440}
-// CHECK:STDOUT:     import_ir_inst132: {ir_id: ir4, inst_id: inst441}
-// CHECK:STDOUT:     import_ir_inst133: {ir_id: ir4, inst_id: inst446}
-// CHECK:STDOUT:     import_ir_inst134: {ir_id: ir4, inst_id: inst503}
-// CHECK:STDOUT:     import_ir_inst135: {ir_id: ir4, inst_id: inst501}
-// CHECK:STDOUT:     import_ir_inst136: {ir_id: ir4, inst_id: inst477}
-// CHECK:STDOUT:     import_ir_inst137: {ir_id: ir4, inst_id: inst471}
-// CHECK:STDOUT:     import_ir_inst138: {ir_id: ir4, inst_id: inst466}
-// CHECK:STDOUT:     import_ir_inst139: {ir_id: ir4, inst_id: inst464}
-// CHECK:STDOUT:     import_ir_inst140: {ir_id: ir4, inst_id: inst469}
-// CHECK:STDOUT:     import_ir_inst141: {ir_id: ir4, inst_id: inst474}
-// CHECK:STDOUT:     import_ir_inst142: {ir_id: ir4, inst_id: inst495}
-// CHECK:STDOUT:     import_ir_inst143: {ir_id: ir4, inst_id: inst497}
-// CHECK:STDOUT:     import_ir_inst144: {ir_id: ir4, inst_id: inst528}
-// CHECK:STDOUT:     import_ir_inst145: {ir_id: ir4, inst_id: inst502}
-// CHECK:STDOUT:     import_ir_inst146: {ir_id: ir4, inst_id: inst465}
-// CHECK:STDOUT:     import_ir_inst147: {ir_id: ir4, inst_id: inst470}
-// CHECK:STDOUT:     import_ir_inst148: {ir_id: ir4, inst_id: inst476}
-// CHECK:STDOUT:     import_ir_inst149: {ir_id: ir4, inst_id: inst485}
-// CHECK:STDOUT:     import_ir_inst150: {ir_id: ir4, inst_id: inst488}
-// CHECK:STDOUT:     import_ir_inst151: {ir_id: ir4, inst_id: inst492}
-// CHECK:STDOUT:     import_ir_inst152: {ir_id: ir4, inst_id: inst496}
-// CHECK:STDOUT:     import_ir_inst153: {ir_id: ir4, inst_id: inst505}
-// CHECK:STDOUT:     import_ir_inst154: {ir_id: ir4, inst_id: inst528}
-// CHECK:STDOUT:     import_ir_inst155: {ir_id: ir4, inst_id: inst523}
-// CHECK:STDOUT:     import_ir_inst156: {ir_id: ir4, inst_id: inst524}
-// CHECK:STDOUT:     import_ir_inst157: {ir_id: ir4, inst_id: inst519}
-// CHECK:STDOUT:     import_ir_inst158: {ir_id: ir4, inst_id: inst521}
-// CHECK:STDOUT:     import_ir_inst159: {ir_id: ir4, inst_id: inst464}
-// CHECK:STDOUT:     import_ir_inst160: {ir_id: ir4, inst_id: inst469}
-// CHECK:STDOUT:     import_ir_inst161: {ir_id: ir4, inst_id: inst474}
-// CHECK:STDOUT:     import_ir_inst162: {ir_id: ir4, inst_id: inst531}
-// CHECK:STDOUT:     import_ir_inst163: {ir_id: ir4, inst_id: inst532}
-// CHECK:STDOUT:     import_ir_inst164: {ir_id: ir4, inst_id: inst510}
-// CHECK:STDOUT:     import_ir_inst165: {ir_id: ir4, inst_id: inst511}
-// CHECK:STDOUT:     import_ir_inst166: {ir_id: ir4, inst_id: inst512}
-// CHECK:STDOUT:     import_ir_inst167: {ir_id: ir4, inst_id: inst513}
-// CHECK:STDOUT:     import_ir_inst168: {ir_id: ir4, inst_id: inst514}
-// CHECK:STDOUT:     import_ir_inst169: {ir_id: ir4, inst_id: inst515}
-// CHECK:STDOUT:     import_ir_inst170: {ir_id: ir4, inst_id: inst516}
-// CHECK:STDOUT:     import_ir_inst171: {ir_id: ir4, inst_id: inst520}
-// CHECK:STDOUT:     import_ir_inst172: {ir_id: ir4, inst_id: inst537}
-// CHECK:STDOUT:     import_ir_inst173: {ir_id: ir4, inst_id: inst544}
-// CHECK:STDOUT:     import_ir_inst174: {ir_id: ir4, inst_id: inst548}
-// CHECK:STDOUT:     import_ir_inst175: {ir_id: ir4, inst_id: inst550}
-// CHECK:STDOUT:     import_ir_inst176: {ir_id: ir4, inst_id: inst551}
-// CHECK:STDOUT:     import_ir_inst177: {ir_id: ir4, inst_id: inst554}
-// CHECK:STDOUT:     import_ir_inst178: {ir_id: ir4, inst_id: inst564}
-// CHECK:STDOUT:     import_ir_inst179: {ir_id: ir4, inst_id: inst568}
-// CHECK:STDOUT:     import_ir_inst180: {ir_id: ir4, inst_id: inst570}
-// CHECK:STDOUT:     import_ir_inst181: {ir_id: ir4, inst_id: inst571}
-// CHECK:STDOUT:     import_ir_inst182: {ir_id: ir4, inst_id: inst574}
-// CHECK:STDOUT:     import_ir_inst183: {ir_id: ir4, inst_id: inst586}
-// CHECK:STDOUT:     import_ir_inst184: {ir_id: ir4, inst_id: inst591}
-// CHECK:STDOUT:     import_ir_inst185: {ir_id: ir4, inst_id: inst595}
-// CHECK:STDOUT:     import_ir_inst186: {ir_id: ir4, inst_id: inst596}
-// CHECK:STDOUT:     import_ir_inst187: {ir_id: ir4, inst_id: inst601}
+// CHECK:STDOUT:     import_ir_inst87: {ir_id: ir4, inst_id: ir3.inst298}
+// CHECK:STDOUT:     import_ir_inst88: {ir_id: ir4, inst_id: ir3.inst322}
+// CHECK:STDOUT:     import_ir_inst89: {ir_id: ir4, inst_id: ir3.inst320}
+// CHECK:STDOUT:     import_ir_inst90: {ir_id: ir4, inst_id: ir3.inst318}
+// CHECK:STDOUT:     import_ir_inst91: {ir_id: ir4, inst_id: ir3.inst319}
+// CHECK:STDOUT:     import_ir_inst92: {ir_id: ir4, inst_id: ir3.inst370}
+// CHECK:STDOUT:     import_ir_inst93: {ir_id: ir4, inst_id: ir3.inst368}
+// CHECK:STDOUT:     import_ir_inst94: {ir_id: ir4, inst_id: ir3.inst349}
+// CHECK:STDOUT:     import_ir_inst95: {ir_id: ir4, inst_id: ir3.inst343}
+// CHECK:STDOUT:     import_ir_inst96: {ir_id: ir4, inst_id: ir3.inst341}
+// CHECK:STDOUT:     import_ir_inst97: {ir_id: ir4, inst_id: ir3.inst346}
+// CHECK:STDOUT:     import_ir_inst98: {ir_id: ir4, inst_id: ir3.inst363}
+// CHECK:STDOUT:     import_ir_inst99: {ir_id: ir4, inst_id: ir3.inst365}
+// CHECK:STDOUT:     import_ir_inst100: {ir_id: ir4, inst_id: ir3.inst392}
+// CHECK:STDOUT:     import_ir_inst101: {ir_id: ir4, inst_id: ir3.inst369}
+// CHECK:STDOUT:     import_ir_inst102: {ir_id: ir4, inst_id: ir3.inst342}
+// CHECK:STDOUT:     import_ir_inst103: {ir_id: ir4, inst_id: ir3.inst348}
+// CHECK:STDOUT:     import_ir_inst104: {ir_id: ir4, inst_id: ir3.inst356}
+// CHECK:STDOUT:     import_ir_inst105: {ir_id: ir4, inst_id: ir3.inst360}
+// CHECK:STDOUT:     import_ir_inst106: {ir_id: ir4, inst_id: ir3.inst364}
+// CHECK:STDOUT:     import_ir_inst107: {ir_id: ir4, inst_id: ir3.inst372}
+// CHECK:STDOUT:     import_ir_inst108: {ir_id: ir4, inst_id: ir3.inst392}
+// CHECK:STDOUT:     import_ir_inst109: {ir_id: ir4, inst_id: ir3.inst387}
+// CHECK:STDOUT:     import_ir_inst110: {ir_id: ir4, inst_id: ir3.inst388}
+// CHECK:STDOUT:     import_ir_inst111: {ir_id: ir4, inst_id: ir3.inst383}
+// CHECK:STDOUT:     import_ir_inst112: {ir_id: ir4, inst_id: ir3.inst385}
+// CHECK:STDOUT:     import_ir_inst113: {ir_id: ir4, inst_id: ir3.inst341}
+// CHECK:STDOUT:     import_ir_inst114: {ir_id: ir4, inst_id: ir3.inst346}
+// CHECK:STDOUT:     import_ir_inst115: {ir_id: ir4, inst_id: ir3.inst395}
+// CHECK:STDOUT:     import_ir_inst116: {ir_id: ir4, inst_id: ir3.inst396}
+// CHECK:STDOUT:     import_ir_inst117: {ir_id: ir4, inst_id: ir3.inst376}
+// CHECK:STDOUT:     import_ir_inst118: {ir_id: ir4, inst_id: ir3.inst377}
+// CHECK:STDOUT:     import_ir_inst119: {ir_id: ir4, inst_id: ir3.inst378}
+// CHECK:STDOUT:     import_ir_inst120: {ir_id: ir4, inst_id: ir3.inst379}
+// CHECK:STDOUT:     import_ir_inst121: {ir_id: ir4, inst_id: ir3.inst380}
+// CHECK:STDOUT:     import_ir_inst122: {ir_id: ir4, inst_id: ir3.inst384}
+// CHECK:STDOUT:     import_ir_inst123: {ir_id: ir4, inst_id: ir3.inst401}
+// CHECK:STDOUT:     import_ir_inst124: {ir_id: ir4, inst_id: ir3.inst409}
+// CHECK:STDOUT:     import_ir_inst125: {ir_id: ir4, inst_id: ir3.inst413}
+// CHECK:STDOUT:     import_ir_inst126: {ir_id: ir4, inst_id: ir3.inst415}
+// CHECK:STDOUT:     import_ir_inst127: {ir_id: ir4, inst_id: ir3.inst416}
+// CHECK:STDOUT:     import_ir_inst128: {ir_id: ir4, inst_id: ir3.inst419}
+// CHECK:STDOUT:     import_ir_inst129: {ir_id: ir4, inst_id: ir3.inst431}
+// CHECK:STDOUT:     import_ir_inst130: {ir_id: ir4, inst_id: ir3.inst436}
+// CHECK:STDOUT:     import_ir_inst131: {ir_id: ir4, inst_id: ir3.inst440}
+// CHECK:STDOUT:     import_ir_inst132: {ir_id: ir4, inst_id: ir3.inst441}
+// CHECK:STDOUT:     import_ir_inst133: {ir_id: ir4, inst_id: ir3.inst446}
+// CHECK:STDOUT:     import_ir_inst134: {ir_id: ir4, inst_id: ir3.inst503}
+// CHECK:STDOUT:     import_ir_inst135: {ir_id: ir4, inst_id: ir3.inst501}
+// CHECK:STDOUT:     import_ir_inst136: {ir_id: ir4, inst_id: ir3.inst477}
+// CHECK:STDOUT:     import_ir_inst137: {ir_id: ir4, inst_id: ir3.inst471}
+// CHECK:STDOUT:     import_ir_inst138: {ir_id: ir4, inst_id: ir3.inst466}
+// CHECK:STDOUT:     import_ir_inst139: {ir_id: ir4, inst_id: ir3.inst464}
+// CHECK:STDOUT:     import_ir_inst140: {ir_id: ir4, inst_id: ir3.inst469}
+// CHECK:STDOUT:     import_ir_inst141: {ir_id: ir4, inst_id: ir3.inst474}
+// CHECK:STDOUT:     import_ir_inst142: {ir_id: ir4, inst_id: ir3.inst495}
+// CHECK:STDOUT:     import_ir_inst143: {ir_id: ir4, inst_id: ir3.inst497}
+// CHECK:STDOUT:     import_ir_inst144: {ir_id: ir4, inst_id: ir3.inst528}
+// CHECK:STDOUT:     import_ir_inst145: {ir_id: ir4, inst_id: ir3.inst502}
+// CHECK:STDOUT:     import_ir_inst146: {ir_id: ir4, inst_id: ir3.inst465}
+// CHECK:STDOUT:     import_ir_inst147: {ir_id: ir4, inst_id: ir3.inst470}
+// CHECK:STDOUT:     import_ir_inst148: {ir_id: ir4, inst_id: ir3.inst476}
+// CHECK:STDOUT:     import_ir_inst149: {ir_id: ir4, inst_id: ir3.inst485}
+// CHECK:STDOUT:     import_ir_inst150: {ir_id: ir4, inst_id: ir3.inst488}
+// CHECK:STDOUT:     import_ir_inst151: {ir_id: ir4, inst_id: ir3.inst492}
+// CHECK:STDOUT:     import_ir_inst152: {ir_id: ir4, inst_id: ir3.inst496}
+// CHECK:STDOUT:     import_ir_inst153: {ir_id: ir4, inst_id: ir3.inst505}
+// CHECK:STDOUT:     import_ir_inst154: {ir_id: ir4, inst_id: ir3.inst528}
+// CHECK:STDOUT:     import_ir_inst155: {ir_id: ir4, inst_id: ir3.inst523}
+// CHECK:STDOUT:     import_ir_inst156: {ir_id: ir4, inst_id: ir3.inst524}
+// CHECK:STDOUT:     import_ir_inst157: {ir_id: ir4, inst_id: ir3.inst519}
+// CHECK:STDOUT:     import_ir_inst158: {ir_id: ir4, inst_id: ir3.inst521}
+// CHECK:STDOUT:     import_ir_inst159: {ir_id: ir4, inst_id: ir3.inst464}
+// CHECK:STDOUT:     import_ir_inst160: {ir_id: ir4, inst_id: ir3.inst469}
+// CHECK:STDOUT:     import_ir_inst161: {ir_id: ir4, inst_id: ir3.inst474}
+// CHECK:STDOUT:     import_ir_inst162: {ir_id: ir4, inst_id: ir3.inst531}
+// CHECK:STDOUT:     import_ir_inst163: {ir_id: ir4, inst_id: ir3.inst532}
+// CHECK:STDOUT:     import_ir_inst164: {ir_id: ir4, inst_id: ir3.inst510}
+// CHECK:STDOUT:     import_ir_inst165: {ir_id: ir4, inst_id: ir3.inst511}
+// CHECK:STDOUT:     import_ir_inst166: {ir_id: ir4, inst_id: ir3.inst512}
+// CHECK:STDOUT:     import_ir_inst167: {ir_id: ir4, inst_id: ir3.inst513}
+// CHECK:STDOUT:     import_ir_inst168: {ir_id: ir4, inst_id: ir3.inst514}
+// CHECK:STDOUT:     import_ir_inst169: {ir_id: ir4, inst_id: ir3.inst515}
+// CHECK:STDOUT:     import_ir_inst170: {ir_id: ir4, inst_id: ir3.inst516}
+// CHECK:STDOUT:     import_ir_inst171: {ir_id: ir4, inst_id: ir3.inst520}
+// CHECK:STDOUT:     import_ir_inst172: {ir_id: ir4, inst_id: ir3.inst537}
+// CHECK:STDOUT:     import_ir_inst173: {ir_id: ir4, inst_id: ir3.inst544}
+// CHECK:STDOUT:     import_ir_inst174: {ir_id: ir4, inst_id: ir3.inst548}
+// CHECK:STDOUT:     import_ir_inst175: {ir_id: ir4, inst_id: ir3.inst550}
+// CHECK:STDOUT:     import_ir_inst176: {ir_id: ir4, inst_id: ir3.inst551}
+// CHECK:STDOUT:     import_ir_inst177: {ir_id: ir4, inst_id: ir3.inst554}
+// CHECK:STDOUT:     import_ir_inst178: {ir_id: ir4, inst_id: ir3.inst564}
+// CHECK:STDOUT:     import_ir_inst179: {ir_id: ir4, inst_id: ir3.inst568}
+// CHECK:STDOUT:     import_ir_inst180: {ir_id: ir4, inst_id: ir3.inst570}
+// CHECK:STDOUT:     import_ir_inst181: {ir_id: ir4, inst_id: ir3.inst571}
+// CHECK:STDOUT:     import_ir_inst182: {ir_id: ir4, inst_id: ir3.inst574}
+// CHECK:STDOUT:     import_ir_inst183: {ir_id: ir4, inst_id: ir3.inst586}
+// CHECK:STDOUT:     import_ir_inst184: {ir_id: ir4, inst_id: ir3.inst591}
+// CHECK:STDOUT:     import_ir_inst185: {ir_id: ir4, inst_id: ir3.inst595}
+// CHECK:STDOUT:     import_ir_inst186: {ir_id: ir4, inst_id: ir3.inst596}
+// CHECK:STDOUT:     import_ir_inst187: {ir_id: ir4, inst_id: ir3.inst601}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name(Core): inst16, name0: inst53}}
-// CHECK:STDOUT:     name_scope1:     {inst: inst16, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name3: inst69}}
-// CHECK:STDOUT:     name_scope2:     {inst: inst70, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {name(SelfType): inst73, name4: inst74}}
-// CHECK:STDOUT:     name_scope3:     {inst: inst94, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope4:     {inst: inst139, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope5:     {inst: inst143, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope6:     {inst: inst147, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope7:     {inst: inst151, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope8:     {inst: inst155, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope9:     {inst: inst181, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope10:    {inst: inst185, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope11:    {inst: inst189, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope12:    {inst: inst245, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name(Core): ir0.inst16, name0: ir0.inst53}}
+// CHECK:STDOUT:     name_scope1:     {inst: ir0.inst16, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name3: ir0.inst69}}
+// CHECK:STDOUT:     name_scope2:     {inst: ir0.inst70, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {name(SelfType): ir0.inst73, name4: ir0.inst74}}
+// CHECK:STDOUT:     name_scope3:     {inst: ir0.inst94, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope4:     {inst: ir0.inst139, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope5:     {inst: ir0.inst143, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope6:     {inst: ir0.inst147, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope7:     {inst: ir0.inst151, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope8:     {inst: ir0.inst155, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope9:     {inst: ir0.inst181, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope10:    {inst: ir0.inst185, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope11:    {inst: ir0.inst189, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope12:    {inst: ir0.inst245, parent_scope: name_scope1, has_error: false, extended_scopes: [], names: {}}
 // CHECK:STDOUT:   entity_names:
 // CHECK:STDOUT:     entity_name0:    {name: name(PeriodSelf), parent_scope: name_scope<none>, index: -1, is_template: 0, clang_decl_id: clang_decl_id<none>}
 // CHECK:STDOUT:     entity_name1:    {name: name1, parent_scope: name_scope<none>, index: 0, is_template: 0, clang_decl_id: clang_decl_id<none>}
@@ -278,24 +278,24 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT:     entity_name43:   {name: name5, parent_scope: name_scope<none>, index: 1, is_template: 0, clang_decl_id: clang_decl_id<none>}
 // CHECK:STDOUT:     entity_name44:   {name: name6, parent_scope: name_scope<none>, index: 2, is_template: 0, clang_decl_id: clang_decl_id<none>}
 // CHECK:STDOUT:   functions:
-// CHECK:STDOUT:     function0:       {name: name0, parent_scope: name_scope0, call_params_id: inst_block13, return_slot_pattern: inst48, body: [inst_block20]}
-// CHECK:STDOUT:     function1:       {name: name4, parent_scope: name_scope2, return_slot_pattern: inst85}
-// CHECK:STDOUT:     function2:       {name: name4, parent_scope: name_scope3, return_slot_pattern: inst115}
-// CHECK:STDOUT:     function3:       {name: name4, parent_scope: name_scope8, return_slot_pattern: inst170}
-// CHECK:STDOUT:     function4:       {name: name4, parent_scope: name_scope11, return_slot_pattern: inst213}
-// CHECK:STDOUT:     function5:       {name: name4, parent_scope: name_scope12, return_slot_pattern: inst273}
+// CHECK:STDOUT:     function0:       {name: name0, parent_scope: name_scope0, call_params_id: inst_block13, return_slot_pattern: ir0.inst48, body: [inst_block20]}
+// CHECK:STDOUT:     function1:       {name: name4, parent_scope: name_scope2, return_slot_pattern: ir0.inst85}
+// CHECK:STDOUT:     function2:       {name: name4, parent_scope: name_scope3, return_slot_pattern: ir0.inst115}
+// CHECK:STDOUT:     function3:       {name: name4, parent_scope: name_scope8, return_slot_pattern: ir0.inst170}
+// CHECK:STDOUT:     function4:       {name: name4, parent_scope: name_scope11, return_slot_pattern: ir0.inst213}
+// CHECK:STDOUT:     function5:       {name: name4, parent_scope: name_scope12, return_slot_pattern: ir0.inst273}
 // CHECK:STDOUT:   classes:         {}
 // CHECK:STDOUT:   generics:
-// CHECK:STDOUT:     generic0:        {decl: inst53, bindings: inst_block16}
-// CHECK:STDOUT:     generic1:        {decl: inst79, bindings: inst_block24}
-// CHECK:STDOUT:     generic2:        {decl: inst94, bindings: inst_block29}
-// CHECK:STDOUT:     generic3:        {decl: inst110, bindings: inst_block36}
-// CHECK:STDOUT:     generic4:        {decl: inst155, bindings: inst_block46}
-// CHECK:STDOUT:     generic5:        {decl: inst166, bindings: inst_block52}
-// CHECK:STDOUT:     generic6:        {decl: inst189, bindings: inst_block59}
-// CHECK:STDOUT:     generic7:        {decl: inst208, bindings: inst_block67}
-// CHECK:STDOUT:     generic8:        {decl: inst245, bindings: inst_block81}
-// CHECK:STDOUT:     generic9:        {decl: inst268, bindings: inst_block89}
+// CHECK:STDOUT:     generic0:        {decl: ir0.inst53, bindings: inst_block16}
+// CHECK:STDOUT:     generic1:        {decl: ir0.inst79, bindings: inst_block24}
+// CHECK:STDOUT:     generic2:        {decl: ir0.inst94, bindings: inst_block29}
+// CHECK:STDOUT:     generic3:        {decl: ir0.inst110, bindings: inst_block36}
+// CHECK:STDOUT:     generic4:        {decl: ir0.inst155, bindings: inst_block46}
+// CHECK:STDOUT:     generic5:        {decl: ir0.inst166, bindings: inst_block52}
+// CHECK:STDOUT:     generic6:        {decl: ir0.inst189, bindings: inst_block59}
+// CHECK:STDOUT:     generic7:        {decl: ir0.inst208, bindings: inst_block67}
+// CHECK:STDOUT:     generic8:        {decl: ir0.inst245, bindings: inst_block81}
+// CHECK:STDOUT:     generic9:        {decl: ir0.inst268, bindings: inst_block89}
 // CHECK:STDOUT:   specifics:
 // CHECK:STDOUT:     specific0:       {generic: generic0, args: inst_block17}
 // CHECK:STDOUT:     specific1:       {generic: generic1, args: inst_block26}
@@ -331,14 +331,14 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     'type(inst36)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst36)}
-// CHECK:STDOUT:     'type(inst38)':
-// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst40)}
-// CHECK:STDOUT:     'type(inst40)':
-// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst40)}
-// CHECK:STDOUT:     'type(inst54)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst36)}
+// CHECK:STDOUT:     'type(ir0.inst36)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst36)}
+// CHECK:STDOUT:     'type(ir0.inst38)':
+// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(ir0.inst40)}
+// CHECK:STDOUT:     'type(ir0.inst40)':
+// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(ir0.inst40)}
+// CHECK:STDOUT:     'type(ir0.inst54)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst36)}
 // CHECK:STDOUT:     'type(symbolic_constant3)':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(symbolic_constant3)}
 // CHECK:STDOUT:     'type(symbolic_constant7)':
@@ -351,1430 +351,1430 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(symbolic_constant4)}
 // CHECK:STDOUT:     'type(symbolic_constant8)':
 // CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(symbolic_constant11)}
-// CHECK:STDOUT:     'type(inst71)':
-// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst71)}
+// CHECK:STDOUT:     'type(ir0.inst71)':
+// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(ir0.inst71)}
 // CHECK:STDOUT:     'type(inst(SpecificFunctionType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(SpecificFunctionType))}
 // CHECK:STDOUT:     'type(symbolic_constant253)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst36)}
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst36)}
 // CHECK:STDOUT:     'type(symbolic_constant256)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst36)}
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst36)}
 // CHECK:STDOUT:     'type(inst(BoundMethodType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(BoundMethodType))}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     inst14:          {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst15:          {kind: ImportDecl, arg0: name(Core)}
-// CHECK:STDOUT:     inst16:          {kind: Namespace, arg0: name_scope1, arg1: inst15, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst17:          {kind: FacetType, arg0: facet_type0, type: type(TypeType)}
-// CHECK:STDOUT:     inst18:          {kind: BindSymbolicName, arg0: entity_name0, arg1: inst<none>, type: type(inst17)}
-// CHECK:STDOUT:     inst19:          {kind: BindSymbolicName, arg0: entity_name0, arg1: inst<none>, type: type(inst17)}
-// CHECK:STDOUT:     inst20:          {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst21:          {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst22:          {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst23:          {kind: PatternType, arg0: inst(TypeType), type: type(TypeType)}
-// CHECK:STDOUT:     inst24:          {kind: SymbolicBindingPattern, arg0: entity_name1, type: type(inst23)}
-// CHECK:STDOUT:     inst25:          {kind: NameRef, arg0: name1, arg1: inst20, type: type(TypeType)}
-// CHECK:STDOUT:     inst26:          {kind: PointerType, arg0: inst25, type: type(TypeType)}
-// CHECK:STDOUT:     inst27:          {kind: PointerType, arg0: inst21, type: type(TypeType)}
-// CHECK:STDOUT:     inst28:          {kind: PointerType, arg0: inst22, type: type(TypeType)}
-// CHECK:STDOUT:     inst29:          {kind: BindName, arg0: entity_name2, arg1: inst49, type: type(symbolic_constant4)}
-// CHECK:STDOUT:     inst30:          {kind: PatternType, arg0: inst27, type: type(TypeType)}
-// CHECK:STDOUT:     inst31:          {kind: BindingPattern, arg0: entity_name2, type: type(symbolic_constant6)}
-// CHECK:STDOUT:     inst32:          {kind: PatternType, arg0: inst28, type: type(TypeType)}
-// CHECK:STDOUT:     inst33:          {kind: ValueParamPattern, arg0: inst31, arg1: call_param0, type: type(symbolic_constant6)}
-// CHECK:STDOUT:     inst34:          {kind: NameRef, arg0: name1, arg1: inst20, type: type(TypeType)}
-// CHECK:STDOUT:     inst35:          {kind: PointerType, arg0: inst34, type: type(TypeType)}
-// CHECK:STDOUT:     inst36:          {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst37:          {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst36)}
-// CHECK:STDOUT:     inst38:          {kind: TupleType, arg0: inst_block9, type: type(TypeType)}
-// CHECK:STDOUT:     inst39:          {kind: TupleLiteral, arg0: inst_block8, type: type(inst38)}
-// CHECK:STDOUT:     inst40:          {kind: PointerType, arg0: inst38, type: type(TypeType)}
-// CHECK:STDOUT:     inst41:          {kind: Converted, arg0: inst37, arg1: inst36, type: type(TypeType)}
-// CHECK:STDOUT:     inst42:          {kind: TupleType, arg0: inst_block11, type: type(TypeType)}
-// CHECK:STDOUT:     inst43:          {kind: Converted, arg0: inst39, arg1: inst42, type: type(TypeType)}
-// CHECK:STDOUT:     inst44:          {kind: TupleType, arg0: inst_block12, type: type(TypeType)}
-// CHECK:STDOUT:     inst45:          {kind: PatternType, arg0: inst42, type: type(TypeType)}
-// CHECK:STDOUT:     inst46:          {kind: ReturnSlotPattern, arg0: inst43, type: type(symbolic_constant10)}
-// CHECK:STDOUT:     inst47:          {kind: PatternType, arg0: inst44, type: type(TypeType)}
-// CHECK:STDOUT:     inst48:          {kind: OutParamPattern, arg0: inst46, arg1: call_param1, type: type(symbolic_constant10)}
-// CHECK:STDOUT:     inst49:          {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(symbolic_constant4)}
-// CHECK:STDOUT:     inst50:          {kind: SpliceBlock, arg0: inst_block6, arg1: inst26, type: type(TypeType)}
-// CHECK:STDOUT:     inst51:          {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(symbolic_constant8)}
-// CHECK:STDOUT:     inst52:          {kind: ReturnSlot, arg0: inst42, arg1: inst51, type: type(symbolic_constant8)}
-// CHECK:STDOUT:     inst53:          {kind: FunctionDecl, arg0: function0, arg1: inst_block15, type: type(inst54)}
-// CHECK:STDOUT:     inst54:          {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst55:          {kind: StructValue, arg0: inst_block_empty, type: type(inst54)}
-// CHECK:STDOUT:     inst56:          {kind: PointerType, arg0: inst42, type: type(TypeType)}
-// CHECK:STDOUT:     inst57:          {kind: RequireCompleteType, arg0: inst42, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst58:          {kind: RequireCompleteType, arg0: inst42, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst59:          {kind: RequireCompleteType, arg0: inst44, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60:          {kind: RequireCompleteType, arg0: inst27, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst61:          {kind: RequireCompleteType, arg0: inst27, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst62:          {kind: RequireCompleteType, arg0: inst28, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst63:          {kind: NameRef, arg0: name2, arg1: inst29, type: type(symbolic_constant4)}
-// CHECK:STDOUT:     inst64:          {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst36)}
-// CHECK:STDOUT:     inst65:          {kind: TupleLiteral, arg0: inst_block21, type: type(symbolic_constant8)}
-// CHECK:STDOUT:     inst66:          {kind: RequireCompleteType, arg0: inst42, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst67:          {kind: TupleAccess, arg0: inst52, arg1: element0, type: type(symbolic_constant4)}
-// CHECK:STDOUT:     inst68:          {kind: RequireCompleteType, arg0: inst27, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst69:          {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name3, type: type(TypeType)}
-// CHECK:STDOUT:     inst70:          {kind: InterfaceDecl, arg0: interface0, arg1: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst71:          {kind: FacetType, arg0: facet_type1, type: type(TypeType)}
-// CHECK:STDOUT:     inst72:          {kind: BindSymbolicName, arg0: entity_name4, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst73:          {kind: ImportRefUnloaded, arg0: import_ir_inst2, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst74:          {kind: ImportRefLoaded, arg0: import_ir_inst3, arg1: entity_name<none>, type: type(inst76)}
-// CHECK:STDOUT:     inst75:          {kind: ImportRefUnloaded, arg0: import_ir_inst4, arg1: entity_name5}
-// CHECK:STDOUT:     inst76:          {kind: AssociatedEntityType, arg0: interface0, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst77:          {kind: ImportRefLoaded, arg0: import_ir_inst5, arg1: entity_name<none>, type: type(inst80)}
-// CHECK:STDOUT:     inst78:          {kind: AssociatedEntity, arg0: element0, arg1: inst77, type: type(inst76)}
-// CHECK:STDOUT:     inst79:          {kind: FunctionDecl, arg0: function1, arg1: inst_block_empty, type: type(inst80)}
-// CHECK:STDOUT:     inst80:          {kind: FunctionType, arg0: function1, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst81:          {kind: StructValue, arg0: inst_block_empty, type: type(inst80)}
-// CHECK:STDOUT:     inst82:          {kind: FacetAccessType, arg0: inst72, type: type(TypeType)}
-// CHECK:STDOUT:     inst83:          {kind: PatternType, arg0: inst82, type: type(TypeType)}
-// CHECK:STDOUT:     inst84:          {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant19)}
-// CHECK:STDOUT:     inst85:          {kind: OutParamPattern, arg0: inst84, arg1: call_param1, type: type(symbolic_constant19)}
-// CHECK:STDOUT:     inst86:          {kind: BindingPattern, arg0: entity_name7, type: type(symbolic_constant19)}
-// CHECK:STDOUT:     inst87:          {kind: ValueParamPattern, arg0: inst86, arg1: call_param0, type: type(symbolic_constant19)}
-// CHECK:STDOUT:     inst88:          {kind: ImportRefLoaded, arg0: import_ir_inst11, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst89:          {kind: BindSymbolicName, arg0: entity_name4, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst90:          {kind: FacetAccessType, arg0: inst89, type: type(TypeType)}
-// CHECK:STDOUT:     inst91:          {kind: PatternType, arg0: inst90, type: type(TypeType)}
-// CHECK:STDOUT:     inst92:          {kind: LookupImplWitness, arg0: inst27, arg1: specific_interface0, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst93:          {kind: ImportRefUnloaded, arg0: import_ir_inst15, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst94:          {kind: ImplDecl, arg0: impl0, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst95:          {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst96:          {kind: FacetAccessType, arg0: inst95, type: type(TypeType)}
-// CHECK:STDOUT:     inst97:          {kind: ConstType, arg0: inst96, type: type(TypeType)}
-// CHECK:STDOUT:     inst98:          {kind: PatternType, arg0: inst71, type: type(TypeType)}
-// CHECK:STDOUT:     inst99:          {kind: SymbolicBindingPattern, arg0: entity_name10, type: type(inst98)}
-// CHECK:STDOUT:     inst100:         {kind: ImportRefLoaded, arg0: import_ir_inst18, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst101:         {kind: ImportRefLoaded, arg0: import_ir_inst19, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst102:         {kind: ImportRefLoaded, arg0: import_ir_inst20, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst103:         {kind: ImportRefUnloaded, arg0: import_ir_inst21, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst104:         {kind: ImplWitnessTable, arg0: inst_block30, arg1: impl0}
-// CHECK:STDOUT:     inst105:         {kind: ImplWitness, arg0: inst104, arg1: specific2, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst106:         {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst107:         {kind: FacetAccessType, arg0: inst106, type: type(TypeType)}
-// CHECK:STDOUT:     inst108:         {kind: ConstType, arg0: inst107, type: type(TypeType)}
-// CHECK:STDOUT:     inst109:         {kind: ImplWitness, arg0: inst104, arg1: specific3, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst110:         {kind: FunctionDecl, arg0: function2, arg1: inst_block_empty, type: type(symbolic_constant38)}
-// CHECK:STDOUT:     inst111:         {kind: FunctionType, arg0: function2, arg1: specific2, type: type(TypeType)}
-// CHECK:STDOUT:     inst112:         {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant38)}
-// CHECK:STDOUT:     inst113:         {kind: PatternType, arg0: inst97, type: type(TypeType)}
-// CHECK:STDOUT:     inst114:         {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant43)}
-// CHECK:STDOUT:     inst115:         {kind: OutParamPattern, arg0: inst114, arg1: call_param1, type: type(symbolic_constant43)}
-// CHECK:STDOUT:     inst116:         {kind: BindingPattern, arg0: entity_name13, type: type(symbolic_constant43)}
-// CHECK:STDOUT:     inst117:         {kind: ValueParamPattern, arg0: inst116, arg1: call_param0, type: type(symbolic_constant43)}
-// CHECK:STDOUT:     inst118:         {kind: ImportRefLoaded, arg0: import_ir_inst32, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst119:         {kind: FunctionType, arg0: function2, arg1: specific3, type: type(TypeType)}
-// CHECK:STDOUT:     inst120:         {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant45)}
-// CHECK:STDOUT:     inst121:         {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst122:         {kind: FacetAccessType, arg0: inst121, type: type(TypeType)}
-// CHECK:STDOUT:     inst123:         {kind: ConstType, arg0: inst122, type: type(TypeType)}
-// CHECK:STDOUT:     inst124:         {kind: PatternType, arg0: inst123, type: type(TypeType)}
-// CHECK:STDOUT:     inst125:         {kind: RequireCompleteType, arg0: inst97, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst126:         {kind: RequireCompleteType, arg0: inst96, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst127:         {kind: LookupImplWitness, arg0: inst95, arg1: specific_interface0, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst128:         {kind: FunctionTypeWithSelfType, arg0: inst80, arg1: inst95, type: type(TypeType)}
-// CHECK:STDOUT:     inst129:         {kind: ImplWitnessAccess, arg0: inst127, arg1: element0, type: type(symbolic_constant60)}
-// CHECK:STDOUT:     inst130:         {kind: SpecificImplFunction, arg0: inst129, arg1: specific5, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst131:         {kind: RequireCompleteType, arg0: inst123, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst132:         {kind: RequireCompleteType, arg0: inst122, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst133:         {kind: LookupImplWitness, arg0: inst121, arg1: specific_interface0, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst134:         {kind: FunctionTypeWithSelfType, arg0: inst80, arg1: inst121, type: type(TypeType)}
-// CHECK:STDOUT:     inst135:         {kind: ImplWitnessAccess, arg0: inst133, arg1: element0, type: type(symbolic_constant69)}
-// CHECK:STDOUT:     inst136:         {kind: SpecificImplFunction, arg0: inst135, arg1: specific6, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst137:         {kind: PatternType, arg0: inst96, type: type(TypeType)}
-// CHECK:STDOUT:     inst138:         {kind: ImportRefUnloaded, arg0: import_ir_inst45, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst139:         {kind: ImplDecl, arg0: impl1, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst140:         {kind: ImportRefLoaded, arg0: import_ir_inst47, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst141:         {kind: ImportRefLoaded, arg0: import_ir_inst48, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst142:         {kind: ImportRefUnloaded, arg0: import_ir_inst49, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst143:         {kind: ImplDecl, arg0: impl2, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst144:         {kind: ImportRefLoaded, arg0: import_ir_inst51, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst145:         {kind: ImportRefLoaded, arg0: import_ir_inst52, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst146:         {kind: ImportRefUnloaded, arg0: import_ir_inst53, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst147:         {kind: ImplDecl, arg0: impl3, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst148:         {kind: ImportRefLoaded, arg0: import_ir_inst55, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst149:         {kind: ImportRefLoaded, arg0: import_ir_inst56, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst150:         {kind: ImportRefUnloaded, arg0: import_ir_inst57, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst151:         {kind: ImplDecl, arg0: impl4, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst152:         {kind: ImportRefLoaded, arg0: import_ir_inst59, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst153:         {kind: ImportRefLoaded, arg0: import_ir_inst60, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst154:         {kind: ImportRefLoaded, arg0: import_ir_inst61, arg1: entity_name<none>, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst155:         {kind: ImplDecl, arg0: impl5, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst156:         {kind: SymbolicBindingPattern, arg0: entity_name16, type: type(inst23)}
-// CHECK:STDOUT:     inst157:         {kind: ImportRefLoaded, arg0: import_ir_inst64, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst158:         {kind: ImportRefLoaded, arg0: import_ir_inst65, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst159:         {kind: ImportRefLoaded, arg0: import_ir_inst66, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst160:         {kind: ImportRefUnloaded, arg0: import_ir_inst67, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst161:         {kind: ImplWitnessTable, arg0: inst_block47, arg1: impl5}
-// CHECK:STDOUT:     inst162:         {kind: ImplWitness, arg0: inst161, arg1: specific7, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst163:         {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst164:         {kind: PointerType, arg0: inst163, type: type(TypeType)}
-// CHECK:STDOUT:     inst165:         {kind: ImplWitness, arg0: inst161, arg1: specific8, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst166:         {kind: FunctionDecl, arg0: function3, arg1: inst_block_empty, type: type(symbolic_constant81)}
-// CHECK:STDOUT:     inst167:         {kind: FunctionType, arg0: function3, arg1: specific7, type: type(TypeType)}
-// CHECK:STDOUT:     inst168:         {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant81)}
-// CHECK:STDOUT:     inst169:         {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant85)}
-// CHECK:STDOUT:     inst170:         {kind: OutParamPattern, arg0: inst169, arg1: call_param1, type: type(symbolic_constant85)}
-// CHECK:STDOUT:     inst171:         {kind: BindingPattern, arg0: entity_name19, type: type(symbolic_constant85)}
-// CHECK:STDOUT:     inst172:         {kind: ValueParamPattern, arg0: inst171, arg1: call_param0, type: type(symbolic_constant85)}
-// CHECK:STDOUT:     inst173:         {kind: ImportRefLoaded, arg0: import_ir_inst77, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst174:         {kind: FunctionType, arg0: function3, arg1: specific8, type: type(TypeType)}
-// CHECK:STDOUT:     inst175:         {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant88)}
-// CHECK:STDOUT:     inst176:         {kind: RequireCompleteType, arg0: inst164, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst177:         {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst178:         {kind: PointerType, arg0: inst177, type: type(TypeType)}
-// CHECK:STDOUT:     inst179:         {kind: PatternType, arg0: inst178, type: type(TypeType)}
-// CHECK:STDOUT:     inst180:         {kind: ImportRefUnloaded, arg0: import_ir_inst84, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst181:         {kind: ImplDecl, arg0: impl6, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst182:         {kind: ImportRefLoaded, arg0: import_ir_inst86, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst183:         {kind: ImportRefLoaded, arg0: import_ir_inst87, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst184:         {kind: ImportRefUnloaded, arg0: import_ir_inst88, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst185:         {kind: ImplDecl, arg0: impl7, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst186:         {kind: ImportRefLoaded, arg0: import_ir_inst90, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst187:         {kind: ImportRefLoaded, arg0: import_ir_inst91, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst188:         {kind: ImportRefUnloaded, arg0: import_ir_inst92, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst189:         {kind: ImplDecl, arg0: impl8, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst190:         {kind: BindSymbolicName, arg0: entity_name21, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst191:         {kind: FacetAccessType, arg0: inst190, type: type(TypeType)}
-// CHECK:STDOUT:     inst192:         {kind: TupleType, arg0: inst_block57, type: type(TypeType)}
-// CHECK:STDOUT:     inst193:         {kind: SymbolicBindingPattern, arg0: entity_name22, type: type(inst98)}
-// CHECK:STDOUT:     inst194:         {kind: SymbolicBindingPattern, arg0: entity_name23, type: type(inst98)}
-// CHECK:STDOUT:     inst195:         {kind: ImportRefLoaded, arg0: import_ir_inst96, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst196:         {kind: ImportRefLoaded, arg0: import_ir_inst97, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst197:         {kind: ImportRefLoaded, arg0: import_ir_inst98, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst198:         {kind: ImportRefLoaded, arg0: import_ir_inst99, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst199:         {kind: ImportRefUnloaded, arg0: import_ir_inst100, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst200:         {kind: ImplWitnessTable, arg0: inst_block60, arg1: impl8}
-// CHECK:STDOUT:     inst201:         {kind: ImplWitness, arg0: inst200, arg1: specific10, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst202:         {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst203:         {kind: BindSymbolicName, arg0: entity_name21, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst204:         {kind: FacetAccessType, arg0: inst202, type: type(TypeType)}
-// CHECK:STDOUT:     inst205:         {kind: FacetAccessType, arg0: inst203, type: type(TypeType)}
-// CHECK:STDOUT:     inst206:         {kind: TupleType, arg0: inst_block62, type: type(TypeType)}
-// CHECK:STDOUT:     inst207:         {kind: ImplWitness, arg0: inst200, arg1: specific11, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst208:         {kind: FunctionDecl, arg0: function4, arg1: inst_block_empty, type: type(symbolic_constant114)}
-// CHECK:STDOUT:     inst209:         {kind: FunctionType, arg0: function4, arg1: specific10, type: type(TypeType)}
-// CHECK:STDOUT:     inst210:         {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant114)}
-// CHECK:STDOUT:     inst211:         {kind: PatternType, arg0: inst192, type: type(TypeType)}
-// CHECK:STDOUT:     inst212:         {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant119)}
-// CHECK:STDOUT:     inst213:         {kind: OutParamPattern, arg0: inst212, arg1: call_param1, type: type(symbolic_constant119)}
-// CHECK:STDOUT:     inst214:         {kind: BindingPattern, arg0: entity_name28, type: type(symbolic_constant119)}
-// CHECK:STDOUT:     inst215:         {kind: ValueParamPattern, arg0: inst214, arg1: call_param0, type: type(symbolic_constant119)}
-// CHECK:STDOUT:     inst216:         {kind: ImportRefLoaded, arg0: import_ir_inst113, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst217:         {kind: ImportRefLoaded, arg0: import_ir_inst114, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst218:         {kind: FunctionType, arg0: function4, arg1: specific11, type: type(TypeType)}
-// CHECK:STDOUT:     inst219:         {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant121)}
-// CHECK:STDOUT:     inst220:         {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst221:         {kind: FacetAccessType, arg0: inst220, type: type(TypeType)}
-// CHECK:STDOUT:     inst222:         {kind: BindSymbolicName, arg0: entity_name21, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst223:         {kind: FacetAccessType, arg0: inst222, type: type(TypeType)}
-// CHECK:STDOUT:     inst224:         {kind: TupleType, arg0: inst_block70, type: type(TypeType)}
-// CHECK:STDOUT:     inst225:         {kind: PatternType, arg0: inst224, type: type(TypeType)}
-// CHECK:STDOUT:     inst226:         {kind: RequireCompleteType, arg0: inst192, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst227:         {kind: RequireCompleteType, arg0: inst191, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst228:         {kind: LookupImplWitness, arg0: inst190, arg1: specific_interface0, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst229:         {kind: FunctionTypeWithSelfType, arg0: inst80, arg1: inst190, type: type(TypeType)}
-// CHECK:STDOUT:     inst230:         {kind: ImplWitnessAccess, arg0: inst228, arg1: element0, type: type(symbolic_constant145)}
-// CHECK:STDOUT:     inst231:         {kind: SpecificImplFunction, arg0: inst230, arg1: specific13, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst232:         {kind: RequireCompleteType, arg0: inst224, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst233:         {kind: RequireCompleteType, arg0: inst221, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst234:         {kind: LookupImplWitness, arg0: inst220, arg1: specific_interface0, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst235:         {kind: FunctionTypeWithSelfType, arg0: inst80, arg1: inst220, type: type(TypeType)}
-// CHECK:STDOUT:     inst236:         {kind: ImplWitnessAccess, arg0: inst234, arg1: element0, type: type(symbolic_constant154)}
-// CHECK:STDOUT:     inst237:         {kind: SpecificImplFunction, arg0: inst236, arg1: specific14, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst238:         {kind: RequireCompleteType, arg0: inst223, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst239:         {kind: LookupImplWitness, arg0: inst222, arg1: specific_interface0, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst240:         {kind: FunctionTypeWithSelfType, arg0: inst80, arg1: inst222, type: type(TypeType)}
-// CHECK:STDOUT:     inst241:         {kind: ImplWitnessAccess, arg0: inst239, arg1: element0, type: type(symbolic_constant159)}
-// CHECK:STDOUT:     inst242:         {kind: SpecificImplFunction, arg0: inst241, arg1: specific15, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst243:         {kind: PatternType, arg0: inst191, type: type(TypeType)}
-// CHECK:STDOUT:     inst244:         {kind: ImportRefUnloaded, arg0: import_ir_inst134, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst245:         {kind: ImplDecl, arg0: impl9, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst246:         {kind: BindSymbolicName, arg0: entity_name31, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst247:         {kind: FacetAccessType, arg0: inst246, type: type(TypeType)}
-// CHECK:STDOUT:     inst248:         {kind: TupleType, arg0: inst_block79, type: type(TypeType)}
-// CHECK:STDOUT:     inst249:         {kind: SymbolicBindingPattern, arg0: entity_name32, type: type(inst98)}
-// CHECK:STDOUT:     inst250:         {kind: SymbolicBindingPattern, arg0: entity_name33, type: type(inst98)}
-// CHECK:STDOUT:     inst251:         {kind: SymbolicBindingPattern, arg0: entity_name34, type: type(inst98)}
-// CHECK:STDOUT:     inst252:         {kind: ImportRefLoaded, arg0: import_ir_inst139, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst253:         {kind: ImportRefLoaded, arg0: import_ir_inst140, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst254:         {kind: ImportRefLoaded, arg0: import_ir_inst141, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst255:         {kind: ImportRefLoaded, arg0: import_ir_inst142, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst256:         {kind: ImportRefLoaded, arg0: import_ir_inst143, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst257:         {kind: ImportRefUnloaded, arg0: import_ir_inst144, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst258:         {kind: ImplWitnessTable, arg0: inst_block82, arg1: impl9}
-// CHECK:STDOUT:     inst259:         {kind: ImplWitness, arg0: inst258, arg1: specific16, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst260:         {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst261:         {kind: BindSymbolicName, arg0: entity_name21, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst262:         {kind: BindSymbolicName, arg0: entity_name31, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst263:         {kind: FacetAccessType, arg0: inst260, type: type(TypeType)}
-// CHECK:STDOUT:     inst264:         {kind: FacetAccessType, arg0: inst261, type: type(TypeType)}
-// CHECK:STDOUT:     inst265:         {kind: FacetAccessType, arg0: inst262, type: type(TypeType)}
-// CHECK:STDOUT:     inst266:         {kind: TupleType, arg0: inst_block84, type: type(TypeType)}
-// CHECK:STDOUT:     inst267:         {kind: ImplWitness, arg0: inst258, arg1: specific17, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst268:         {kind: FunctionDecl, arg0: function5, arg1: inst_block_empty, type: type(symbolic_constant186)}
-// CHECK:STDOUT:     inst269:         {kind: FunctionType, arg0: function5, arg1: specific16, type: type(TypeType)}
-// CHECK:STDOUT:     inst270:         {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant186)}
-// CHECK:STDOUT:     inst271:         {kind: PatternType, arg0: inst248, type: type(TypeType)}
-// CHECK:STDOUT:     inst272:         {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant191)}
-// CHECK:STDOUT:     inst273:         {kind: OutParamPattern, arg0: inst272, arg1: call_param1, type: type(symbolic_constant191)}
-// CHECK:STDOUT:     inst274:         {kind: BindingPattern, arg0: entity_name41, type: type(symbolic_constant191)}
-// CHECK:STDOUT:     inst275:         {kind: ValueParamPattern, arg0: inst274, arg1: call_param0, type: type(symbolic_constant191)}
-// CHECK:STDOUT:     inst276:         {kind: ImportRefLoaded, arg0: import_ir_inst159, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst277:         {kind: ImportRefLoaded, arg0: import_ir_inst160, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst278:         {kind: ImportRefLoaded, arg0: import_ir_inst161, arg1: entity_name<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst279:         {kind: FunctionType, arg0: function5, arg1: specific17, type: type(TypeType)}
-// CHECK:STDOUT:     inst280:         {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant193)}
-// CHECK:STDOUT:     inst281:         {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst282:         {kind: FacetAccessType, arg0: inst281, type: type(TypeType)}
-// CHECK:STDOUT:     inst283:         {kind: BindSymbolicName, arg0: entity_name21, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst284:         {kind: FacetAccessType, arg0: inst283, type: type(TypeType)}
-// CHECK:STDOUT:     inst285:         {kind: BindSymbolicName, arg0: entity_name31, arg1: inst<none>, type: type(inst71)}
-// CHECK:STDOUT:     inst286:         {kind: FacetAccessType, arg0: inst285, type: type(TypeType)}
-// CHECK:STDOUT:     inst287:         {kind: TupleType, arg0: inst_block92, type: type(TypeType)}
-// CHECK:STDOUT:     inst288:         {kind: PatternType, arg0: inst287, type: type(TypeType)}
-// CHECK:STDOUT:     inst289:         {kind: RequireCompleteType, arg0: inst248, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst290:         {kind: RequireCompleteType, arg0: inst247, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst291:         {kind: LookupImplWitness, arg0: inst246, arg1: specific_interface0, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst292:         {kind: FunctionTypeWithSelfType, arg0: inst80, arg1: inst246, type: type(TypeType)}
-// CHECK:STDOUT:     inst293:         {kind: ImplWitnessAccess, arg0: inst291, arg1: element0, type: type(symbolic_constant226)}
-// CHECK:STDOUT:     inst294:         {kind: SpecificImplFunction, arg0: inst293, arg1: specific19, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst295:         {kind: RequireCompleteType, arg0: inst287, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst296:         {kind: RequireCompleteType, arg0: inst282, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst297:         {kind: LookupImplWitness, arg0: inst281, arg1: specific_interface0, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst298:         {kind: FunctionTypeWithSelfType, arg0: inst80, arg1: inst281, type: type(TypeType)}
-// CHECK:STDOUT:     inst299:         {kind: ImplWitnessAccess, arg0: inst297, arg1: element0, type: type(symbolic_constant235)}
-// CHECK:STDOUT:     inst300:         {kind: SpecificImplFunction, arg0: inst299, arg1: specific20, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst301:         {kind: RequireCompleteType, arg0: inst284, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst302:         {kind: LookupImplWitness, arg0: inst283, arg1: specific_interface0, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst303:         {kind: FunctionTypeWithSelfType, arg0: inst80, arg1: inst283, type: type(TypeType)}
-// CHECK:STDOUT:     inst304:         {kind: ImplWitnessAccess, arg0: inst302, arg1: element0, type: type(symbolic_constant240)}
-// CHECK:STDOUT:     inst305:         {kind: SpecificImplFunction, arg0: inst304, arg1: specific21, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst306:         {kind: RequireCompleteType, arg0: inst286, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst307:         {kind: LookupImplWitness, arg0: inst285, arg1: specific_interface0, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst308:         {kind: FunctionTypeWithSelfType, arg0: inst80, arg1: inst285, type: type(TypeType)}
-// CHECK:STDOUT:     inst309:         {kind: ImplWitnessAccess, arg0: inst307, arg1: element0, type: type(symbolic_constant245)}
-// CHECK:STDOUT:     inst310:         {kind: SpecificImplFunction, arg0: inst309, arg1: specific22, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst311:         {kind: PatternType, arg0: inst247, type: type(TypeType)}
-// CHECK:STDOUT:     inst312:         {kind: LookupImplWitness, arg0: inst27, arg1: specific_interface0, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst313:         {kind: LookupImplWitness, arg0: inst28, arg1: specific_interface0, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst314:         {kind: FacetValue, arg0: inst27, arg1: inst_block103, type: type(inst71)}
-// CHECK:STDOUT:     inst315:         {kind: FunctionTypeWithSelfType, arg0: inst80, arg1: inst314, type: type(TypeType)}
-// CHECK:STDOUT:     inst316:         {kind: ImplWitnessAccess, arg0: inst312, arg1: element0, type: type(symbolic_constant256)}
-// CHECK:STDOUT:     inst317:         {kind: ImplWitnessAccess, arg0: inst312, arg1: element0, type: type(symbolic_constant253)}
-// CHECK:STDOUT:     inst318:         {kind: FacetValue, arg0: inst28, arg1: inst_block104, type: type(inst71)}
-// CHECK:STDOUT:     inst319:         {kind: FunctionTypeWithSelfType, arg0: inst80, arg1: inst318, type: type(TypeType)}
-// CHECK:STDOUT:     inst320:         {kind: ImplWitnessAccess, arg0: inst313, arg1: element0, type: type(symbolic_constant256)}
-// CHECK:STDOUT:     inst321:         {kind: BoundMethod, arg0: inst63, arg1: inst316, type: type(inst(BoundMethodType))}
-// CHECK:STDOUT:     inst322:         {kind: SpecificImplFunction, arg0: inst316, arg1: specific23, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst323:         {kind: SpecificImplFunction, arg0: inst317, arg1: specific23, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst324:         {kind: SpecificImplFunction, arg0: inst320, arg1: specific24, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst325:         {kind: BoundMethod, arg0: inst63, arg1: inst322, type: type(inst(BoundMethodType))}
-// CHECK:STDOUT:     inst326:         {kind: RequireCompleteType, arg0: inst27, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst327:         {kind: Call, arg0: inst325, arg1: inst_block108, type: type(symbolic_constant4)}
-// CHECK:STDOUT:     inst328:         {kind: InitializeFrom, arg0: inst327, arg1: inst67, type: type(symbolic_constant4)}
-// CHECK:STDOUT:     inst329:         {kind: TupleAccess, arg0: inst52, arg1: element1, type: type(inst36)}
-// CHECK:STDOUT:     inst330:         {kind: TupleInit, arg0: inst_block_empty, arg1: inst329, type: type(inst36)}
-// CHECK:STDOUT:     inst331:         {kind: TupleValue, arg0: inst_block_empty, type: type(inst36)}
-// CHECK:STDOUT:     inst332:         {kind: Converted, arg0: inst64, arg1: inst330, type: type(inst36)}
-// CHECK:STDOUT:     inst333:         {kind: TupleInit, arg0: inst_block109, arg1: inst52, type: type(symbolic_constant8)}
-// CHECK:STDOUT:     inst334:         {kind: Converted, arg0: inst65, arg1: inst333, type: type(symbolic_constant8)}
-// CHECK:STDOUT:     inst335:         {kind: ReturnExpr, arg0: inst334, arg1: inst52}
+// CHECK:STDOUT:     ir0.inst15:      {kind: ImportDecl, arg0: name(Core)}
+// CHECK:STDOUT:     ir0.inst16:      {kind: Namespace, arg0: name_scope1, arg1: ir0.inst15, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     ir0.inst17:      {kind: FacetType, arg0: facet_type0, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst18:      {kind: BindSymbolicName, arg0: entity_name0, arg1: inst<none>, type: type(ir0.inst17)}
+// CHECK:STDOUT:     ir0.inst19:      {kind: BindSymbolicName, arg0: entity_name0, arg1: inst<none>, type: type(ir0.inst17)}
+// CHECK:STDOUT:     ir0.inst20:      {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst21:      {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst22:      {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst23:      {kind: PatternType, arg0: inst(TypeType), type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst24:      {kind: SymbolicBindingPattern, arg0: entity_name1, type: type(ir0.inst23)}
+// CHECK:STDOUT:     ir0.inst25:      {kind: NameRef, arg0: name1, arg1: ir0.inst20, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst26:      {kind: PointerType, arg0: ir0.inst25, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst27:      {kind: PointerType, arg0: ir0.inst21, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst28:      {kind: PointerType, arg0: ir0.inst22, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst29:      {kind: BindName, arg0: entity_name2, arg1: ir0.inst49, type: type(symbolic_constant4)}
+// CHECK:STDOUT:     ir0.inst30:      {kind: PatternType, arg0: ir0.inst27, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst31:      {kind: BindingPattern, arg0: entity_name2, type: type(symbolic_constant6)}
+// CHECK:STDOUT:     ir0.inst32:      {kind: PatternType, arg0: ir0.inst28, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst33:      {kind: ValueParamPattern, arg0: ir0.inst31, arg1: call_param0, type: type(symbolic_constant6)}
+// CHECK:STDOUT:     ir0.inst34:      {kind: NameRef, arg0: name1, arg1: ir0.inst20, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst35:      {kind: PointerType, arg0: ir0.inst34, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst36:      {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst37:      {kind: TupleLiteral, arg0: inst_block_empty, type: type(ir0.inst36)}
+// CHECK:STDOUT:     ir0.inst38:      {kind: TupleType, arg0: inst_block9, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst39:      {kind: TupleLiteral, arg0: inst_block8, type: type(ir0.inst38)}
+// CHECK:STDOUT:     ir0.inst40:      {kind: PointerType, arg0: ir0.inst38, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst41:      {kind: Converted, arg0: ir0.inst37, arg1: ir0.inst36, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst42:      {kind: TupleType, arg0: inst_block11, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst43:      {kind: Converted, arg0: ir0.inst39, arg1: ir0.inst42, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst44:      {kind: TupleType, arg0: inst_block12, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst45:      {kind: PatternType, arg0: ir0.inst42, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst46:      {kind: ReturnSlotPattern, arg0: ir0.inst43, type: type(symbolic_constant10)}
+// CHECK:STDOUT:     ir0.inst47:      {kind: PatternType, arg0: ir0.inst44, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst48:      {kind: OutParamPattern, arg0: ir0.inst46, arg1: call_param1, type: type(symbolic_constant10)}
+// CHECK:STDOUT:     ir0.inst49:      {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(symbolic_constant4)}
+// CHECK:STDOUT:     ir0.inst50:      {kind: SpliceBlock, arg0: inst_block6, arg1: ir0.inst26, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst51:      {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(symbolic_constant8)}
+// CHECK:STDOUT:     ir0.inst52:      {kind: ReturnSlot, arg0: ir0.inst42, arg1: ir0.inst51, type: type(symbolic_constant8)}
+// CHECK:STDOUT:     ir0.inst53:      {kind: FunctionDecl, arg0: function0, arg1: inst_block15, type: type(ir0.inst54)}
+// CHECK:STDOUT:     ir0.inst54:      {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst55:      {kind: StructValue, arg0: inst_block_empty, type: type(ir0.inst54)}
+// CHECK:STDOUT:     ir0.inst56:      {kind: PointerType, arg0: ir0.inst42, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst57:      {kind: RequireCompleteType, arg0: ir0.inst42, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst58:      {kind: RequireCompleteType, arg0: ir0.inst42, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst59:      {kind: RequireCompleteType, arg0: ir0.inst44, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst60:      {kind: RequireCompleteType, arg0: ir0.inst27, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst61:      {kind: RequireCompleteType, arg0: ir0.inst27, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst62:      {kind: RequireCompleteType, arg0: ir0.inst28, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst63:      {kind: NameRef, arg0: name2, arg1: ir0.inst29, type: type(symbolic_constant4)}
+// CHECK:STDOUT:     ir0.inst64:      {kind: TupleLiteral, arg0: inst_block_empty, type: type(ir0.inst36)}
+// CHECK:STDOUT:     ir0.inst65:      {kind: TupleLiteral, arg0: inst_block21, type: type(symbolic_constant8)}
+// CHECK:STDOUT:     ir0.inst66:      {kind: RequireCompleteType, arg0: ir0.inst42, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst67:      {kind: TupleAccess, arg0: ir0.inst52, arg1: element0, type: type(symbolic_constant4)}
+// CHECK:STDOUT:     ir0.inst68:      {kind: RequireCompleteType, arg0: ir0.inst27, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst69:      {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name3, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst70:      {kind: InterfaceDecl, arg0: interface0, arg1: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst71:      {kind: FacetType, arg0: facet_type1, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst72:      {kind: BindSymbolicName, arg0: entity_name4, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst73:      {kind: ImportRefUnloaded, arg0: import_ir_inst2, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst74:      {kind: ImportRefLoaded, arg0: import_ir_inst3, arg1: entity_name<none>, type: type(ir0.inst76)}
+// CHECK:STDOUT:     ir0.inst75:      {kind: ImportRefUnloaded, arg0: import_ir_inst4, arg1: entity_name5}
+// CHECK:STDOUT:     ir0.inst76:      {kind: AssociatedEntityType, arg0: interface0, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst77:      {kind: ImportRefLoaded, arg0: import_ir_inst5, arg1: entity_name<none>, type: type(ir0.inst80)}
+// CHECK:STDOUT:     ir0.inst78:      {kind: AssociatedEntity, arg0: element0, arg1: ir0.inst77, type: type(ir0.inst76)}
+// CHECK:STDOUT:     ir0.inst79:      {kind: FunctionDecl, arg0: function1, arg1: inst_block_empty, type: type(ir0.inst80)}
+// CHECK:STDOUT:     ir0.inst80:      {kind: FunctionType, arg0: function1, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst81:      {kind: StructValue, arg0: inst_block_empty, type: type(ir0.inst80)}
+// CHECK:STDOUT:     ir0.inst82:      {kind: FacetAccessType, arg0: ir0.inst72, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst83:      {kind: PatternType, arg0: ir0.inst82, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst84:      {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant19)}
+// CHECK:STDOUT:     ir0.inst85:      {kind: OutParamPattern, arg0: ir0.inst84, arg1: call_param1, type: type(symbolic_constant19)}
+// CHECK:STDOUT:     ir0.inst86:      {kind: BindingPattern, arg0: entity_name7, type: type(symbolic_constant19)}
+// CHECK:STDOUT:     ir0.inst87:      {kind: ValueParamPattern, arg0: ir0.inst86, arg1: call_param0, type: type(symbolic_constant19)}
+// CHECK:STDOUT:     ir0.inst88:      {kind: ImportRefLoaded, arg0: import_ir_inst11, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst89:      {kind: BindSymbolicName, arg0: entity_name4, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst90:      {kind: FacetAccessType, arg0: ir0.inst89, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst91:      {kind: PatternType, arg0: ir0.inst90, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst92:      {kind: LookupImplWitness, arg0: ir0.inst27, arg1: specific_interface0, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst93:      {kind: ImportRefUnloaded, arg0: import_ir_inst15, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst94:      {kind: ImplDecl, arg0: impl0, arg1: inst_block_empty}
+// CHECK:STDOUT:     ir0.inst95:      {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst96:      {kind: FacetAccessType, arg0: ir0.inst95, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst97:      {kind: ConstType, arg0: ir0.inst96, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst98:      {kind: PatternType, arg0: ir0.inst71, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst99:      {kind: SymbolicBindingPattern, arg0: entity_name10, type: type(ir0.inst98)}
+// CHECK:STDOUT:     ir0.inst100:     {kind: ImportRefLoaded, arg0: import_ir_inst18, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst101:     {kind: ImportRefLoaded, arg0: import_ir_inst19, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst102:     {kind: ImportRefLoaded, arg0: import_ir_inst20, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst103:     {kind: ImportRefUnloaded, arg0: import_ir_inst21, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst104:     {kind: ImplWitnessTable, arg0: inst_block30, arg1: impl0}
+// CHECK:STDOUT:     ir0.inst105:     {kind: ImplWitness, arg0: ir0.inst104, arg1: specific2, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst106:     {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst107:     {kind: FacetAccessType, arg0: ir0.inst106, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst108:     {kind: ConstType, arg0: ir0.inst107, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst109:     {kind: ImplWitness, arg0: ir0.inst104, arg1: specific3, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst110:     {kind: FunctionDecl, arg0: function2, arg1: inst_block_empty, type: type(symbolic_constant38)}
+// CHECK:STDOUT:     ir0.inst111:     {kind: FunctionType, arg0: function2, arg1: specific2, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst112:     {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant38)}
+// CHECK:STDOUT:     ir0.inst113:     {kind: PatternType, arg0: ir0.inst97, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst114:     {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant43)}
+// CHECK:STDOUT:     ir0.inst115:     {kind: OutParamPattern, arg0: ir0.inst114, arg1: call_param1, type: type(symbolic_constant43)}
+// CHECK:STDOUT:     ir0.inst116:     {kind: BindingPattern, arg0: entity_name13, type: type(symbolic_constant43)}
+// CHECK:STDOUT:     ir0.inst117:     {kind: ValueParamPattern, arg0: ir0.inst116, arg1: call_param0, type: type(symbolic_constant43)}
+// CHECK:STDOUT:     ir0.inst118:     {kind: ImportRefLoaded, arg0: import_ir_inst32, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst119:     {kind: FunctionType, arg0: function2, arg1: specific3, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst120:     {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant45)}
+// CHECK:STDOUT:     ir0.inst121:     {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst122:     {kind: FacetAccessType, arg0: ir0.inst121, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst123:     {kind: ConstType, arg0: ir0.inst122, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst124:     {kind: PatternType, arg0: ir0.inst123, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst125:     {kind: RequireCompleteType, arg0: ir0.inst97, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst126:     {kind: RequireCompleteType, arg0: ir0.inst96, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst127:     {kind: LookupImplWitness, arg0: ir0.inst95, arg1: specific_interface0, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst128:     {kind: FunctionTypeWithSelfType, arg0: ir0.inst80, arg1: ir0.inst95, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst129:     {kind: ImplWitnessAccess, arg0: ir0.inst127, arg1: element0, type: type(symbolic_constant60)}
+// CHECK:STDOUT:     ir0.inst130:     {kind: SpecificImplFunction, arg0: ir0.inst129, arg1: specific5, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     ir0.inst131:     {kind: RequireCompleteType, arg0: ir0.inst123, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst132:     {kind: RequireCompleteType, arg0: ir0.inst122, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst133:     {kind: LookupImplWitness, arg0: ir0.inst121, arg1: specific_interface0, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst134:     {kind: FunctionTypeWithSelfType, arg0: ir0.inst80, arg1: ir0.inst121, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst135:     {kind: ImplWitnessAccess, arg0: ir0.inst133, arg1: element0, type: type(symbolic_constant69)}
+// CHECK:STDOUT:     ir0.inst136:     {kind: SpecificImplFunction, arg0: ir0.inst135, arg1: specific6, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     ir0.inst137:     {kind: PatternType, arg0: ir0.inst96, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst138:     {kind: ImportRefUnloaded, arg0: import_ir_inst45, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst139:     {kind: ImplDecl, arg0: impl1, arg1: inst_block_empty}
+// CHECK:STDOUT:     ir0.inst140:     {kind: ImportRefLoaded, arg0: import_ir_inst47, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst141:     {kind: ImportRefLoaded, arg0: import_ir_inst48, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst142:     {kind: ImportRefUnloaded, arg0: import_ir_inst49, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst143:     {kind: ImplDecl, arg0: impl2, arg1: inst_block_empty}
+// CHECK:STDOUT:     ir0.inst144:     {kind: ImportRefLoaded, arg0: import_ir_inst51, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst145:     {kind: ImportRefLoaded, arg0: import_ir_inst52, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst146:     {kind: ImportRefUnloaded, arg0: import_ir_inst53, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst147:     {kind: ImplDecl, arg0: impl3, arg1: inst_block_empty}
+// CHECK:STDOUT:     ir0.inst148:     {kind: ImportRefLoaded, arg0: import_ir_inst55, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst149:     {kind: ImportRefLoaded, arg0: import_ir_inst56, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst150:     {kind: ImportRefUnloaded, arg0: import_ir_inst57, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst151:     {kind: ImplDecl, arg0: impl4, arg1: inst_block_empty}
+// CHECK:STDOUT:     ir0.inst152:     {kind: ImportRefLoaded, arg0: import_ir_inst59, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst153:     {kind: ImportRefLoaded, arg0: import_ir_inst60, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst154:     {kind: ImportRefLoaded, arg0: import_ir_inst61, arg1: entity_name<none>, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst155:     {kind: ImplDecl, arg0: impl5, arg1: inst_block_empty}
+// CHECK:STDOUT:     ir0.inst156:     {kind: SymbolicBindingPattern, arg0: entity_name16, type: type(ir0.inst23)}
+// CHECK:STDOUT:     ir0.inst157:     {kind: ImportRefLoaded, arg0: import_ir_inst64, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst158:     {kind: ImportRefLoaded, arg0: import_ir_inst65, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst159:     {kind: ImportRefLoaded, arg0: import_ir_inst66, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst160:     {kind: ImportRefUnloaded, arg0: import_ir_inst67, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst161:     {kind: ImplWitnessTable, arg0: inst_block47, arg1: impl5}
+// CHECK:STDOUT:     ir0.inst162:     {kind: ImplWitness, arg0: ir0.inst161, arg1: specific7, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst163:     {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst164:     {kind: PointerType, arg0: ir0.inst163, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst165:     {kind: ImplWitness, arg0: ir0.inst161, arg1: specific8, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst166:     {kind: FunctionDecl, arg0: function3, arg1: inst_block_empty, type: type(symbolic_constant81)}
+// CHECK:STDOUT:     ir0.inst167:     {kind: FunctionType, arg0: function3, arg1: specific7, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst168:     {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant81)}
+// CHECK:STDOUT:     ir0.inst169:     {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant85)}
+// CHECK:STDOUT:     ir0.inst170:     {kind: OutParamPattern, arg0: ir0.inst169, arg1: call_param1, type: type(symbolic_constant85)}
+// CHECK:STDOUT:     ir0.inst171:     {kind: BindingPattern, arg0: entity_name19, type: type(symbolic_constant85)}
+// CHECK:STDOUT:     ir0.inst172:     {kind: ValueParamPattern, arg0: ir0.inst171, arg1: call_param0, type: type(symbolic_constant85)}
+// CHECK:STDOUT:     ir0.inst173:     {kind: ImportRefLoaded, arg0: import_ir_inst77, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst174:     {kind: FunctionType, arg0: function3, arg1: specific8, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst175:     {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant88)}
+// CHECK:STDOUT:     ir0.inst176:     {kind: RequireCompleteType, arg0: ir0.inst164, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst177:     {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst178:     {kind: PointerType, arg0: ir0.inst177, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst179:     {kind: PatternType, arg0: ir0.inst178, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst180:     {kind: ImportRefUnloaded, arg0: import_ir_inst84, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst181:     {kind: ImplDecl, arg0: impl6, arg1: inst_block_empty}
+// CHECK:STDOUT:     ir0.inst182:     {kind: ImportRefLoaded, arg0: import_ir_inst86, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst183:     {kind: ImportRefLoaded, arg0: import_ir_inst87, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst184:     {kind: ImportRefUnloaded, arg0: import_ir_inst88, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst185:     {kind: ImplDecl, arg0: impl7, arg1: inst_block_empty}
+// CHECK:STDOUT:     ir0.inst186:     {kind: ImportRefLoaded, arg0: import_ir_inst90, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst187:     {kind: ImportRefLoaded, arg0: import_ir_inst91, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst188:     {kind: ImportRefUnloaded, arg0: import_ir_inst92, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst189:     {kind: ImplDecl, arg0: impl8, arg1: inst_block_empty}
+// CHECK:STDOUT:     ir0.inst190:     {kind: BindSymbolicName, arg0: entity_name21, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst191:     {kind: FacetAccessType, arg0: ir0.inst190, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst192:     {kind: TupleType, arg0: inst_block57, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst193:     {kind: SymbolicBindingPattern, arg0: entity_name22, type: type(ir0.inst98)}
+// CHECK:STDOUT:     ir0.inst194:     {kind: SymbolicBindingPattern, arg0: entity_name23, type: type(ir0.inst98)}
+// CHECK:STDOUT:     ir0.inst195:     {kind: ImportRefLoaded, arg0: import_ir_inst96, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst196:     {kind: ImportRefLoaded, arg0: import_ir_inst97, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst197:     {kind: ImportRefLoaded, arg0: import_ir_inst98, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst198:     {kind: ImportRefLoaded, arg0: import_ir_inst99, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst199:     {kind: ImportRefUnloaded, arg0: import_ir_inst100, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst200:     {kind: ImplWitnessTable, arg0: inst_block60, arg1: impl8}
+// CHECK:STDOUT:     ir0.inst201:     {kind: ImplWitness, arg0: ir0.inst200, arg1: specific10, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst202:     {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst203:     {kind: BindSymbolicName, arg0: entity_name21, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst204:     {kind: FacetAccessType, arg0: ir0.inst202, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst205:     {kind: FacetAccessType, arg0: ir0.inst203, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst206:     {kind: TupleType, arg0: inst_block62, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst207:     {kind: ImplWitness, arg0: ir0.inst200, arg1: specific11, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst208:     {kind: FunctionDecl, arg0: function4, arg1: inst_block_empty, type: type(symbolic_constant114)}
+// CHECK:STDOUT:     ir0.inst209:     {kind: FunctionType, arg0: function4, arg1: specific10, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst210:     {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant114)}
+// CHECK:STDOUT:     ir0.inst211:     {kind: PatternType, arg0: ir0.inst192, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst212:     {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant119)}
+// CHECK:STDOUT:     ir0.inst213:     {kind: OutParamPattern, arg0: ir0.inst212, arg1: call_param1, type: type(symbolic_constant119)}
+// CHECK:STDOUT:     ir0.inst214:     {kind: BindingPattern, arg0: entity_name28, type: type(symbolic_constant119)}
+// CHECK:STDOUT:     ir0.inst215:     {kind: ValueParamPattern, arg0: ir0.inst214, arg1: call_param0, type: type(symbolic_constant119)}
+// CHECK:STDOUT:     ir0.inst216:     {kind: ImportRefLoaded, arg0: import_ir_inst113, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst217:     {kind: ImportRefLoaded, arg0: import_ir_inst114, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst218:     {kind: FunctionType, arg0: function4, arg1: specific11, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst219:     {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant121)}
+// CHECK:STDOUT:     ir0.inst220:     {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst221:     {kind: FacetAccessType, arg0: ir0.inst220, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst222:     {kind: BindSymbolicName, arg0: entity_name21, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst223:     {kind: FacetAccessType, arg0: ir0.inst222, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst224:     {kind: TupleType, arg0: inst_block70, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst225:     {kind: PatternType, arg0: ir0.inst224, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst226:     {kind: RequireCompleteType, arg0: ir0.inst192, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst227:     {kind: RequireCompleteType, arg0: ir0.inst191, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst228:     {kind: LookupImplWitness, arg0: ir0.inst190, arg1: specific_interface0, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst229:     {kind: FunctionTypeWithSelfType, arg0: ir0.inst80, arg1: ir0.inst190, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst230:     {kind: ImplWitnessAccess, arg0: ir0.inst228, arg1: element0, type: type(symbolic_constant145)}
+// CHECK:STDOUT:     ir0.inst231:     {kind: SpecificImplFunction, arg0: ir0.inst230, arg1: specific13, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     ir0.inst232:     {kind: RequireCompleteType, arg0: ir0.inst224, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst233:     {kind: RequireCompleteType, arg0: ir0.inst221, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst234:     {kind: LookupImplWitness, arg0: ir0.inst220, arg1: specific_interface0, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst235:     {kind: FunctionTypeWithSelfType, arg0: ir0.inst80, arg1: ir0.inst220, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst236:     {kind: ImplWitnessAccess, arg0: ir0.inst234, arg1: element0, type: type(symbolic_constant154)}
+// CHECK:STDOUT:     ir0.inst237:     {kind: SpecificImplFunction, arg0: ir0.inst236, arg1: specific14, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     ir0.inst238:     {kind: RequireCompleteType, arg0: ir0.inst223, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst239:     {kind: LookupImplWitness, arg0: ir0.inst222, arg1: specific_interface0, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst240:     {kind: FunctionTypeWithSelfType, arg0: ir0.inst80, arg1: ir0.inst222, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst241:     {kind: ImplWitnessAccess, arg0: ir0.inst239, arg1: element0, type: type(symbolic_constant159)}
+// CHECK:STDOUT:     ir0.inst242:     {kind: SpecificImplFunction, arg0: ir0.inst241, arg1: specific15, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     ir0.inst243:     {kind: PatternType, arg0: ir0.inst191, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst244:     {kind: ImportRefUnloaded, arg0: import_ir_inst134, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst245:     {kind: ImplDecl, arg0: impl9, arg1: inst_block_empty}
+// CHECK:STDOUT:     ir0.inst246:     {kind: BindSymbolicName, arg0: entity_name31, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst247:     {kind: FacetAccessType, arg0: ir0.inst246, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst248:     {kind: TupleType, arg0: inst_block79, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst249:     {kind: SymbolicBindingPattern, arg0: entity_name32, type: type(ir0.inst98)}
+// CHECK:STDOUT:     ir0.inst250:     {kind: SymbolicBindingPattern, arg0: entity_name33, type: type(ir0.inst98)}
+// CHECK:STDOUT:     ir0.inst251:     {kind: SymbolicBindingPattern, arg0: entity_name34, type: type(ir0.inst98)}
+// CHECK:STDOUT:     ir0.inst252:     {kind: ImportRefLoaded, arg0: import_ir_inst139, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst253:     {kind: ImportRefLoaded, arg0: import_ir_inst140, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst254:     {kind: ImportRefLoaded, arg0: import_ir_inst141, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst255:     {kind: ImportRefLoaded, arg0: import_ir_inst142, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst256:     {kind: ImportRefLoaded, arg0: import_ir_inst143, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst257:     {kind: ImportRefUnloaded, arg0: import_ir_inst144, arg1: entity_name<none>}
+// CHECK:STDOUT:     ir0.inst258:     {kind: ImplWitnessTable, arg0: inst_block82, arg1: impl9}
+// CHECK:STDOUT:     ir0.inst259:     {kind: ImplWitness, arg0: ir0.inst258, arg1: specific16, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst260:     {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst261:     {kind: BindSymbolicName, arg0: entity_name21, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst262:     {kind: BindSymbolicName, arg0: entity_name31, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst263:     {kind: FacetAccessType, arg0: ir0.inst260, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst264:     {kind: FacetAccessType, arg0: ir0.inst261, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst265:     {kind: FacetAccessType, arg0: ir0.inst262, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst266:     {kind: TupleType, arg0: inst_block84, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst267:     {kind: ImplWitness, arg0: ir0.inst258, arg1: specific17, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst268:     {kind: FunctionDecl, arg0: function5, arg1: inst_block_empty, type: type(symbolic_constant186)}
+// CHECK:STDOUT:     ir0.inst269:     {kind: FunctionType, arg0: function5, arg1: specific16, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst270:     {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant186)}
+// CHECK:STDOUT:     ir0.inst271:     {kind: PatternType, arg0: ir0.inst248, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst272:     {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant191)}
+// CHECK:STDOUT:     ir0.inst273:     {kind: OutParamPattern, arg0: ir0.inst272, arg1: call_param1, type: type(symbolic_constant191)}
+// CHECK:STDOUT:     ir0.inst274:     {kind: BindingPattern, arg0: entity_name41, type: type(symbolic_constant191)}
+// CHECK:STDOUT:     ir0.inst275:     {kind: ValueParamPattern, arg0: ir0.inst274, arg1: call_param0, type: type(symbolic_constant191)}
+// CHECK:STDOUT:     ir0.inst276:     {kind: ImportRefLoaded, arg0: import_ir_inst159, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst277:     {kind: ImportRefLoaded, arg0: import_ir_inst160, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst278:     {kind: ImportRefLoaded, arg0: import_ir_inst161, arg1: entity_name<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst279:     {kind: FunctionType, arg0: function5, arg1: specific17, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst280:     {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant193)}
+// CHECK:STDOUT:     ir0.inst281:     {kind: BindSymbolicName, arg0: entity_name1, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst282:     {kind: FacetAccessType, arg0: ir0.inst281, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst283:     {kind: BindSymbolicName, arg0: entity_name21, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst284:     {kind: FacetAccessType, arg0: ir0.inst283, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst285:     {kind: BindSymbolicName, arg0: entity_name31, arg1: inst<none>, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst286:     {kind: FacetAccessType, arg0: ir0.inst285, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst287:     {kind: TupleType, arg0: inst_block92, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst288:     {kind: PatternType, arg0: ir0.inst287, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst289:     {kind: RequireCompleteType, arg0: ir0.inst248, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst290:     {kind: RequireCompleteType, arg0: ir0.inst247, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst291:     {kind: LookupImplWitness, arg0: ir0.inst246, arg1: specific_interface0, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst292:     {kind: FunctionTypeWithSelfType, arg0: ir0.inst80, arg1: ir0.inst246, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst293:     {kind: ImplWitnessAccess, arg0: ir0.inst291, arg1: element0, type: type(symbolic_constant226)}
+// CHECK:STDOUT:     ir0.inst294:     {kind: SpecificImplFunction, arg0: ir0.inst293, arg1: specific19, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     ir0.inst295:     {kind: RequireCompleteType, arg0: ir0.inst287, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst296:     {kind: RequireCompleteType, arg0: ir0.inst282, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst297:     {kind: LookupImplWitness, arg0: ir0.inst281, arg1: specific_interface0, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst298:     {kind: FunctionTypeWithSelfType, arg0: ir0.inst80, arg1: ir0.inst281, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst299:     {kind: ImplWitnessAccess, arg0: ir0.inst297, arg1: element0, type: type(symbolic_constant235)}
+// CHECK:STDOUT:     ir0.inst300:     {kind: SpecificImplFunction, arg0: ir0.inst299, arg1: specific20, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     ir0.inst301:     {kind: RequireCompleteType, arg0: ir0.inst284, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst302:     {kind: LookupImplWitness, arg0: ir0.inst283, arg1: specific_interface0, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst303:     {kind: FunctionTypeWithSelfType, arg0: ir0.inst80, arg1: ir0.inst283, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst304:     {kind: ImplWitnessAccess, arg0: ir0.inst302, arg1: element0, type: type(symbolic_constant240)}
+// CHECK:STDOUT:     ir0.inst305:     {kind: SpecificImplFunction, arg0: ir0.inst304, arg1: specific21, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     ir0.inst306:     {kind: RequireCompleteType, arg0: ir0.inst286, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst307:     {kind: LookupImplWitness, arg0: ir0.inst285, arg1: specific_interface0, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst308:     {kind: FunctionTypeWithSelfType, arg0: ir0.inst80, arg1: ir0.inst285, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst309:     {kind: ImplWitnessAccess, arg0: ir0.inst307, arg1: element0, type: type(symbolic_constant245)}
+// CHECK:STDOUT:     ir0.inst310:     {kind: SpecificImplFunction, arg0: ir0.inst309, arg1: specific22, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     ir0.inst311:     {kind: PatternType, arg0: ir0.inst247, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst312:     {kind: LookupImplWitness, arg0: ir0.inst27, arg1: specific_interface0, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst313:     {kind: LookupImplWitness, arg0: ir0.inst28, arg1: specific_interface0, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst314:     {kind: FacetValue, arg0: ir0.inst27, arg1: inst_block103, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst315:     {kind: FunctionTypeWithSelfType, arg0: ir0.inst80, arg1: ir0.inst314, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst316:     {kind: ImplWitnessAccess, arg0: ir0.inst312, arg1: element0, type: type(symbolic_constant256)}
+// CHECK:STDOUT:     ir0.inst317:     {kind: ImplWitnessAccess, arg0: ir0.inst312, arg1: element0, type: type(symbolic_constant253)}
+// CHECK:STDOUT:     ir0.inst318:     {kind: FacetValue, arg0: ir0.inst28, arg1: inst_block104, type: type(ir0.inst71)}
+// CHECK:STDOUT:     ir0.inst319:     {kind: FunctionTypeWithSelfType, arg0: ir0.inst80, arg1: ir0.inst318, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst320:     {kind: ImplWitnessAccess, arg0: ir0.inst313, arg1: element0, type: type(symbolic_constant256)}
+// CHECK:STDOUT:     ir0.inst321:     {kind: BoundMethod, arg0: ir0.inst63, arg1: ir0.inst316, type: type(inst(BoundMethodType))}
+// CHECK:STDOUT:     ir0.inst322:     {kind: SpecificImplFunction, arg0: ir0.inst316, arg1: specific23, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     ir0.inst323:     {kind: SpecificImplFunction, arg0: ir0.inst317, arg1: specific23, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     ir0.inst324:     {kind: SpecificImplFunction, arg0: ir0.inst320, arg1: specific24, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     ir0.inst325:     {kind: BoundMethod, arg0: ir0.inst63, arg1: ir0.inst322, type: type(inst(BoundMethodType))}
+// CHECK:STDOUT:     ir0.inst326:     {kind: RequireCompleteType, arg0: ir0.inst27, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     ir0.inst327:     {kind: Call, arg0: ir0.inst325, arg1: inst_block108, type: type(symbolic_constant4)}
+// CHECK:STDOUT:     ir0.inst328:     {kind: InitializeFrom, arg0: ir0.inst327, arg1: ir0.inst67, type: type(symbolic_constant4)}
+// CHECK:STDOUT:     ir0.inst329:     {kind: TupleAccess, arg0: ir0.inst52, arg1: element1, type: type(ir0.inst36)}
+// CHECK:STDOUT:     ir0.inst330:     {kind: TupleInit, arg0: inst_block_empty, arg1: ir0.inst329, type: type(ir0.inst36)}
+// CHECK:STDOUT:     ir0.inst331:     {kind: TupleValue, arg0: inst_block_empty, type: type(ir0.inst36)}
+// CHECK:STDOUT:     ir0.inst332:     {kind: Converted, arg0: ir0.inst64, arg1: ir0.inst330, type: type(ir0.inst36)}
+// CHECK:STDOUT:     ir0.inst333:     {kind: TupleInit, arg0: inst_block109, arg1: ir0.inst52, type: type(symbolic_constant8)}
+// CHECK:STDOUT:     ir0.inst334:     {kind: Converted, arg0: ir0.inst65, arg1: ir0.inst333, type: type(symbolic_constant8)}
+// CHECK:STDOUT:     ir0.inst335:     {kind: ReturnExpr, arg0: ir0.inst334, arg1: ir0.inst52}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
 // CHECK:STDOUT:       inst14:          concrete_constant(inst14)
-// CHECK:STDOUT:       inst16:          concrete_constant(inst16)
-// CHECK:STDOUT:       inst17:          concrete_constant(inst17)
-// CHECK:STDOUT:       inst18:          symbolic_constant0
-// CHECK:STDOUT:       inst19:          symbolic_constant0
-// CHECK:STDOUT:       inst20:          symbolic_constant2
-// CHECK:STDOUT:       inst21:          symbolic_constant1
-// CHECK:STDOUT:       inst22:          symbolic_constant2
-// CHECK:STDOUT:       inst23:          concrete_constant(inst23)
-// CHECK:STDOUT:       inst24:          concrete_constant(inst24)
-// CHECK:STDOUT:       inst25:          symbolic_constant2
-// CHECK:STDOUT:       inst26:          symbolic_constant4
-// CHECK:STDOUT:       inst27:          symbolic_constant3
-// CHECK:STDOUT:       inst28:          symbolic_constant4
-// CHECK:STDOUT:       inst30:          symbolic_constant5
-// CHECK:STDOUT:       inst31:          concrete_constant(inst31)
-// CHECK:STDOUT:       inst32:          symbolic_constant6
-// CHECK:STDOUT:       inst33:          concrete_constant(inst33)
-// CHECK:STDOUT:       inst34:          symbolic_constant2
-// CHECK:STDOUT:       inst35:          symbolic_constant4
-// CHECK:STDOUT:       inst36:          concrete_constant(inst36)
-// CHECK:STDOUT:       inst38:          concrete_constant(inst38)
-// CHECK:STDOUT:       inst40:          concrete_constant(inst40)
-// CHECK:STDOUT:       inst41:          concrete_constant(inst36)
-// CHECK:STDOUT:       inst42:          symbolic_constant7
-// CHECK:STDOUT:       inst43:          symbolic_constant8
-// CHECK:STDOUT:       inst44:          symbolic_constant8
-// CHECK:STDOUT:       inst45:          symbolic_constant9
-// CHECK:STDOUT:       inst46:          concrete_constant(inst46)
-// CHECK:STDOUT:       inst47:          symbolic_constant10
-// CHECK:STDOUT:       inst48:          concrete_constant(inst48)
-// CHECK:STDOUT:       inst50:          symbolic_constant4
-// CHECK:STDOUT:       inst53:          concrete_constant(inst55)
-// CHECK:STDOUT:       inst54:          concrete_constant(inst54)
-// CHECK:STDOUT:       inst55:          concrete_constant(inst55)
-// CHECK:STDOUT:       inst56:          symbolic_constant11
-// CHECK:STDOUT:       inst57:          symbolic_constant13
-// CHECK:STDOUT:       inst58:          symbolic_constant12
-// CHECK:STDOUT:       inst59:          symbolic_constant13
-// CHECK:STDOUT:       inst60:          symbolic_constant15
-// CHECK:STDOUT:       inst61:          symbolic_constant14
-// CHECK:STDOUT:       inst62:          symbolic_constant15
-// CHECK:STDOUT:       inst66:          symbolic_constant13
-// CHECK:STDOUT:       inst68:          symbolic_constant15
-// CHECK:STDOUT:       inst69:          concrete_constant(inst71)
-// CHECK:STDOUT:       inst70:          concrete_constant(inst71)
-// CHECK:STDOUT:       inst71:          concrete_constant(inst71)
-// CHECK:STDOUT:       inst72:          symbolic_constant16
-// CHECK:STDOUT:       inst73:          constant<none>
-// CHECK:STDOUT:       inst74:          concrete_constant(inst78)
-// CHECK:STDOUT:       inst75:          constant<none>
-// CHECK:STDOUT:       inst76:          concrete_constant(inst76)
-// CHECK:STDOUT:       inst77:          concrete_constant(inst81)
-// CHECK:STDOUT:       inst78:          concrete_constant(inst78)
-// CHECK:STDOUT:       inst79:          concrete_constant(inst81)
-// CHECK:STDOUT:       inst80:          concrete_constant(inst80)
-// CHECK:STDOUT:       inst81:          concrete_constant(inst81)
-// CHECK:STDOUT:       inst82:          symbolic_constant17
-// CHECK:STDOUT:       inst83:          symbolic_constant18
-// CHECK:STDOUT:       inst84:          concrete_constant(inst84)
-// CHECK:STDOUT:       inst85:          concrete_constant(inst85)
-// CHECK:STDOUT:       inst86:          concrete_constant(inst86)
-// CHECK:STDOUT:       inst87:          concrete_constant(inst87)
-// CHECK:STDOUT:       inst88:          symbolic_constant16
-// CHECK:STDOUT:       inst89:          symbolic_constant22
-// CHECK:STDOUT:       inst90:          symbolic_constant23
-// CHECK:STDOUT:       inst91:          symbolic_constant24
-// CHECK:STDOUT:       inst92:          symbolic_constant251
-// CHECK:STDOUT:       inst93:          constant<none>
-// CHECK:STDOUT:       inst94:          concrete_constant(inst94)
-// CHECK:STDOUT:       inst95:          symbolic_constant25
-// CHECK:STDOUT:       inst96:          symbolic_constant26
-// CHECK:STDOUT:       inst97:          symbolic_constant27
-// CHECK:STDOUT:       inst98:          concrete_constant(inst98)
-// CHECK:STDOUT:       inst99:          concrete_constant(inst99)
-// CHECK:STDOUT:       inst100:         symbolic_constant29
-// CHECK:STDOUT:       inst101:         symbolic_constant28
-// CHECK:STDOUT:       inst102:         concrete_constant(inst71)
-// CHECK:STDOUT:       inst103:         constant<none>
-// CHECK:STDOUT:       inst104:         concrete_constant(inst104)
-// CHECK:STDOUT:       inst105:         symbolic_constant32
-// CHECK:STDOUT:       inst106:         symbolic_constant34
-// CHECK:STDOUT:       inst107:         symbolic_constant35
-// CHECK:STDOUT:       inst108:         symbolic_constant36
-// CHECK:STDOUT:       inst109:         symbolic_constant37
-// CHECK:STDOUT:       inst110:         symbolic_constant40
-// CHECK:STDOUT:       inst111:         symbolic_constant38
-// CHECK:STDOUT:       inst112:         symbolic_constant39
-// CHECK:STDOUT:       inst113:         symbolic_constant42
-// CHECK:STDOUT:       inst114:         concrete_constant(inst114)
-// CHECK:STDOUT:       inst115:         concrete_constant(inst115)
-// CHECK:STDOUT:       inst116:         concrete_constant(inst116)
-// CHECK:STDOUT:       inst117:         concrete_constant(inst117)
-// CHECK:STDOUT:       inst118:         symbolic_constant29
-// CHECK:STDOUT:       inst119:         symbolic_constant45
-// CHECK:STDOUT:       inst120:         symbolic_constant46
-// CHECK:STDOUT:       inst121:         symbolic_constant50
-// CHECK:STDOUT:       inst122:         symbolic_constant51
-// CHECK:STDOUT:       inst123:         symbolic_constant52
-// CHECK:STDOUT:       inst124:         symbolic_constant53
-// CHECK:STDOUT:       inst125:         symbolic_constant54
-// CHECK:STDOUT:       inst126:         symbolic_constant56
-// CHECK:STDOUT:       inst127:         symbolic_constant58
-// CHECK:STDOUT:       inst128:         symbolic_constant60
-// CHECK:STDOUT:       inst129:         symbolic_constant62
-// CHECK:STDOUT:       inst130:         symbolic_constant64
-// CHECK:STDOUT:       inst131:         symbolic_constant66
-// CHECK:STDOUT:       inst132:         symbolic_constant67
-// CHECK:STDOUT:       inst133:         symbolic_constant68
-// CHECK:STDOUT:       inst134:         symbolic_constant69
-// CHECK:STDOUT:       inst135:         symbolic_constant70
-// CHECK:STDOUT:       inst136:         symbolic_constant71
-// CHECK:STDOUT:       inst137:         symbolic_constant72
-// CHECK:STDOUT:       inst138:         constant<none>
-// CHECK:STDOUT:       inst139:         concrete_constant(inst139)
-// CHECK:STDOUT:       inst140:         concrete_constant(inst(BoolType))
-// CHECK:STDOUT:       inst141:         concrete_constant(inst71)
-// CHECK:STDOUT:       inst142:         constant<none>
-// CHECK:STDOUT:       inst143:         concrete_constant(inst143)
-// CHECK:STDOUT:       inst144:         concrete_constant(inst(CharLiteralType))
-// CHECK:STDOUT:       inst145:         concrete_constant(inst71)
-// CHECK:STDOUT:       inst146:         constant<none>
-// CHECK:STDOUT:       inst147:         concrete_constant(inst147)
-// CHECK:STDOUT:       inst148:         concrete_constant(inst(FloatLiteralType))
-// CHECK:STDOUT:       inst149:         concrete_constant(inst71)
-// CHECK:STDOUT:       inst150:         constant<none>
-// CHECK:STDOUT:       inst151:         concrete_constant(inst151)
-// CHECK:STDOUT:       inst152:         concrete_constant(inst(IntLiteralType))
-// CHECK:STDOUT:       inst153:         concrete_constant(inst71)
-// CHECK:STDOUT:       inst154:         symbolic_constant249
-// CHECK:STDOUT:       inst155:         concrete_constant(inst155)
-// CHECK:STDOUT:       inst156:         concrete_constant(inst156)
-// CHECK:STDOUT:       inst157:         symbolic_constant74
-// CHECK:STDOUT:       inst158:         symbolic_constant73
-// CHECK:STDOUT:       inst159:         concrete_constant(inst71)
-// CHECK:STDOUT:       inst160:         constant<none>
-// CHECK:STDOUT:       inst161:         concrete_constant(inst161)
-// CHECK:STDOUT:       inst162:         symbolic_constant76
-// CHECK:STDOUT:       inst163:         symbolic_constant78
-// CHECK:STDOUT:       inst164:         symbolic_constant79
-// CHECK:STDOUT:       inst165:         symbolic_constant80
-// CHECK:STDOUT:       inst166:         symbolic_constant83
-// CHECK:STDOUT:       inst167:         symbolic_constant81
-// CHECK:STDOUT:       inst168:         symbolic_constant82
-// CHECK:STDOUT:       inst169:         concrete_constant(inst169)
-// CHECK:STDOUT:       inst170:         concrete_constant(inst170)
-// CHECK:STDOUT:       inst171:         concrete_constant(inst171)
-// CHECK:STDOUT:       inst172:         concrete_constant(inst172)
-// CHECK:STDOUT:       inst173:         symbolic_constant74
-// CHECK:STDOUT:       inst174:         symbolic_constant88
-// CHECK:STDOUT:       inst175:         symbolic_constant89
-// CHECK:STDOUT:       inst176:         symbolic_constant90
-// CHECK:STDOUT:       inst177:         symbolic_constant93
-// CHECK:STDOUT:       inst178:         symbolic_constant94
-// CHECK:STDOUT:       inst179:         symbolic_constant95
-// CHECK:STDOUT:       inst180:         constant<none>
-// CHECK:STDOUT:       inst181:         concrete_constant(inst181)
-// CHECK:STDOUT:       inst182:         concrete_constant(inst(TypeType))
-// CHECK:STDOUT:       inst183:         concrete_constant(inst71)
-// CHECK:STDOUT:       inst184:         constant<none>
-// CHECK:STDOUT:       inst185:         concrete_constant(inst185)
-// CHECK:STDOUT:       inst186:         concrete_constant(inst36)
-// CHECK:STDOUT:       inst187:         concrete_constant(inst71)
-// CHECK:STDOUT:       inst188:         constant<none>
-// CHECK:STDOUT:       inst189:         concrete_constant(inst189)
-// CHECK:STDOUT:       inst190:         symbolic_constant96
-// CHECK:STDOUT:       inst191:         symbolic_constant97
-// CHECK:STDOUT:       inst192:         symbolic_constant98
-// CHECK:STDOUT:       inst193:         concrete_constant(inst193)
-// CHECK:STDOUT:       inst194:         concrete_constant(inst194)
-// CHECK:STDOUT:       inst195:         symbolic_constant100
-// CHECK:STDOUT:       inst196:         symbolic_constant101
-// CHECK:STDOUT:       inst197:         symbolic_constant99
-// CHECK:STDOUT:       inst198:         concrete_constant(inst71)
-// CHECK:STDOUT:       inst199:         constant<none>
-// CHECK:STDOUT:       inst200:         concrete_constant(inst200)
-// CHECK:STDOUT:       inst201:         symbolic_constant106
-// CHECK:STDOUT:       inst202:         symbolic_constant108
-// CHECK:STDOUT:       inst203:         symbolic_constant109
-// CHECK:STDOUT:       inst204:         symbolic_constant110
-// CHECK:STDOUT:       inst205:         symbolic_constant111
-// CHECK:STDOUT:       inst206:         symbolic_constant112
-// CHECK:STDOUT:       inst207:         symbolic_constant113
-// CHECK:STDOUT:       inst208:         symbolic_constant116
-// CHECK:STDOUT:       inst209:         symbolic_constant114
-// CHECK:STDOUT:       inst210:         symbolic_constant115
-// CHECK:STDOUT:       inst211:         symbolic_constant118
-// CHECK:STDOUT:       inst212:         concrete_constant(inst212)
-// CHECK:STDOUT:       inst213:         concrete_constant(inst213)
-// CHECK:STDOUT:       inst214:         concrete_constant(inst214)
-// CHECK:STDOUT:       inst215:         concrete_constant(inst215)
-// CHECK:STDOUT:       inst216:         symbolic_constant100
-// CHECK:STDOUT:       inst217:         symbolic_constant101
-// CHECK:STDOUT:       inst218:         symbolic_constant121
-// CHECK:STDOUT:       inst219:         symbolic_constant122
-// CHECK:STDOUT:       inst220:         symbolic_constant128
-// CHECK:STDOUT:       inst221:         symbolic_constant129
-// CHECK:STDOUT:       inst222:         symbolic_constant130
-// CHECK:STDOUT:       inst223:         symbolic_constant131
-// CHECK:STDOUT:       inst224:         symbolic_constant132
-// CHECK:STDOUT:       inst225:         symbolic_constant133
-// CHECK:STDOUT:       inst226:         symbolic_constant134
-// CHECK:STDOUT:       inst227:         symbolic_constant141
-// CHECK:STDOUT:       inst228:         symbolic_constant143
-// CHECK:STDOUT:       inst229:         symbolic_constant145
-// CHECK:STDOUT:       inst230:         symbolic_constant147
-// CHECK:STDOUT:       inst231:         symbolic_constant149
-// CHECK:STDOUT:       inst232:         symbolic_constant151
-// CHECK:STDOUT:       inst233:         symbolic_constant152
-// CHECK:STDOUT:       inst234:         symbolic_constant153
-// CHECK:STDOUT:       inst235:         symbolic_constant154
-// CHECK:STDOUT:       inst236:         symbolic_constant155
-// CHECK:STDOUT:       inst237:         symbolic_constant156
-// CHECK:STDOUT:       inst238:         symbolic_constant157
-// CHECK:STDOUT:       inst239:         symbolic_constant158
-// CHECK:STDOUT:       inst240:         symbolic_constant159
-// CHECK:STDOUT:       inst241:         symbolic_constant160
-// CHECK:STDOUT:       inst242:         symbolic_constant161
-// CHECK:STDOUT:       inst243:         symbolic_constant162
-// CHECK:STDOUT:       inst244:         constant<none>
-// CHECK:STDOUT:       inst245:         concrete_constant(inst245)
-// CHECK:STDOUT:       inst246:         symbolic_constant163
-// CHECK:STDOUT:       inst247:         symbolic_constant164
-// CHECK:STDOUT:       inst248:         symbolic_constant165
-// CHECK:STDOUT:       inst249:         concrete_constant(inst249)
-// CHECK:STDOUT:       inst250:         concrete_constant(inst250)
-// CHECK:STDOUT:       inst251:         concrete_constant(inst251)
-// CHECK:STDOUT:       inst252:         symbolic_constant167
-// CHECK:STDOUT:       inst253:         symbolic_constant168
-// CHECK:STDOUT:       inst254:         symbolic_constant169
-// CHECK:STDOUT:       inst255:         symbolic_constant166
-// CHECK:STDOUT:       inst256:         concrete_constant(inst71)
-// CHECK:STDOUT:       inst257:         constant<none>
-// CHECK:STDOUT:       inst258:         concrete_constant(inst258)
-// CHECK:STDOUT:       inst259:         symbolic_constant176
-// CHECK:STDOUT:       inst260:         symbolic_constant178
-// CHECK:STDOUT:       inst261:         symbolic_constant179
-// CHECK:STDOUT:       inst262:         symbolic_constant180
-// CHECK:STDOUT:       inst263:         symbolic_constant181
-// CHECK:STDOUT:       inst264:         symbolic_constant182
-// CHECK:STDOUT:       inst265:         symbolic_constant183
-// CHECK:STDOUT:       inst266:         symbolic_constant184
-// CHECK:STDOUT:       inst267:         symbolic_constant185
-// CHECK:STDOUT:       inst268:         symbolic_constant188
-// CHECK:STDOUT:       inst269:         symbolic_constant186
-// CHECK:STDOUT:       inst270:         symbolic_constant187
-// CHECK:STDOUT:       inst271:         symbolic_constant190
-// CHECK:STDOUT:       inst272:         concrete_constant(inst272)
-// CHECK:STDOUT:       inst273:         concrete_constant(inst273)
-// CHECK:STDOUT:       inst274:         concrete_constant(inst274)
-// CHECK:STDOUT:       inst275:         concrete_constant(inst275)
-// CHECK:STDOUT:       inst276:         symbolic_constant167
-// CHECK:STDOUT:       inst277:         symbolic_constant168
-// CHECK:STDOUT:       inst278:         symbolic_constant169
-// CHECK:STDOUT:       inst279:         symbolic_constant193
-// CHECK:STDOUT:       inst280:         symbolic_constant194
-// CHECK:STDOUT:       inst281:         symbolic_constant202
-// CHECK:STDOUT:       inst282:         symbolic_constant203
-// CHECK:STDOUT:       inst283:         symbolic_constant204
-// CHECK:STDOUT:       inst284:         symbolic_constant205
-// CHECK:STDOUT:       inst285:         symbolic_constant206
-// CHECK:STDOUT:       inst286:         symbolic_constant207
-// CHECK:STDOUT:       inst287:         symbolic_constant208
-// CHECK:STDOUT:       inst288:         symbolic_constant209
-// CHECK:STDOUT:       inst289:         symbolic_constant210
-// CHECK:STDOUT:       inst290:         symbolic_constant222
-// CHECK:STDOUT:       inst291:         symbolic_constant224
-// CHECK:STDOUT:       inst292:         symbolic_constant226
-// CHECK:STDOUT:       inst293:         symbolic_constant228
-// CHECK:STDOUT:       inst294:         symbolic_constant230
-// CHECK:STDOUT:       inst295:         symbolic_constant232
-// CHECK:STDOUT:       inst296:         symbolic_constant233
-// CHECK:STDOUT:       inst297:         symbolic_constant234
-// CHECK:STDOUT:       inst298:         symbolic_constant235
-// CHECK:STDOUT:       inst299:         symbolic_constant236
-// CHECK:STDOUT:       inst300:         symbolic_constant237
-// CHECK:STDOUT:       inst301:         symbolic_constant238
-// CHECK:STDOUT:       inst302:         symbolic_constant239
-// CHECK:STDOUT:       inst303:         symbolic_constant240
-// CHECK:STDOUT:       inst304:         symbolic_constant241
-// CHECK:STDOUT:       inst305:         symbolic_constant242
-// CHECK:STDOUT:       inst306:         symbolic_constant243
-// CHECK:STDOUT:       inst307:         symbolic_constant244
-// CHECK:STDOUT:       inst308:         symbolic_constant245
-// CHECK:STDOUT:       inst309:         symbolic_constant246
-// CHECK:STDOUT:       inst310:         symbolic_constant247
-// CHECK:STDOUT:       inst311:         symbolic_constant248
-// CHECK:STDOUT:       inst312:         symbolic_constant250
-// CHECK:STDOUT:       inst313:         symbolic_constant251
-// CHECK:STDOUT:       inst314:         symbolic_constant252
-// CHECK:STDOUT:       inst315:         symbolic_constant253
-// CHECK:STDOUT:       inst316:         symbolic_constant257
-// CHECK:STDOUT:       inst317:         symbolic_constant254
-// CHECK:STDOUT:       inst318:         symbolic_constant255
-// CHECK:STDOUT:       inst319:         symbolic_constant256
-// CHECK:STDOUT:       inst320:         symbolic_constant257
-// CHECK:STDOUT:       inst322:         symbolic_constant259
-// CHECK:STDOUT:       inst323:         symbolic_constant258
-// CHECK:STDOUT:       inst324:         symbolic_constant259
-// CHECK:STDOUT:       inst326:         symbolic_constant15
-// CHECK:STDOUT:       inst330:         concrete_constant(inst331)
-// CHECK:STDOUT:       inst331:         concrete_constant(inst331)
-// CHECK:STDOUT:       inst332:         concrete_constant(inst331)
+// CHECK:STDOUT:       ir0.inst16:      concrete_constant(ir0.inst16)
+// CHECK:STDOUT:       ir0.inst17:      concrete_constant(ir0.inst17)
+// CHECK:STDOUT:       ir0.inst18:      symbolic_constant0
+// CHECK:STDOUT:       ir0.inst19:      symbolic_constant0
+// CHECK:STDOUT:       ir0.inst20:      symbolic_constant2
+// CHECK:STDOUT:       ir0.inst21:      symbolic_constant1
+// CHECK:STDOUT:       ir0.inst22:      symbolic_constant2
+// CHECK:STDOUT:       ir0.inst23:      concrete_constant(ir0.inst23)
+// CHECK:STDOUT:       ir0.inst24:      concrete_constant(ir0.inst24)
+// CHECK:STDOUT:       ir0.inst25:      symbolic_constant2
+// CHECK:STDOUT:       ir0.inst26:      symbolic_constant4
+// CHECK:STDOUT:       ir0.inst27:      symbolic_constant3
+// CHECK:STDOUT:       ir0.inst28:      symbolic_constant4
+// CHECK:STDOUT:       ir0.inst30:      symbolic_constant5
+// CHECK:STDOUT:       ir0.inst31:      concrete_constant(ir0.inst31)
+// CHECK:STDOUT:       ir0.inst32:      symbolic_constant6
+// CHECK:STDOUT:       ir0.inst33:      concrete_constant(ir0.inst33)
+// CHECK:STDOUT:       ir0.inst34:      symbolic_constant2
+// CHECK:STDOUT:       ir0.inst35:      symbolic_constant4
+// CHECK:STDOUT:       ir0.inst36:      concrete_constant(ir0.inst36)
+// CHECK:STDOUT:       ir0.inst38:      concrete_constant(ir0.inst38)
+// CHECK:STDOUT:       ir0.inst40:      concrete_constant(ir0.inst40)
+// CHECK:STDOUT:       ir0.inst41:      concrete_constant(ir0.inst36)
+// CHECK:STDOUT:       ir0.inst42:      symbolic_constant7
+// CHECK:STDOUT:       ir0.inst43:      symbolic_constant8
+// CHECK:STDOUT:       ir0.inst44:      symbolic_constant8
+// CHECK:STDOUT:       ir0.inst45:      symbolic_constant9
+// CHECK:STDOUT:       ir0.inst46:      concrete_constant(ir0.inst46)
+// CHECK:STDOUT:       ir0.inst47:      symbolic_constant10
+// CHECK:STDOUT:       ir0.inst48:      concrete_constant(ir0.inst48)
+// CHECK:STDOUT:       ir0.inst50:      symbolic_constant4
+// CHECK:STDOUT:       ir0.inst53:      concrete_constant(ir0.inst55)
+// CHECK:STDOUT:       ir0.inst54:      concrete_constant(ir0.inst54)
+// CHECK:STDOUT:       ir0.inst55:      concrete_constant(ir0.inst55)
+// CHECK:STDOUT:       ir0.inst56:      symbolic_constant11
+// CHECK:STDOUT:       ir0.inst57:      symbolic_constant13
+// CHECK:STDOUT:       ir0.inst58:      symbolic_constant12
+// CHECK:STDOUT:       ir0.inst59:      symbolic_constant13
+// CHECK:STDOUT:       ir0.inst60:      symbolic_constant15
+// CHECK:STDOUT:       ir0.inst61:      symbolic_constant14
+// CHECK:STDOUT:       ir0.inst62:      symbolic_constant15
+// CHECK:STDOUT:       ir0.inst66:      symbolic_constant13
+// CHECK:STDOUT:       ir0.inst68:      symbolic_constant15
+// CHECK:STDOUT:       ir0.inst69:      concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst70:      concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst71:      concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst72:      symbolic_constant16
+// CHECK:STDOUT:       ir0.inst73:      constant<none>
+// CHECK:STDOUT:       ir0.inst74:      concrete_constant(ir0.inst78)
+// CHECK:STDOUT:       ir0.inst75:      constant<none>
+// CHECK:STDOUT:       ir0.inst76:      concrete_constant(ir0.inst76)
+// CHECK:STDOUT:       ir0.inst77:      concrete_constant(ir0.inst81)
+// CHECK:STDOUT:       ir0.inst78:      concrete_constant(ir0.inst78)
+// CHECK:STDOUT:       ir0.inst79:      concrete_constant(ir0.inst81)
+// CHECK:STDOUT:       ir0.inst80:      concrete_constant(ir0.inst80)
+// CHECK:STDOUT:       ir0.inst81:      concrete_constant(ir0.inst81)
+// CHECK:STDOUT:       ir0.inst82:      symbolic_constant17
+// CHECK:STDOUT:       ir0.inst83:      symbolic_constant18
+// CHECK:STDOUT:       ir0.inst84:      concrete_constant(ir0.inst84)
+// CHECK:STDOUT:       ir0.inst85:      concrete_constant(ir0.inst85)
+// CHECK:STDOUT:       ir0.inst86:      concrete_constant(ir0.inst86)
+// CHECK:STDOUT:       ir0.inst87:      concrete_constant(ir0.inst87)
+// CHECK:STDOUT:       ir0.inst88:      symbolic_constant16
+// CHECK:STDOUT:       ir0.inst89:      symbolic_constant22
+// CHECK:STDOUT:       ir0.inst90:      symbolic_constant23
+// CHECK:STDOUT:       ir0.inst91:      symbolic_constant24
+// CHECK:STDOUT:       ir0.inst92:      symbolic_constant251
+// CHECK:STDOUT:       ir0.inst93:      constant<none>
+// CHECK:STDOUT:       ir0.inst94:      concrete_constant(ir0.inst94)
+// CHECK:STDOUT:       ir0.inst95:      symbolic_constant25
+// CHECK:STDOUT:       ir0.inst96:      symbolic_constant26
+// CHECK:STDOUT:       ir0.inst97:      symbolic_constant27
+// CHECK:STDOUT:       ir0.inst98:      concrete_constant(ir0.inst98)
+// CHECK:STDOUT:       ir0.inst99:      concrete_constant(ir0.inst99)
+// CHECK:STDOUT:       ir0.inst100:     symbolic_constant29
+// CHECK:STDOUT:       ir0.inst101:     symbolic_constant28
+// CHECK:STDOUT:       ir0.inst102:     concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst103:     constant<none>
+// CHECK:STDOUT:       ir0.inst104:     concrete_constant(ir0.inst104)
+// CHECK:STDOUT:       ir0.inst105:     symbolic_constant32
+// CHECK:STDOUT:       ir0.inst106:     symbolic_constant34
+// CHECK:STDOUT:       ir0.inst107:     symbolic_constant35
+// CHECK:STDOUT:       ir0.inst108:     symbolic_constant36
+// CHECK:STDOUT:       ir0.inst109:     symbolic_constant37
+// CHECK:STDOUT:       ir0.inst110:     symbolic_constant40
+// CHECK:STDOUT:       ir0.inst111:     symbolic_constant38
+// CHECK:STDOUT:       ir0.inst112:     symbolic_constant39
+// CHECK:STDOUT:       ir0.inst113:     symbolic_constant42
+// CHECK:STDOUT:       ir0.inst114:     concrete_constant(ir0.inst114)
+// CHECK:STDOUT:       ir0.inst115:     concrete_constant(ir0.inst115)
+// CHECK:STDOUT:       ir0.inst116:     concrete_constant(ir0.inst116)
+// CHECK:STDOUT:       ir0.inst117:     concrete_constant(ir0.inst117)
+// CHECK:STDOUT:       ir0.inst118:     symbolic_constant29
+// CHECK:STDOUT:       ir0.inst119:     symbolic_constant45
+// CHECK:STDOUT:       ir0.inst120:     symbolic_constant46
+// CHECK:STDOUT:       ir0.inst121:     symbolic_constant50
+// CHECK:STDOUT:       ir0.inst122:     symbolic_constant51
+// CHECK:STDOUT:       ir0.inst123:     symbolic_constant52
+// CHECK:STDOUT:       ir0.inst124:     symbolic_constant53
+// CHECK:STDOUT:       ir0.inst125:     symbolic_constant54
+// CHECK:STDOUT:       ir0.inst126:     symbolic_constant56
+// CHECK:STDOUT:       ir0.inst127:     symbolic_constant58
+// CHECK:STDOUT:       ir0.inst128:     symbolic_constant60
+// CHECK:STDOUT:       ir0.inst129:     symbolic_constant62
+// CHECK:STDOUT:       ir0.inst130:     symbolic_constant64
+// CHECK:STDOUT:       ir0.inst131:     symbolic_constant66
+// CHECK:STDOUT:       ir0.inst132:     symbolic_constant67
+// CHECK:STDOUT:       ir0.inst133:     symbolic_constant68
+// CHECK:STDOUT:       ir0.inst134:     symbolic_constant69
+// CHECK:STDOUT:       ir0.inst135:     symbolic_constant70
+// CHECK:STDOUT:       ir0.inst136:     symbolic_constant71
+// CHECK:STDOUT:       ir0.inst137:     symbolic_constant72
+// CHECK:STDOUT:       ir0.inst138:     constant<none>
+// CHECK:STDOUT:       ir0.inst139:     concrete_constant(ir0.inst139)
+// CHECK:STDOUT:       ir0.inst140:     concrete_constant(inst(BoolType))
+// CHECK:STDOUT:       ir0.inst141:     concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst142:     constant<none>
+// CHECK:STDOUT:       ir0.inst143:     concrete_constant(ir0.inst143)
+// CHECK:STDOUT:       ir0.inst144:     concrete_constant(inst(CharLiteralType))
+// CHECK:STDOUT:       ir0.inst145:     concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst146:     constant<none>
+// CHECK:STDOUT:       ir0.inst147:     concrete_constant(ir0.inst147)
+// CHECK:STDOUT:       ir0.inst148:     concrete_constant(inst(FloatLiteralType))
+// CHECK:STDOUT:       ir0.inst149:     concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst150:     constant<none>
+// CHECK:STDOUT:       ir0.inst151:     concrete_constant(ir0.inst151)
+// CHECK:STDOUT:       ir0.inst152:     concrete_constant(inst(IntLiteralType))
+// CHECK:STDOUT:       ir0.inst153:     concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst154:     symbolic_constant249
+// CHECK:STDOUT:       ir0.inst155:     concrete_constant(ir0.inst155)
+// CHECK:STDOUT:       ir0.inst156:     concrete_constant(ir0.inst156)
+// CHECK:STDOUT:       ir0.inst157:     symbolic_constant74
+// CHECK:STDOUT:       ir0.inst158:     symbolic_constant73
+// CHECK:STDOUT:       ir0.inst159:     concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst160:     constant<none>
+// CHECK:STDOUT:       ir0.inst161:     concrete_constant(ir0.inst161)
+// CHECK:STDOUT:       ir0.inst162:     symbolic_constant76
+// CHECK:STDOUT:       ir0.inst163:     symbolic_constant78
+// CHECK:STDOUT:       ir0.inst164:     symbolic_constant79
+// CHECK:STDOUT:       ir0.inst165:     symbolic_constant80
+// CHECK:STDOUT:       ir0.inst166:     symbolic_constant83
+// CHECK:STDOUT:       ir0.inst167:     symbolic_constant81
+// CHECK:STDOUT:       ir0.inst168:     symbolic_constant82
+// CHECK:STDOUT:       ir0.inst169:     concrete_constant(ir0.inst169)
+// CHECK:STDOUT:       ir0.inst170:     concrete_constant(ir0.inst170)
+// CHECK:STDOUT:       ir0.inst171:     concrete_constant(ir0.inst171)
+// CHECK:STDOUT:       ir0.inst172:     concrete_constant(ir0.inst172)
+// CHECK:STDOUT:       ir0.inst173:     symbolic_constant74
+// CHECK:STDOUT:       ir0.inst174:     symbolic_constant88
+// CHECK:STDOUT:       ir0.inst175:     symbolic_constant89
+// CHECK:STDOUT:       ir0.inst176:     symbolic_constant90
+// CHECK:STDOUT:       ir0.inst177:     symbolic_constant93
+// CHECK:STDOUT:       ir0.inst178:     symbolic_constant94
+// CHECK:STDOUT:       ir0.inst179:     symbolic_constant95
+// CHECK:STDOUT:       ir0.inst180:     constant<none>
+// CHECK:STDOUT:       ir0.inst181:     concrete_constant(ir0.inst181)
+// CHECK:STDOUT:       ir0.inst182:     concrete_constant(inst(TypeType))
+// CHECK:STDOUT:       ir0.inst183:     concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst184:     constant<none>
+// CHECK:STDOUT:       ir0.inst185:     concrete_constant(ir0.inst185)
+// CHECK:STDOUT:       ir0.inst186:     concrete_constant(ir0.inst36)
+// CHECK:STDOUT:       ir0.inst187:     concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst188:     constant<none>
+// CHECK:STDOUT:       ir0.inst189:     concrete_constant(ir0.inst189)
+// CHECK:STDOUT:       ir0.inst190:     symbolic_constant96
+// CHECK:STDOUT:       ir0.inst191:     symbolic_constant97
+// CHECK:STDOUT:       ir0.inst192:     symbolic_constant98
+// CHECK:STDOUT:       ir0.inst193:     concrete_constant(ir0.inst193)
+// CHECK:STDOUT:       ir0.inst194:     concrete_constant(ir0.inst194)
+// CHECK:STDOUT:       ir0.inst195:     symbolic_constant100
+// CHECK:STDOUT:       ir0.inst196:     symbolic_constant101
+// CHECK:STDOUT:       ir0.inst197:     symbolic_constant99
+// CHECK:STDOUT:       ir0.inst198:     concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst199:     constant<none>
+// CHECK:STDOUT:       ir0.inst200:     concrete_constant(ir0.inst200)
+// CHECK:STDOUT:       ir0.inst201:     symbolic_constant106
+// CHECK:STDOUT:       ir0.inst202:     symbolic_constant108
+// CHECK:STDOUT:       ir0.inst203:     symbolic_constant109
+// CHECK:STDOUT:       ir0.inst204:     symbolic_constant110
+// CHECK:STDOUT:       ir0.inst205:     symbolic_constant111
+// CHECK:STDOUT:       ir0.inst206:     symbolic_constant112
+// CHECK:STDOUT:       ir0.inst207:     symbolic_constant113
+// CHECK:STDOUT:       ir0.inst208:     symbolic_constant116
+// CHECK:STDOUT:       ir0.inst209:     symbolic_constant114
+// CHECK:STDOUT:       ir0.inst210:     symbolic_constant115
+// CHECK:STDOUT:       ir0.inst211:     symbolic_constant118
+// CHECK:STDOUT:       ir0.inst212:     concrete_constant(ir0.inst212)
+// CHECK:STDOUT:       ir0.inst213:     concrete_constant(ir0.inst213)
+// CHECK:STDOUT:       ir0.inst214:     concrete_constant(ir0.inst214)
+// CHECK:STDOUT:       ir0.inst215:     concrete_constant(ir0.inst215)
+// CHECK:STDOUT:       ir0.inst216:     symbolic_constant100
+// CHECK:STDOUT:       ir0.inst217:     symbolic_constant101
+// CHECK:STDOUT:       ir0.inst218:     symbolic_constant121
+// CHECK:STDOUT:       ir0.inst219:     symbolic_constant122
+// CHECK:STDOUT:       ir0.inst220:     symbolic_constant128
+// CHECK:STDOUT:       ir0.inst221:     symbolic_constant129
+// CHECK:STDOUT:       ir0.inst222:     symbolic_constant130
+// CHECK:STDOUT:       ir0.inst223:     symbolic_constant131
+// CHECK:STDOUT:       ir0.inst224:     symbolic_constant132
+// CHECK:STDOUT:       ir0.inst225:     symbolic_constant133
+// CHECK:STDOUT:       ir0.inst226:     symbolic_constant134
+// CHECK:STDOUT:       ir0.inst227:     symbolic_constant141
+// CHECK:STDOUT:       ir0.inst228:     symbolic_constant143
+// CHECK:STDOUT:       ir0.inst229:     symbolic_constant145
+// CHECK:STDOUT:       ir0.inst230:     symbolic_constant147
+// CHECK:STDOUT:       ir0.inst231:     symbolic_constant149
+// CHECK:STDOUT:       ir0.inst232:     symbolic_constant151
+// CHECK:STDOUT:       ir0.inst233:     symbolic_constant152
+// CHECK:STDOUT:       ir0.inst234:     symbolic_constant153
+// CHECK:STDOUT:       ir0.inst235:     symbolic_constant154
+// CHECK:STDOUT:       ir0.inst236:     symbolic_constant155
+// CHECK:STDOUT:       ir0.inst237:     symbolic_constant156
+// CHECK:STDOUT:       ir0.inst238:     symbolic_constant157
+// CHECK:STDOUT:       ir0.inst239:     symbolic_constant158
+// CHECK:STDOUT:       ir0.inst240:     symbolic_constant159
+// CHECK:STDOUT:       ir0.inst241:     symbolic_constant160
+// CHECK:STDOUT:       ir0.inst242:     symbolic_constant161
+// CHECK:STDOUT:       ir0.inst243:     symbolic_constant162
+// CHECK:STDOUT:       ir0.inst244:     constant<none>
+// CHECK:STDOUT:       ir0.inst245:     concrete_constant(ir0.inst245)
+// CHECK:STDOUT:       ir0.inst246:     symbolic_constant163
+// CHECK:STDOUT:       ir0.inst247:     symbolic_constant164
+// CHECK:STDOUT:       ir0.inst248:     symbolic_constant165
+// CHECK:STDOUT:       ir0.inst249:     concrete_constant(ir0.inst249)
+// CHECK:STDOUT:       ir0.inst250:     concrete_constant(ir0.inst250)
+// CHECK:STDOUT:       ir0.inst251:     concrete_constant(ir0.inst251)
+// CHECK:STDOUT:       ir0.inst252:     symbolic_constant167
+// CHECK:STDOUT:       ir0.inst253:     symbolic_constant168
+// CHECK:STDOUT:       ir0.inst254:     symbolic_constant169
+// CHECK:STDOUT:       ir0.inst255:     symbolic_constant166
+// CHECK:STDOUT:       ir0.inst256:     concrete_constant(ir0.inst71)
+// CHECK:STDOUT:       ir0.inst257:     constant<none>
+// CHECK:STDOUT:       ir0.inst258:     concrete_constant(ir0.inst258)
+// CHECK:STDOUT:       ir0.inst259:     symbolic_constant176
+// CHECK:STDOUT:       ir0.inst260:     symbolic_constant178
+// CHECK:STDOUT:       ir0.inst261:     symbolic_constant179
+// CHECK:STDOUT:       ir0.inst262:     symbolic_constant180
+// CHECK:STDOUT:       ir0.inst263:     symbolic_constant181
+// CHECK:STDOUT:       ir0.inst264:     symbolic_constant182
+// CHECK:STDOUT:       ir0.inst265:     symbolic_constant183
+// CHECK:STDOUT:       ir0.inst266:     symbolic_constant184
+// CHECK:STDOUT:       ir0.inst267:     symbolic_constant185
+// CHECK:STDOUT:       ir0.inst268:     symbolic_constant188
+// CHECK:STDOUT:       ir0.inst269:     symbolic_constant186
+// CHECK:STDOUT:       ir0.inst270:     symbolic_constant187
+// CHECK:STDOUT:       ir0.inst271:     symbolic_constant190
+// CHECK:STDOUT:       ir0.inst272:     concrete_constant(ir0.inst272)
+// CHECK:STDOUT:       ir0.inst273:     concrete_constant(ir0.inst273)
+// CHECK:STDOUT:       ir0.inst274:     concrete_constant(ir0.inst274)
+// CHECK:STDOUT:       ir0.inst275:     concrete_constant(ir0.inst275)
+// CHECK:STDOUT:       ir0.inst276:     symbolic_constant167
+// CHECK:STDOUT:       ir0.inst277:     symbolic_constant168
+// CHECK:STDOUT:       ir0.inst278:     symbolic_constant169
+// CHECK:STDOUT:       ir0.inst279:     symbolic_constant193
+// CHECK:STDOUT:       ir0.inst280:     symbolic_constant194
+// CHECK:STDOUT:       ir0.inst281:     symbolic_constant202
+// CHECK:STDOUT:       ir0.inst282:     symbolic_constant203
+// CHECK:STDOUT:       ir0.inst283:     symbolic_constant204
+// CHECK:STDOUT:       ir0.inst284:     symbolic_constant205
+// CHECK:STDOUT:       ir0.inst285:     symbolic_constant206
+// CHECK:STDOUT:       ir0.inst286:     symbolic_constant207
+// CHECK:STDOUT:       ir0.inst287:     symbolic_constant208
+// CHECK:STDOUT:       ir0.inst288:     symbolic_constant209
+// CHECK:STDOUT:       ir0.inst289:     symbolic_constant210
+// CHECK:STDOUT:       ir0.inst290:     symbolic_constant222
+// CHECK:STDOUT:       ir0.inst291:     symbolic_constant224
+// CHECK:STDOUT:       ir0.inst292:     symbolic_constant226
+// CHECK:STDOUT:       ir0.inst293:     symbolic_constant228
+// CHECK:STDOUT:       ir0.inst294:     symbolic_constant230
+// CHECK:STDOUT:       ir0.inst295:     symbolic_constant232
+// CHECK:STDOUT:       ir0.inst296:     symbolic_constant233
+// CHECK:STDOUT:       ir0.inst297:     symbolic_constant234
+// CHECK:STDOUT:       ir0.inst298:     symbolic_constant235
+// CHECK:STDOUT:       ir0.inst299:     symbolic_constant236
+// CHECK:STDOUT:       ir0.inst300:     symbolic_constant237
+// CHECK:STDOUT:       ir0.inst301:     symbolic_constant238
+// CHECK:STDOUT:       ir0.inst302:     symbolic_constant239
+// CHECK:STDOUT:       ir0.inst303:     symbolic_constant240
+// CHECK:STDOUT:       ir0.inst304:     symbolic_constant241
+// CHECK:STDOUT:       ir0.inst305:     symbolic_constant242
+// CHECK:STDOUT:       ir0.inst306:     symbolic_constant243
+// CHECK:STDOUT:       ir0.inst307:     symbolic_constant244
+// CHECK:STDOUT:       ir0.inst308:     symbolic_constant245
+// CHECK:STDOUT:       ir0.inst309:     symbolic_constant246
+// CHECK:STDOUT:       ir0.inst310:     symbolic_constant247
+// CHECK:STDOUT:       ir0.inst311:     symbolic_constant248
+// CHECK:STDOUT:       ir0.inst312:     symbolic_constant250
+// CHECK:STDOUT:       ir0.inst313:     symbolic_constant251
+// CHECK:STDOUT:       ir0.inst314:     symbolic_constant252
+// CHECK:STDOUT:       ir0.inst315:     symbolic_constant253
+// CHECK:STDOUT:       ir0.inst316:     symbolic_constant257
+// CHECK:STDOUT:       ir0.inst317:     symbolic_constant254
+// CHECK:STDOUT:       ir0.inst318:     symbolic_constant255
+// CHECK:STDOUT:       ir0.inst319:     symbolic_constant256
+// CHECK:STDOUT:       ir0.inst320:     symbolic_constant257
+// CHECK:STDOUT:       ir0.inst322:     symbolic_constant259
+// CHECK:STDOUT:       ir0.inst323:     symbolic_constant258
+// CHECK:STDOUT:       ir0.inst324:     symbolic_constant259
+// CHECK:STDOUT:       ir0.inst326:     symbolic_constant15
+// CHECK:STDOUT:       ir0.inst330:     concrete_constant(ir0.inst331)
+// CHECK:STDOUT:       ir0.inst331:     concrete_constant(ir0.inst331)
+// CHECK:STDOUT:       ir0.inst332:     concrete_constant(ir0.inst331)
 // CHECK:STDOUT:     symbolic_constants:
-// CHECK:STDOUT:       symbolic_constant0: {inst: inst19, generic: generic<none>, index: generic_inst<none>, kind: self}
-// CHECK:STDOUT:       symbolic_constant1: {inst: inst21, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant2: {inst: inst21, generic: generic0, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant3: {inst: inst27, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant4: {inst: inst27, generic: generic0, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant5: {inst: inst30, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6: {inst: inst30, generic: generic0, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant7: {inst: inst42, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant8: {inst: inst42, generic: generic0, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant9: {inst: inst45, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant10: {inst: inst45, generic: generic0, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant11: {inst: inst56, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant12: {inst: inst58, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant13: {inst: inst58, generic: generic0, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant14: {inst: inst61, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant15: {inst: inst61, generic: generic0, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant16: {inst: inst72, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant17: {inst: inst82, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant18: {inst: inst83, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant19: {inst: inst83, generic: generic1, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant20: {inst: inst72, generic: generic1, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant21: {inst: inst82, generic: generic1, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant22: {inst: inst72, generic: generic1, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant23: {inst: inst82, generic: generic1, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant24: {inst: inst83, generic: generic1, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant25: {inst: inst95, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant26: {inst: inst96, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant27: {inst: inst97, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant28: {inst: inst97, generic: generic2, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant29: {inst: inst95, generic: generic2, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant30: {inst: inst95, generic: generic2, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant31: {inst: inst96, generic: generic2, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant32: {inst: inst105, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant33: {inst: inst105, generic: generic2, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant34: {inst: inst95, generic: generic2, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant35: {inst: inst96, generic: generic2, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant36: {inst: inst97, generic: generic2, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant37: {inst: inst105, generic: generic2, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant38: {inst: inst111, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant39: {inst: inst112, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant40: {inst: inst112, generic: generic2, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant41: {inst: inst111, generic: generic2, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant42: {inst: inst113, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant43: {inst: inst113, generic: generic3, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant44: {inst: inst112, generic: generic2, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant45: {inst: inst111, generic: generic2, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant46: {inst: inst112, generic: generic2, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant47: {inst: inst95, generic: generic3, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant48: {inst: inst96, generic: generic3, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant49: {inst: inst97, generic: generic3, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant50: {inst: inst95, generic: generic3, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant51: {inst: inst96, generic: generic3, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant52: {inst: inst97, generic: generic3, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant53: {inst: inst113, generic: generic3, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant54: {inst: inst125, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant55: {inst: inst125, generic: generic3, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant56: {inst: inst126, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant57: {inst: inst126, generic: generic3, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant58: {inst: inst127, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant59: {inst: inst127, generic: generic3, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60: {inst: inst128, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant61: {inst: inst128, generic: generic3, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant62: {inst: inst129, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant63: {inst: inst129, generic: generic3, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant64: {inst: inst130, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant65: {inst: inst130, generic: generic3, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant66: {inst: inst125, generic: generic3, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant67: {inst: inst126, generic: generic3, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant68: {inst: inst127, generic: generic3, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant69: {inst: inst128, generic: generic3, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant70: {inst: inst129, generic: generic3, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant71: {inst: inst130, generic: generic3, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant72: {inst: inst137, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant73: {inst: inst27, generic: generic4, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant74: {inst: inst21, generic: generic4, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant75: {inst: inst21, generic: generic4, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant76: {inst: inst162, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant77: {inst: inst162, generic: generic4, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant78: {inst: inst21, generic: generic4, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant79: {inst: inst27, generic: generic4, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant80: {inst: inst162, generic: generic4, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant81: {inst: inst167, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant82: {inst: inst168, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant83: {inst: inst168, generic: generic4, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant84: {inst: inst167, generic: generic4, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant85: {inst: inst30, generic: generic5, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant86: {inst: inst168, generic: generic4, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant87: {inst: inst61, generic: generic4, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant88: {inst: inst167, generic: generic4, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant89: {inst: inst168, generic: generic4, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant90: {inst: inst61, generic: generic4, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant91: {inst: inst21, generic: generic5, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant92: {inst: inst27, generic: generic5, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant93: {inst: inst21, generic: generic5, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant94: {inst: inst27, generic: generic5, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant95: {inst: inst30, generic: generic5, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant96: {inst: inst190, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant97: {inst: inst191, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant98: {inst: inst192, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant99: {inst: inst192, generic: generic6, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant100: {inst: inst95, generic: generic6, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant101: {inst: inst190, generic: generic6, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant102: {inst: inst95, generic: generic6, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant103: {inst: inst190, generic: generic6, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant104: {inst: inst96, generic: generic6, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant105: {inst: inst191, generic: generic6, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant106: {inst: inst201, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant107: {inst: inst201, generic: generic6, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant108: {inst: inst95, generic: generic6, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant109: {inst: inst190, generic: generic6, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant110: {inst: inst96, generic: generic6, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant111: {inst: inst191, generic: generic6, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant112: {inst: inst192, generic: generic6, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant113: {inst: inst201, generic: generic6, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant114: {inst: inst209, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant115: {inst: inst210, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant116: {inst: inst210, generic: generic6, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant117: {inst: inst209, generic: generic6, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant118: {inst: inst211, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant119: {inst: inst211, generic: generic7, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant120: {inst: inst210, generic: generic6, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant121: {inst: inst209, generic: generic6, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant122: {inst: inst210, generic: generic6, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant123: {inst: inst95, generic: generic7, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant124: {inst: inst96, generic: generic7, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant125: {inst: inst190, generic: generic7, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant126: {inst: inst191, generic: generic7, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant127: {inst: inst192, generic: generic7, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant128: {inst: inst95, generic: generic7, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant129: {inst: inst96, generic: generic7, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant130: {inst: inst190, generic: generic7, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant131: {inst: inst191, generic: generic7, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant132: {inst: inst192, generic: generic7, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant133: {inst: inst211, generic: generic7, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant134: {inst: inst226, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant135: {inst: inst226, generic: generic7, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant136: {inst: inst126, generic: generic7, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant137: {inst: inst127, generic: generic7, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant138: {inst: inst128, generic: generic7, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant139: {inst: inst129, generic: generic7, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant140: {inst: inst130, generic: generic7, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant141: {inst: inst227, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant142: {inst: inst227, generic: generic7, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant143: {inst: inst228, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant144: {inst: inst228, generic: generic7, index: generic_inst_in_def7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant145: {inst: inst229, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant146: {inst: inst229, generic: generic7, index: generic_inst_in_def8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant147: {inst: inst230, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant148: {inst: inst230, generic: generic7, index: generic_inst_in_def9, kind: checked}
-// CHECK:STDOUT:       symbolic_constant149: {inst: inst231, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant150: {inst: inst231, generic: generic7, index: generic_inst_in_def10, kind: checked}
-// CHECK:STDOUT:       symbolic_constant151: {inst: inst226, generic: generic7, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant152: {inst: inst126, generic: generic7, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant153: {inst: inst127, generic: generic7, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant154: {inst: inst128, generic: generic7, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant155: {inst: inst129, generic: generic7, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant156: {inst: inst130, generic: generic7, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant157: {inst: inst227, generic: generic7, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant158: {inst: inst228, generic: generic7, index: generic_inst_in_def7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant159: {inst: inst229, generic: generic7, index: generic_inst_in_def8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant160: {inst: inst230, generic: generic7, index: generic_inst_in_def9, kind: checked}
-// CHECK:STDOUT:       symbolic_constant161: {inst: inst231, generic: generic7, index: generic_inst_in_def10, kind: checked}
-// CHECK:STDOUT:       symbolic_constant162: {inst: inst243, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant163: {inst: inst246, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant164: {inst: inst247, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant165: {inst: inst248, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant166: {inst: inst248, generic: generic8, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant167: {inst: inst95, generic: generic8, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant168: {inst: inst190, generic: generic8, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant169: {inst: inst246, generic: generic8, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant170: {inst: inst95, generic: generic8, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant171: {inst: inst190, generic: generic8, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant172: {inst: inst246, generic: generic8, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant173: {inst: inst96, generic: generic8, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant174: {inst: inst191, generic: generic8, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant175: {inst: inst247, generic: generic8, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant176: {inst: inst259, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant177: {inst: inst259, generic: generic8, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant178: {inst: inst95, generic: generic8, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant179: {inst: inst190, generic: generic8, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant180: {inst: inst246, generic: generic8, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant181: {inst: inst96, generic: generic8, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant182: {inst: inst191, generic: generic8, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant183: {inst: inst247, generic: generic8, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant184: {inst: inst248, generic: generic8, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant185: {inst: inst259, generic: generic8, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant186: {inst: inst269, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant187: {inst: inst270, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant188: {inst: inst270, generic: generic8, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant189: {inst: inst269, generic: generic8, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant190: {inst: inst271, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant191: {inst: inst271, generic: generic9, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant192: {inst: inst270, generic: generic8, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant193: {inst: inst269, generic: generic8, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant194: {inst: inst270, generic: generic8, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant195: {inst: inst95, generic: generic9, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant196: {inst: inst96, generic: generic9, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant197: {inst: inst190, generic: generic9, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant198: {inst: inst191, generic: generic9, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant199: {inst: inst246, generic: generic9, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant200: {inst: inst247, generic: generic9, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant201: {inst: inst248, generic: generic9, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant202: {inst: inst95, generic: generic9, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant203: {inst: inst96, generic: generic9, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant204: {inst: inst190, generic: generic9, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant205: {inst: inst191, generic: generic9, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant206: {inst: inst246, generic: generic9, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant207: {inst: inst247, generic: generic9, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant208: {inst: inst248, generic: generic9, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant209: {inst: inst271, generic: generic9, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant210: {inst: inst289, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant211: {inst: inst289, generic: generic9, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant212: {inst: inst126, generic: generic9, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant213: {inst: inst127, generic: generic9, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant214: {inst: inst128, generic: generic9, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant215: {inst: inst129, generic: generic9, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant216: {inst: inst130, generic: generic9, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant217: {inst: inst227, generic: generic9, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant218: {inst: inst228, generic: generic9, index: generic_inst_in_def7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant219: {inst: inst229, generic: generic9, index: generic_inst_in_def8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant220: {inst: inst230, generic: generic9, index: generic_inst_in_def9, kind: checked}
-// CHECK:STDOUT:       symbolic_constant221: {inst: inst231, generic: generic9, index: generic_inst_in_def10, kind: checked}
-// CHECK:STDOUT:       symbolic_constant222: {inst: inst290, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant223: {inst: inst290, generic: generic9, index: generic_inst_in_def11, kind: checked}
-// CHECK:STDOUT:       symbolic_constant224: {inst: inst291, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant225: {inst: inst291, generic: generic9, index: generic_inst_in_def12, kind: checked}
-// CHECK:STDOUT:       symbolic_constant226: {inst: inst292, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant227: {inst: inst292, generic: generic9, index: generic_inst_in_def13, kind: checked}
-// CHECK:STDOUT:       symbolic_constant228: {inst: inst293, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant229: {inst: inst293, generic: generic9, index: generic_inst_in_def14, kind: checked}
-// CHECK:STDOUT:       symbolic_constant230: {inst: inst294, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant231: {inst: inst294, generic: generic9, index: generic_inst_in_def15, kind: checked}
-// CHECK:STDOUT:       symbolic_constant232: {inst: inst289, generic: generic9, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant233: {inst: inst126, generic: generic9, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant234: {inst: inst127, generic: generic9, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant235: {inst: inst128, generic: generic9, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant236: {inst: inst129, generic: generic9, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant237: {inst: inst130, generic: generic9, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant238: {inst: inst227, generic: generic9, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant239: {inst: inst228, generic: generic9, index: generic_inst_in_def7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant240: {inst: inst229, generic: generic9, index: generic_inst_in_def8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant241: {inst: inst230, generic: generic9, index: generic_inst_in_def9, kind: checked}
-// CHECK:STDOUT:       symbolic_constant242: {inst: inst231, generic: generic9, index: generic_inst_in_def10, kind: checked}
-// CHECK:STDOUT:       symbolic_constant243: {inst: inst290, generic: generic9, index: generic_inst_in_def11, kind: checked}
-// CHECK:STDOUT:       symbolic_constant244: {inst: inst291, generic: generic9, index: generic_inst_in_def12, kind: checked}
-// CHECK:STDOUT:       symbolic_constant245: {inst: inst292, generic: generic9, index: generic_inst_in_def13, kind: checked}
-// CHECK:STDOUT:       symbolic_constant246: {inst: inst293, generic: generic9, index: generic_inst_in_def14, kind: checked}
-// CHECK:STDOUT:       symbolic_constant247: {inst: inst294, generic: generic9, index: generic_inst_in_def15, kind: checked}
-// CHECK:STDOUT:       symbolic_constant248: {inst: inst311, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant249: {inst: inst162, generic: generic4, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant250: {inst: inst312, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant251: {inst: inst312, generic: generic0, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant252: {inst: inst314, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant253: {inst: inst315, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant254: {inst: inst317, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant255: {inst: inst314, generic: generic0, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant256: {inst: inst315, generic: generic0, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant257: {inst: inst317, generic: generic0, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant258: {inst: inst323, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant259: {inst: inst323, generic: generic0, index: generic_inst_in_def6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant0: {inst: ir0.inst19, generic: generic<none>, index: generic_inst<none>, kind: self}
+// CHECK:STDOUT:       symbolic_constant1: {inst: ir0.inst21, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant2: {inst: ir0.inst21, generic: generic0, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant3: {inst: ir0.inst27, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant4: {inst: ir0.inst27, generic: generic0, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant5: {inst: ir0.inst30, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6: {inst: ir0.inst30, generic: generic0, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant7: {inst: ir0.inst42, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant8: {inst: ir0.inst42, generic: generic0, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant9: {inst: ir0.inst45, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant10: {inst: ir0.inst45, generic: generic0, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant11: {inst: ir0.inst56, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant12: {inst: ir0.inst58, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant13: {inst: ir0.inst58, generic: generic0, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant14: {inst: ir0.inst61, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant15: {inst: ir0.inst61, generic: generic0, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant16: {inst: ir0.inst72, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant17: {inst: ir0.inst82, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant18: {inst: ir0.inst83, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant19: {inst: ir0.inst83, generic: generic1, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant20: {inst: ir0.inst72, generic: generic1, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant21: {inst: ir0.inst82, generic: generic1, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant22: {inst: ir0.inst72, generic: generic1, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant23: {inst: ir0.inst82, generic: generic1, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant24: {inst: ir0.inst83, generic: generic1, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant25: {inst: ir0.inst95, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant26: {inst: ir0.inst96, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant27: {inst: ir0.inst97, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant28: {inst: ir0.inst97, generic: generic2, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant29: {inst: ir0.inst95, generic: generic2, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant30: {inst: ir0.inst95, generic: generic2, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant31: {inst: ir0.inst96, generic: generic2, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant32: {inst: ir0.inst105, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant33: {inst: ir0.inst105, generic: generic2, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant34: {inst: ir0.inst95, generic: generic2, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant35: {inst: ir0.inst96, generic: generic2, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant36: {inst: ir0.inst97, generic: generic2, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant37: {inst: ir0.inst105, generic: generic2, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant38: {inst: ir0.inst111, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant39: {inst: ir0.inst112, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant40: {inst: ir0.inst112, generic: generic2, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant41: {inst: ir0.inst111, generic: generic2, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant42: {inst: ir0.inst113, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant43: {inst: ir0.inst113, generic: generic3, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant44: {inst: ir0.inst112, generic: generic2, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant45: {inst: ir0.inst111, generic: generic2, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant46: {inst: ir0.inst112, generic: generic2, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant47: {inst: ir0.inst95, generic: generic3, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant48: {inst: ir0.inst96, generic: generic3, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant49: {inst: ir0.inst97, generic: generic3, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant50: {inst: ir0.inst95, generic: generic3, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant51: {inst: ir0.inst96, generic: generic3, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant52: {inst: ir0.inst97, generic: generic3, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant53: {inst: ir0.inst113, generic: generic3, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant54: {inst: ir0.inst125, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant55: {inst: ir0.inst125, generic: generic3, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant56: {inst: ir0.inst126, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant57: {inst: ir0.inst126, generic: generic3, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant58: {inst: ir0.inst127, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant59: {inst: ir0.inst127, generic: generic3, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60: {inst: ir0.inst128, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant61: {inst: ir0.inst128, generic: generic3, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant62: {inst: ir0.inst129, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant63: {inst: ir0.inst129, generic: generic3, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant64: {inst: ir0.inst130, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant65: {inst: ir0.inst130, generic: generic3, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant66: {inst: ir0.inst125, generic: generic3, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant67: {inst: ir0.inst126, generic: generic3, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant68: {inst: ir0.inst127, generic: generic3, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant69: {inst: ir0.inst128, generic: generic3, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant70: {inst: ir0.inst129, generic: generic3, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant71: {inst: ir0.inst130, generic: generic3, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant72: {inst: ir0.inst137, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant73: {inst: ir0.inst27, generic: generic4, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant74: {inst: ir0.inst21, generic: generic4, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant75: {inst: ir0.inst21, generic: generic4, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant76: {inst: ir0.inst162, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant77: {inst: ir0.inst162, generic: generic4, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant78: {inst: ir0.inst21, generic: generic4, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant79: {inst: ir0.inst27, generic: generic4, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant80: {inst: ir0.inst162, generic: generic4, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant81: {inst: ir0.inst167, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant82: {inst: ir0.inst168, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant83: {inst: ir0.inst168, generic: generic4, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant84: {inst: ir0.inst167, generic: generic4, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant85: {inst: ir0.inst30, generic: generic5, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant86: {inst: ir0.inst168, generic: generic4, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant87: {inst: ir0.inst61, generic: generic4, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant88: {inst: ir0.inst167, generic: generic4, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant89: {inst: ir0.inst168, generic: generic4, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant90: {inst: ir0.inst61, generic: generic4, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant91: {inst: ir0.inst21, generic: generic5, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant92: {inst: ir0.inst27, generic: generic5, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant93: {inst: ir0.inst21, generic: generic5, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant94: {inst: ir0.inst27, generic: generic5, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant95: {inst: ir0.inst30, generic: generic5, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant96: {inst: ir0.inst190, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant97: {inst: ir0.inst191, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant98: {inst: ir0.inst192, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant99: {inst: ir0.inst192, generic: generic6, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant100: {inst: ir0.inst95, generic: generic6, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant101: {inst: ir0.inst190, generic: generic6, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant102: {inst: ir0.inst95, generic: generic6, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant103: {inst: ir0.inst190, generic: generic6, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant104: {inst: ir0.inst96, generic: generic6, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant105: {inst: ir0.inst191, generic: generic6, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant106: {inst: ir0.inst201, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant107: {inst: ir0.inst201, generic: generic6, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant108: {inst: ir0.inst95, generic: generic6, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant109: {inst: ir0.inst190, generic: generic6, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant110: {inst: ir0.inst96, generic: generic6, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant111: {inst: ir0.inst191, generic: generic6, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant112: {inst: ir0.inst192, generic: generic6, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant113: {inst: ir0.inst201, generic: generic6, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant114: {inst: ir0.inst209, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant115: {inst: ir0.inst210, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant116: {inst: ir0.inst210, generic: generic6, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant117: {inst: ir0.inst209, generic: generic6, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant118: {inst: ir0.inst211, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant119: {inst: ir0.inst211, generic: generic7, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant120: {inst: ir0.inst210, generic: generic6, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant121: {inst: ir0.inst209, generic: generic6, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant122: {inst: ir0.inst210, generic: generic6, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant123: {inst: ir0.inst95, generic: generic7, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant124: {inst: ir0.inst96, generic: generic7, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant125: {inst: ir0.inst190, generic: generic7, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant126: {inst: ir0.inst191, generic: generic7, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant127: {inst: ir0.inst192, generic: generic7, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant128: {inst: ir0.inst95, generic: generic7, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant129: {inst: ir0.inst96, generic: generic7, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant130: {inst: ir0.inst190, generic: generic7, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant131: {inst: ir0.inst191, generic: generic7, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant132: {inst: ir0.inst192, generic: generic7, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant133: {inst: ir0.inst211, generic: generic7, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant134: {inst: ir0.inst226, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant135: {inst: ir0.inst226, generic: generic7, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant136: {inst: ir0.inst126, generic: generic7, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant137: {inst: ir0.inst127, generic: generic7, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant138: {inst: ir0.inst128, generic: generic7, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant139: {inst: ir0.inst129, generic: generic7, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant140: {inst: ir0.inst130, generic: generic7, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant141: {inst: ir0.inst227, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant142: {inst: ir0.inst227, generic: generic7, index: generic_inst_in_def6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant143: {inst: ir0.inst228, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant144: {inst: ir0.inst228, generic: generic7, index: generic_inst_in_def7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant145: {inst: ir0.inst229, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant146: {inst: ir0.inst229, generic: generic7, index: generic_inst_in_def8, kind: checked}
+// CHECK:STDOUT:       symbolic_constant147: {inst: ir0.inst230, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant148: {inst: ir0.inst230, generic: generic7, index: generic_inst_in_def9, kind: checked}
+// CHECK:STDOUT:       symbolic_constant149: {inst: ir0.inst231, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant150: {inst: ir0.inst231, generic: generic7, index: generic_inst_in_def10, kind: checked}
+// CHECK:STDOUT:       symbolic_constant151: {inst: ir0.inst226, generic: generic7, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant152: {inst: ir0.inst126, generic: generic7, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant153: {inst: ir0.inst127, generic: generic7, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant154: {inst: ir0.inst128, generic: generic7, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant155: {inst: ir0.inst129, generic: generic7, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant156: {inst: ir0.inst130, generic: generic7, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant157: {inst: ir0.inst227, generic: generic7, index: generic_inst_in_def6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant158: {inst: ir0.inst228, generic: generic7, index: generic_inst_in_def7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant159: {inst: ir0.inst229, generic: generic7, index: generic_inst_in_def8, kind: checked}
+// CHECK:STDOUT:       symbolic_constant160: {inst: ir0.inst230, generic: generic7, index: generic_inst_in_def9, kind: checked}
+// CHECK:STDOUT:       symbolic_constant161: {inst: ir0.inst231, generic: generic7, index: generic_inst_in_def10, kind: checked}
+// CHECK:STDOUT:       symbolic_constant162: {inst: ir0.inst243, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant163: {inst: ir0.inst246, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant164: {inst: ir0.inst247, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant165: {inst: ir0.inst248, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant166: {inst: ir0.inst248, generic: generic8, index: generic_inst_in_decl6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant167: {inst: ir0.inst95, generic: generic8, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant168: {inst: ir0.inst190, generic: generic8, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant169: {inst: ir0.inst246, generic: generic8, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant170: {inst: ir0.inst95, generic: generic8, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant171: {inst: ir0.inst190, generic: generic8, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant172: {inst: ir0.inst246, generic: generic8, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant173: {inst: ir0.inst96, generic: generic8, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant174: {inst: ir0.inst191, generic: generic8, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant175: {inst: ir0.inst247, generic: generic8, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant176: {inst: ir0.inst259, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant177: {inst: ir0.inst259, generic: generic8, index: generic_inst_in_decl7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant178: {inst: ir0.inst95, generic: generic8, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant179: {inst: ir0.inst190, generic: generic8, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant180: {inst: ir0.inst246, generic: generic8, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant181: {inst: ir0.inst96, generic: generic8, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant182: {inst: ir0.inst191, generic: generic8, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant183: {inst: ir0.inst247, generic: generic8, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant184: {inst: ir0.inst248, generic: generic8, index: generic_inst_in_decl6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant185: {inst: ir0.inst259, generic: generic8, index: generic_inst_in_decl7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant186: {inst: ir0.inst269, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant187: {inst: ir0.inst270, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant188: {inst: ir0.inst270, generic: generic8, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant189: {inst: ir0.inst269, generic: generic8, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant190: {inst: ir0.inst271, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant191: {inst: ir0.inst271, generic: generic9, index: generic_inst_in_decl7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant192: {inst: ir0.inst270, generic: generic8, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant193: {inst: ir0.inst269, generic: generic8, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant194: {inst: ir0.inst270, generic: generic8, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant195: {inst: ir0.inst95, generic: generic9, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant196: {inst: ir0.inst96, generic: generic9, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant197: {inst: ir0.inst190, generic: generic9, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant198: {inst: ir0.inst191, generic: generic9, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant199: {inst: ir0.inst246, generic: generic9, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant200: {inst: ir0.inst247, generic: generic9, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant201: {inst: ir0.inst248, generic: generic9, index: generic_inst_in_decl6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant202: {inst: ir0.inst95, generic: generic9, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant203: {inst: ir0.inst96, generic: generic9, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant204: {inst: ir0.inst190, generic: generic9, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant205: {inst: ir0.inst191, generic: generic9, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant206: {inst: ir0.inst246, generic: generic9, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant207: {inst: ir0.inst247, generic: generic9, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant208: {inst: ir0.inst248, generic: generic9, index: generic_inst_in_decl6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant209: {inst: ir0.inst271, generic: generic9, index: generic_inst_in_decl7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant210: {inst: ir0.inst289, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant211: {inst: ir0.inst289, generic: generic9, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant212: {inst: ir0.inst126, generic: generic9, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant213: {inst: ir0.inst127, generic: generic9, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant214: {inst: ir0.inst128, generic: generic9, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant215: {inst: ir0.inst129, generic: generic9, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant216: {inst: ir0.inst130, generic: generic9, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant217: {inst: ir0.inst227, generic: generic9, index: generic_inst_in_def6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant218: {inst: ir0.inst228, generic: generic9, index: generic_inst_in_def7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant219: {inst: ir0.inst229, generic: generic9, index: generic_inst_in_def8, kind: checked}
+// CHECK:STDOUT:       symbolic_constant220: {inst: ir0.inst230, generic: generic9, index: generic_inst_in_def9, kind: checked}
+// CHECK:STDOUT:       symbolic_constant221: {inst: ir0.inst231, generic: generic9, index: generic_inst_in_def10, kind: checked}
+// CHECK:STDOUT:       symbolic_constant222: {inst: ir0.inst290, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant223: {inst: ir0.inst290, generic: generic9, index: generic_inst_in_def11, kind: checked}
+// CHECK:STDOUT:       symbolic_constant224: {inst: ir0.inst291, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant225: {inst: ir0.inst291, generic: generic9, index: generic_inst_in_def12, kind: checked}
+// CHECK:STDOUT:       symbolic_constant226: {inst: ir0.inst292, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant227: {inst: ir0.inst292, generic: generic9, index: generic_inst_in_def13, kind: checked}
+// CHECK:STDOUT:       symbolic_constant228: {inst: ir0.inst293, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant229: {inst: ir0.inst293, generic: generic9, index: generic_inst_in_def14, kind: checked}
+// CHECK:STDOUT:       symbolic_constant230: {inst: ir0.inst294, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant231: {inst: ir0.inst294, generic: generic9, index: generic_inst_in_def15, kind: checked}
+// CHECK:STDOUT:       symbolic_constant232: {inst: ir0.inst289, generic: generic9, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant233: {inst: ir0.inst126, generic: generic9, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant234: {inst: ir0.inst127, generic: generic9, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant235: {inst: ir0.inst128, generic: generic9, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant236: {inst: ir0.inst129, generic: generic9, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant237: {inst: ir0.inst130, generic: generic9, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant238: {inst: ir0.inst227, generic: generic9, index: generic_inst_in_def6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant239: {inst: ir0.inst228, generic: generic9, index: generic_inst_in_def7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant240: {inst: ir0.inst229, generic: generic9, index: generic_inst_in_def8, kind: checked}
+// CHECK:STDOUT:       symbolic_constant241: {inst: ir0.inst230, generic: generic9, index: generic_inst_in_def9, kind: checked}
+// CHECK:STDOUT:       symbolic_constant242: {inst: ir0.inst231, generic: generic9, index: generic_inst_in_def10, kind: checked}
+// CHECK:STDOUT:       symbolic_constant243: {inst: ir0.inst290, generic: generic9, index: generic_inst_in_def11, kind: checked}
+// CHECK:STDOUT:       symbolic_constant244: {inst: ir0.inst291, generic: generic9, index: generic_inst_in_def12, kind: checked}
+// CHECK:STDOUT:       symbolic_constant245: {inst: ir0.inst292, generic: generic9, index: generic_inst_in_def13, kind: checked}
+// CHECK:STDOUT:       symbolic_constant246: {inst: ir0.inst293, generic: generic9, index: generic_inst_in_def14, kind: checked}
+// CHECK:STDOUT:       symbolic_constant247: {inst: ir0.inst294, generic: generic9, index: generic_inst_in_def15, kind: checked}
+// CHECK:STDOUT:       symbolic_constant248: {inst: ir0.inst311, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant249: {inst: ir0.inst162, generic: generic4, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant250: {inst: ir0.inst312, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant251: {inst: ir0.inst312, generic: generic0, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant252: {inst: ir0.inst314, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant253: {inst: ir0.inst315, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant254: {inst: ir0.inst317, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant255: {inst: ir0.inst314, generic: generic0, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant256: {inst: ir0.inst315, generic: generic0, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant257: {inst: ir0.inst317, generic: generic0, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant258: {inst: ir0.inst323, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant259: {inst: ir0.inst323, generic: generic0, index: generic_inst_in_def6, kind: checked}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst53
+// CHECK:STDOUT:       0:               ir0.inst53
 // CHECK:STDOUT:     imports:
-// CHECK:STDOUT:       0:               inst16
-// CHECK:STDOUT:       1:               inst69
-// CHECK:STDOUT:       2:               inst70
-// CHECK:STDOUT:       3:               inst73
-// CHECK:STDOUT:       4:               inst74
-// CHECK:STDOUT:       5:               inst75
-// CHECK:STDOUT:       6:               inst77
-// CHECK:STDOUT:       7:               inst79
-// CHECK:STDOUT:       8:               inst84
-// CHECK:STDOUT:       9:               inst85
-// CHECK:STDOUT:       10:              inst86
-// CHECK:STDOUT:       11:              inst87
-// CHECK:STDOUT:       12:              inst88
-// CHECK:STDOUT:       13:              inst93
-// CHECK:STDOUT:       14:              inst94
-// CHECK:STDOUT:       15:              inst99
-// CHECK:STDOUT:       16:              inst100
-// CHECK:STDOUT:       17:              inst101
-// CHECK:STDOUT:       18:              inst102
-// CHECK:STDOUT:       19:              inst103
-// CHECK:STDOUT:       20:              inst104
-// CHECK:STDOUT:       21:              inst110
-// CHECK:STDOUT:       22:              inst114
-// CHECK:STDOUT:       23:              inst115
-// CHECK:STDOUT:       24:              inst116
-// CHECK:STDOUT:       25:              inst117
-// CHECK:STDOUT:       26:              inst118
-// CHECK:STDOUT:       27:              inst138
-// CHECK:STDOUT:       28:              inst139
-// CHECK:STDOUT:       29:              inst140
-// CHECK:STDOUT:       30:              inst141
-// CHECK:STDOUT:       31:              inst142
-// CHECK:STDOUT:       32:              inst143
-// CHECK:STDOUT:       33:              inst144
-// CHECK:STDOUT:       34:              inst145
-// CHECK:STDOUT:       35:              inst146
-// CHECK:STDOUT:       36:              inst147
-// CHECK:STDOUT:       37:              inst148
-// CHECK:STDOUT:       38:              inst149
-// CHECK:STDOUT:       39:              inst150
-// CHECK:STDOUT:       40:              inst151
-// CHECK:STDOUT:       41:              inst152
-// CHECK:STDOUT:       42:              inst153
-// CHECK:STDOUT:       43:              inst154
-// CHECK:STDOUT:       44:              inst155
-// CHECK:STDOUT:       45:              inst156
-// CHECK:STDOUT:       46:              inst157
-// CHECK:STDOUT:       47:              inst158
-// CHECK:STDOUT:       48:              inst159
-// CHECK:STDOUT:       49:              inst160
-// CHECK:STDOUT:       50:              inst161
-// CHECK:STDOUT:       51:              inst166
-// CHECK:STDOUT:       52:              inst169
-// CHECK:STDOUT:       53:              inst170
-// CHECK:STDOUT:       54:              inst171
-// CHECK:STDOUT:       55:              inst172
-// CHECK:STDOUT:       56:              inst173
-// CHECK:STDOUT:       57:              inst180
-// CHECK:STDOUT:       58:              inst181
-// CHECK:STDOUT:       59:              inst182
-// CHECK:STDOUT:       60:              inst183
-// CHECK:STDOUT:       61:              inst184
-// CHECK:STDOUT:       62:              inst185
-// CHECK:STDOUT:       63:              inst186
-// CHECK:STDOUT:       64:              inst187
-// CHECK:STDOUT:       65:              inst188
-// CHECK:STDOUT:       66:              inst189
-// CHECK:STDOUT:       67:              inst193
-// CHECK:STDOUT:       68:              inst194
-// CHECK:STDOUT:       69:              inst195
-// CHECK:STDOUT:       70:              inst196
-// CHECK:STDOUT:       71:              inst197
-// CHECK:STDOUT:       72:              inst198
-// CHECK:STDOUT:       73:              inst199
-// CHECK:STDOUT:       74:              inst200
-// CHECK:STDOUT:       75:              inst208
-// CHECK:STDOUT:       76:              inst212
-// CHECK:STDOUT:       77:              inst213
-// CHECK:STDOUT:       78:              inst214
-// CHECK:STDOUT:       79:              inst215
-// CHECK:STDOUT:       80:              inst216
-// CHECK:STDOUT:       81:              inst217
-// CHECK:STDOUT:       82:              inst244
-// CHECK:STDOUT:       83:              inst245
-// CHECK:STDOUT:       84:              inst249
-// CHECK:STDOUT:       85:              inst250
-// CHECK:STDOUT:       86:              inst251
-// CHECK:STDOUT:       87:              inst252
-// CHECK:STDOUT:       88:              inst253
-// CHECK:STDOUT:       89:              inst254
-// CHECK:STDOUT:       90:              inst255
-// CHECK:STDOUT:       91:              inst256
-// CHECK:STDOUT:       92:              inst257
-// CHECK:STDOUT:       93:              inst258
-// CHECK:STDOUT:       94:              inst268
-// CHECK:STDOUT:       95:              inst272
-// CHECK:STDOUT:       96:              inst273
-// CHECK:STDOUT:       97:              inst274
-// CHECK:STDOUT:       98:              inst275
-// CHECK:STDOUT:       99:              inst276
-// CHECK:STDOUT:       100:             inst277
-// CHECK:STDOUT:       101:             inst278
+// CHECK:STDOUT:       0:               ir0.inst16
+// CHECK:STDOUT:       1:               ir0.inst69
+// CHECK:STDOUT:       2:               ir0.inst70
+// CHECK:STDOUT:       3:               ir0.inst73
+// CHECK:STDOUT:       4:               ir0.inst74
+// CHECK:STDOUT:       5:               ir0.inst75
+// CHECK:STDOUT:       6:               ir0.inst77
+// CHECK:STDOUT:       7:               ir0.inst79
+// CHECK:STDOUT:       8:               ir0.inst84
+// CHECK:STDOUT:       9:               ir0.inst85
+// CHECK:STDOUT:       10:              ir0.inst86
+// CHECK:STDOUT:       11:              ir0.inst87
+// CHECK:STDOUT:       12:              ir0.inst88
+// CHECK:STDOUT:       13:              ir0.inst93
+// CHECK:STDOUT:       14:              ir0.inst94
+// CHECK:STDOUT:       15:              ir0.inst99
+// CHECK:STDOUT:       16:              ir0.inst100
+// CHECK:STDOUT:       17:              ir0.inst101
+// CHECK:STDOUT:       18:              ir0.inst102
+// CHECK:STDOUT:       19:              ir0.inst103
+// CHECK:STDOUT:       20:              ir0.inst104
+// CHECK:STDOUT:       21:              ir0.inst110
+// CHECK:STDOUT:       22:              ir0.inst114
+// CHECK:STDOUT:       23:              ir0.inst115
+// CHECK:STDOUT:       24:              ir0.inst116
+// CHECK:STDOUT:       25:              ir0.inst117
+// CHECK:STDOUT:       26:              ir0.inst118
+// CHECK:STDOUT:       27:              ir0.inst138
+// CHECK:STDOUT:       28:              ir0.inst139
+// CHECK:STDOUT:       29:              ir0.inst140
+// CHECK:STDOUT:       30:              ir0.inst141
+// CHECK:STDOUT:       31:              ir0.inst142
+// CHECK:STDOUT:       32:              ir0.inst143
+// CHECK:STDOUT:       33:              ir0.inst144
+// CHECK:STDOUT:       34:              ir0.inst145
+// CHECK:STDOUT:       35:              ir0.inst146
+// CHECK:STDOUT:       36:              ir0.inst147
+// CHECK:STDOUT:       37:              ir0.inst148
+// CHECK:STDOUT:       38:              ir0.inst149
+// CHECK:STDOUT:       39:              ir0.inst150
+// CHECK:STDOUT:       40:              ir0.inst151
+// CHECK:STDOUT:       41:              ir0.inst152
+// CHECK:STDOUT:       42:              ir0.inst153
+// CHECK:STDOUT:       43:              ir0.inst154
+// CHECK:STDOUT:       44:              ir0.inst155
+// CHECK:STDOUT:       45:              ir0.inst156
+// CHECK:STDOUT:       46:              ir0.inst157
+// CHECK:STDOUT:       47:              ir0.inst158
+// CHECK:STDOUT:       48:              ir0.inst159
+// CHECK:STDOUT:       49:              ir0.inst160
+// CHECK:STDOUT:       50:              ir0.inst161
+// CHECK:STDOUT:       51:              ir0.inst166
+// CHECK:STDOUT:       52:              ir0.inst169
+// CHECK:STDOUT:       53:              ir0.inst170
+// CHECK:STDOUT:       54:              ir0.inst171
+// CHECK:STDOUT:       55:              ir0.inst172
+// CHECK:STDOUT:       56:              ir0.inst173
+// CHECK:STDOUT:       57:              ir0.inst180
+// CHECK:STDOUT:       58:              ir0.inst181
+// CHECK:STDOUT:       59:              ir0.inst182
+// CHECK:STDOUT:       60:              ir0.inst183
+// CHECK:STDOUT:       61:              ir0.inst184
+// CHECK:STDOUT:       62:              ir0.inst185
+// CHECK:STDOUT:       63:              ir0.inst186
+// CHECK:STDOUT:       64:              ir0.inst187
+// CHECK:STDOUT:       65:              ir0.inst188
+// CHECK:STDOUT:       66:              ir0.inst189
+// CHECK:STDOUT:       67:              ir0.inst193
+// CHECK:STDOUT:       68:              ir0.inst194
+// CHECK:STDOUT:       69:              ir0.inst195
+// CHECK:STDOUT:       70:              ir0.inst196
+// CHECK:STDOUT:       71:              ir0.inst197
+// CHECK:STDOUT:       72:              ir0.inst198
+// CHECK:STDOUT:       73:              ir0.inst199
+// CHECK:STDOUT:       74:              ir0.inst200
+// CHECK:STDOUT:       75:              ir0.inst208
+// CHECK:STDOUT:       76:              ir0.inst212
+// CHECK:STDOUT:       77:              ir0.inst213
+// CHECK:STDOUT:       78:              ir0.inst214
+// CHECK:STDOUT:       79:              ir0.inst215
+// CHECK:STDOUT:       80:              ir0.inst216
+// CHECK:STDOUT:       81:              ir0.inst217
+// CHECK:STDOUT:       82:              ir0.inst244
+// CHECK:STDOUT:       83:              ir0.inst245
+// CHECK:STDOUT:       84:              ir0.inst249
+// CHECK:STDOUT:       85:              ir0.inst250
+// CHECK:STDOUT:       86:              ir0.inst251
+// CHECK:STDOUT:       87:              ir0.inst252
+// CHECK:STDOUT:       88:              ir0.inst253
+// CHECK:STDOUT:       89:              ir0.inst254
+// CHECK:STDOUT:       90:              ir0.inst255
+// CHECK:STDOUT:       91:              ir0.inst256
+// CHECK:STDOUT:       92:              ir0.inst257
+// CHECK:STDOUT:       93:              ir0.inst258
+// CHECK:STDOUT:       94:              ir0.inst268
+// CHECK:STDOUT:       95:              ir0.inst272
+// CHECK:STDOUT:       96:              ir0.inst273
+// CHECK:STDOUT:       97:              ir0.inst274
+// CHECK:STDOUT:       98:              ir0.inst275
+// CHECK:STDOUT:       99:              ir0.inst276
+// CHECK:STDOUT:       100:             ir0.inst277
+// CHECK:STDOUT:       101:             ir0.inst278
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block4:
-// CHECK:STDOUT:       0:               inst18
+// CHECK:STDOUT:       0:               ir0.inst18
 // CHECK:STDOUT:     inst_block5:
-// CHECK:STDOUT:       0:               inst24
+// CHECK:STDOUT:       0:               ir0.inst24
 // CHECK:STDOUT:     inst_block6:
-// CHECK:STDOUT:       0:               inst25
-// CHECK:STDOUT:       1:               inst26
+// CHECK:STDOUT:       0:               ir0.inst25
+// CHECK:STDOUT:       1:               ir0.inst26
 // CHECK:STDOUT:     inst_block7:
-// CHECK:STDOUT:       0:               inst33
+// CHECK:STDOUT:       0:               ir0.inst33
 // CHECK:STDOUT:     inst_block8:
-// CHECK:STDOUT:       0:               inst35
-// CHECK:STDOUT:       1:               inst37
+// CHECK:STDOUT:       0:               ir0.inst35
+// CHECK:STDOUT:       1:               ir0.inst37
 // CHECK:STDOUT:     inst_block9:
 // CHECK:STDOUT:       0:               inst(TypeType)
-// CHECK:STDOUT:       1:               inst36
+// CHECK:STDOUT:       1:               ir0.inst36
 // CHECK:STDOUT:     inst_block10:
-// CHECK:STDOUT:       0:               inst35
-// CHECK:STDOUT:       1:               inst41
+// CHECK:STDOUT:       0:               ir0.inst35
+// CHECK:STDOUT:       1:               ir0.inst41
 // CHECK:STDOUT:     inst_block11:
-// CHECK:STDOUT:       0:               inst27
-// CHECK:STDOUT:       1:               inst36
+// CHECK:STDOUT:       0:               ir0.inst27
+// CHECK:STDOUT:       1:               ir0.inst36
 // CHECK:STDOUT:     inst_block12:
-// CHECK:STDOUT:       0:               inst28
-// CHECK:STDOUT:       1:               inst36
+// CHECK:STDOUT:       0:               ir0.inst28
+// CHECK:STDOUT:       1:               ir0.inst36
 // CHECK:STDOUT:     inst_block13:
-// CHECK:STDOUT:       0:               inst49
-// CHECK:STDOUT:       1:               inst51
+// CHECK:STDOUT:       0:               ir0.inst49
+// CHECK:STDOUT:       1:               ir0.inst51
 // CHECK:STDOUT:     inst_block14:
-// CHECK:STDOUT:       0:               inst24
-// CHECK:STDOUT:       1:               inst31
-// CHECK:STDOUT:       2:               inst33
-// CHECK:STDOUT:       3:               inst46
-// CHECK:STDOUT:       4:               inst48
+// CHECK:STDOUT:       0:               ir0.inst24
+// CHECK:STDOUT:       1:               ir0.inst31
+// CHECK:STDOUT:       2:               ir0.inst33
+// CHECK:STDOUT:       3:               ir0.inst46
+// CHECK:STDOUT:       4:               ir0.inst48
 // CHECK:STDOUT:     inst_block15:
-// CHECK:STDOUT:       0:               inst34
-// CHECK:STDOUT:       1:               inst35
-// CHECK:STDOUT:       2:               inst37
-// CHECK:STDOUT:       3:               inst39
-// CHECK:STDOUT:       4:               inst41
-// CHECK:STDOUT:       5:               inst43
-// CHECK:STDOUT:       6:               inst18
-// CHECK:STDOUT:       7:               inst20
-// CHECK:STDOUT:       8:               inst49
-// CHECK:STDOUT:       9:               inst50
-// CHECK:STDOUT:       10:              inst29
-// CHECK:STDOUT:       11:              inst51
-// CHECK:STDOUT:       12:              inst52
+// CHECK:STDOUT:       0:               ir0.inst34
+// CHECK:STDOUT:       1:               ir0.inst35
+// CHECK:STDOUT:       2:               ir0.inst37
+// CHECK:STDOUT:       3:               ir0.inst39
+// CHECK:STDOUT:       4:               ir0.inst41
+// CHECK:STDOUT:       5:               ir0.inst43
+// CHECK:STDOUT:       6:               ir0.inst18
+// CHECK:STDOUT:       7:               ir0.inst20
+// CHECK:STDOUT:       8:               ir0.inst49
+// CHECK:STDOUT:       9:               ir0.inst50
+// CHECK:STDOUT:       10:              ir0.inst29
+// CHECK:STDOUT:       11:              ir0.inst51
+// CHECK:STDOUT:       12:              ir0.inst52
 // CHECK:STDOUT:     inst_block16:
-// CHECK:STDOUT:       0:               inst20
+// CHECK:STDOUT:       0:               ir0.inst20
 // CHECK:STDOUT:     inst_block17:
-// CHECK:STDOUT:       0:               inst21
+// CHECK:STDOUT:       0:               ir0.inst21
 // CHECK:STDOUT:     inst_block18:
-// CHECK:STDOUT:       0:               inst22
-// CHECK:STDOUT:       1:               inst28
-// CHECK:STDOUT:       2:               inst32
-// CHECK:STDOUT:       3:               inst44
-// CHECK:STDOUT:       4:               inst47
+// CHECK:STDOUT:       0:               ir0.inst22
+// CHECK:STDOUT:       1:               ir0.inst28
+// CHECK:STDOUT:       2:               ir0.inst32
+// CHECK:STDOUT:       3:               ir0.inst44
+// CHECK:STDOUT:       4:               ir0.inst47
 // CHECK:STDOUT:     inst_block19:
-// CHECK:STDOUT:       0:               inst21
-// CHECK:STDOUT:       1:               inst27
-// CHECK:STDOUT:       2:               inst30
-// CHECK:STDOUT:       3:               inst42
-// CHECK:STDOUT:       4:               inst45
+// CHECK:STDOUT:       0:               ir0.inst21
+// CHECK:STDOUT:       1:               ir0.inst27
+// CHECK:STDOUT:       2:               ir0.inst30
+// CHECK:STDOUT:       3:               ir0.inst42
+// CHECK:STDOUT:       4:               ir0.inst45
 // CHECK:STDOUT:     inst_block20:
-// CHECK:STDOUT:       0:               inst63
-// CHECK:STDOUT:       1:               inst64
-// CHECK:STDOUT:       2:               inst65
-// CHECK:STDOUT:       3:               inst316
-// CHECK:STDOUT:       4:               inst321
-// CHECK:STDOUT:       5:               inst322
-// CHECK:STDOUT:       6:               inst325
-// CHECK:STDOUT:       7:               inst327
-// CHECK:STDOUT:       8:               inst67
-// CHECK:STDOUT:       9:               inst328
-// CHECK:STDOUT:       10:              inst329
-// CHECK:STDOUT:       11:              inst330
-// CHECK:STDOUT:       12:              inst332
-// CHECK:STDOUT:       13:              inst333
-// CHECK:STDOUT:       14:              inst334
-// CHECK:STDOUT:       15:              inst335
+// CHECK:STDOUT:       0:               ir0.inst63
+// CHECK:STDOUT:       1:               ir0.inst64
+// CHECK:STDOUT:       2:               ir0.inst65
+// CHECK:STDOUT:       3:               ir0.inst316
+// CHECK:STDOUT:       4:               ir0.inst321
+// CHECK:STDOUT:       5:               ir0.inst322
+// CHECK:STDOUT:       6:               ir0.inst325
+// CHECK:STDOUT:       7:               ir0.inst327
+// CHECK:STDOUT:       8:               ir0.inst67
+// CHECK:STDOUT:       9:               ir0.inst328
+// CHECK:STDOUT:       10:              ir0.inst329
+// CHECK:STDOUT:       11:              ir0.inst330
+// CHECK:STDOUT:       12:              ir0.inst332
+// CHECK:STDOUT:       13:              ir0.inst333
+// CHECK:STDOUT:       14:              ir0.inst334
+// CHECK:STDOUT:       15:              ir0.inst335
 // CHECK:STDOUT:     inst_block21:
-// CHECK:STDOUT:       0:               inst63
-// CHECK:STDOUT:       1:               inst64
+// CHECK:STDOUT:       0:               ir0.inst63
+// CHECK:STDOUT:       1:               ir0.inst64
 // CHECK:STDOUT:     inst_block22:
-// CHECK:STDOUT:       0:               inst75
+// CHECK:STDOUT:       0:               ir0.inst75
 // CHECK:STDOUT:     inst_block23:
-// CHECK:STDOUT:       0:               inst87
+// CHECK:STDOUT:       0:               ir0.inst87
 // CHECK:STDOUT:     inst_block24:
-// CHECK:STDOUT:       0:               inst88
+// CHECK:STDOUT:       0:               ir0.inst88
 // CHECK:STDOUT:     inst_block25:
-// CHECK:STDOUT:       0:               inst89
-// CHECK:STDOUT:       1:               inst90
-// CHECK:STDOUT:       2:               inst91
+// CHECK:STDOUT:       0:               ir0.inst89
+// CHECK:STDOUT:       1:               ir0.inst90
+// CHECK:STDOUT:       2:               ir0.inst91
 // CHECK:STDOUT:     inst_block26:
-// CHECK:STDOUT:       0:               inst72
+// CHECK:STDOUT:       0:               ir0.inst72
 // CHECK:STDOUT:     inst_block27:
-// CHECK:STDOUT:       0:               inst72
-// CHECK:STDOUT:       1:               inst82
-// CHECK:STDOUT:       2:               inst83
+// CHECK:STDOUT:       0:               ir0.inst72
+// CHECK:STDOUT:       1:               ir0.inst82
+// CHECK:STDOUT:       2:               ir0.inst83
 // CHECK:STDOUT:     inst_block28:
-// CHECK:STDOUT:       0:               inst99
+// CHECK:STDOUT:       0:               ir0.inst99
 // CHECK:STDOUT:     inst_block29:
-// CHECK:STDOUT:       0:               inst100
+// CHECK:STDOUT:       0:               ir0.inst100
 // CHECK:STDOUT:     inst_block30:
-// CHECK:STDOUT:       0:               inst103
+// CHECK:STDOUT:       0:               ir0.inst103
 // CHECK:STDOUT:     inst_block31:
-// CHECK:STDOUT:       0:               inst95
+// CHECK:STDOUT:       0:               ir0.inst95
 // CHECK:STDOUT:     inst_block32:
-// CHECK:STDOUT:       0:               inst106
+// CHECK:STDOUT:       0:               ir0.inst106
 // CHECK:STDOUT:     inst_block33:
-// CHECK:STDOUT:       0:               inst106
-// CHECK:STDOUT:       1:               inst107
-// CHECK:STDOUT:       2:               inst108
-// CHECK:STDOUT:       3:               inst109
+// CHECK:STDOUT:       0:               ir0.inst106
+// CHECK:STDOUT:       1:               ir0.inst107
+// CHECK:STDOUT:       2:               ir0.inst108
+// CHECK:STDOUT:       3:               ir0.inst109
 // CHECK:STDOUT:     inst_block34:
-// CHECK:STDOUT:       0:               inst95
-// CHECK:STDOUT:       1:               inst96
-// CHECK:STDOUT:       2:               inst97
-// CHECK:STDOUT:       3:               inst105
+// CHECK:STDOUT:       0:               ir0.inst95
+// CHECK:STDOUT:       1:               ir0.inst96
+// CHECK:STDOUT:       2:               ir0.inst97
+// CHECK:STDOUT:       3:               ir0.inst105
 // CHECK:STDOUT:     inst_block35:
-// CHECK:STDOUT:       0:               inst117
+// CHECK:STDOUT:       0:               ir0.inst117
 // CHECK:STDOUT:     inst_block36:
-// CHECK:STDOUT:       0:               inst118
+// CHECK:STDOUT:       0:               ir0.inst118
 // CHECK:STDOUT:     inst_block37:
-// CHECK:STDOUT:       0:               inst106
+// CHECK:STDOUT:       0:               ir0.inst106
 // CHECK:STDOUT:     inst_block38:
-// CHECK:STDOUT:       0:               inst119
-// CHECK:STDOUT:       1:               inst120
+// CHECK:STDOUT:       0:               ir0.inst119
+// CHECK:STDOUT:       1:               ir0.inst120
 // CHECK:STDOUT:     inst_block39:
-// CHECK:STDOUT:       0:               inst121
-// CHECK:STDOUT:       1:               inst122
-// CHECK:STDOUT:       2:               inst123
-// CHECK:STDOUT:       3:               inst124
+// CHECK:STDOUT:       0:               ir0.inst121
+// CHECK:STDOUT:       1:               ir0.inst122
+// CHECK:STDOUT:       2:               ir0.inst123
+// CHECK:STDOUT:       3:               ir0.inst124
 // CHECK:STDOUT:     inst_block40:
-// CHECK:STDOUT:       0:               inst95
-// CHECK:STDOUT:       1:               inst96
-// CHECK:STDOUT:       2:               inst97
-// CHECK:STDOUT:       3:               inst113
+// CHECK:STDOUT:       0:               ir0.inst95
+// CHECK:STDOUT:       1:               ir0.inst96
+// CHECK:STDOUT:       2:               ir0.inst97
+// CHECK:STDOUT:       3:               ir0.inst113
 // CHECK:STDOUT:     inst_block41:
-// CHECK:STDOUT:       0:               inst121
+// CHECK:STDOUT:       0:               ir0.inst121
 // CHECK:STDOUT:     inst_block42:
-// CHECK:STDOUT:       0:               inst131
-// CHECK:STDOUT:       1:               inst132
-// CHECK:STDOUT:       2:               inst133
-// CHECK:STDOUT:       3:               inst134
-// CHECK:STDOUT:       4:               inst135
-// CHECK:STDOUT:       5:               inst136
+// CHECK:STDOUT:       0:               ir0.inst131
+// CHECK:STDOUT:       1:               ir0.inst132
+// CHECK:STDOUT:       2:               ir0.inst133
+// CHECK:STDOUT:       3:               ir0.inst134
+// CHECK:STDOUT:       4:               ir0.inst135
+// CHECK:STDOUT:       5:               ir0.inst136
 // CHECK:STDOUT:     inst_block43:
-// CHECK:STDOUT:       0:               inst95
-// CHECK:STDOUT:       1:               inst96
-// CHECK:STDOUT:       2:               inst137
+// CHECK:STDOUT:       0:               ir0.inst95
+// CHECK:STDOUT:       1:               ir0.inst96
+// CHECK:STDOUT:       2:               ir0.inst137
 // CHECK:STDOUT:     inst_block44:
-// CHECK:STDOUT:       0:               inst111
-// CHECK:STDOUT:       1:               inst112
+// CHECK:STDOUT:       0:               ir0.inst111
+// CHECK:STDOUT:       1:               ir0.inst112
 // CHECK:STDOUT:     inst_block45:
-// CHECK:STDOUT:       0:               inst156
+// CHECK:STDOUT:       0:               ir0.inst156
 // CHECK:STDOUT:     inst_block46:
-// CHECK:STDOUT:       0:               inst157
+// CHECK:STDOUT:       0:               ir0.inst157
 // CHECK:STDOUT:     inst_block47:
-// CHECK:STDOUT:       0:               inst160
+// CHECK:STDOUT:       0:               ir0.inst160
 // CHECK:STDOUT:     inst_block48:
-// CHECK:STDOUT:       0:               inst163
+// CHECK:STDOUT:       0:               ir0.inst163
 // CHECK:STDOUT:     inst_block49:
-// CHECK:STDOUT:       0:               inst163
-// CHECK:STDOUT:       1:               inst164
-// CHECK:STDOUT:       2:               inst165
+// CHECK:STDOUT:       0:               ir0.inst163
+// CHECK:STDOUT:       1:               ir0.inst164
+// CHECK:STDOUT:       2:               ir0.inst165
 // CHECK:STDOUT:     inst_block50:
-// CHECK:STDOUT:       0:               inst21
-// CHECK:STDOUT:       1:               inst27
-// CHECK:STDOUT:       2:               inst162
+// CHECK:STDOUT:       0:               ir0.inst21
+// CHECK:STDOUT:       1:               ir0.inst27
+// CHECK:STDOUT:       2:               ir0.inst162
 // CHECK:STDOUT:     inst_block51:
-// CHECK:STDOUT:       0:               inst172
+// CHECK:STDOUT:       0:               ir0.inst172
 // CHECK:STDOUT:     inst_block52:
-// CHECK:STDOUT:       0:               inst173
+// CHECK:STDOUT:       0:               ir0.inst173
 // CHECK:STDOUT:     inst_block53:
-// CHECK:STDOUT:       0:               inst163
+// CHECK:STDOUT:       0:               ir0.inst163
 // CHECK:STDOUT:     inst_block54:
-// CHECK:STDOUT:       0:               inst174
-// CHECK:STDOUT:       1:               inst175
-// CHECK:STDOUT:       2:               inst176
+// CHECK:STDOUT:       0:               ir0.inst174
+// CHECK:STDOUT:       1:               ir0.inst175
+// CHECK:STDOUT:       2:               ir0.inst176
 // CHECK:STDOUT:     inst_block55:
-// CHECK:STDOUT:       0:               inst177
-// CHECK:STDOUT:       1:               inst178
-// CHECK:STDOUT:       2:               inst179
+// CHECK:STDOUT:       0:               ir0.inst177
+// CHECK:STDOUT:       1:               ir0.inst178
+// CHECK:STDOUT:       2:               ir0.inst179
 // CHECK:STDOUT:     inst_block56:
-// CHECK:STDOUT:       0:               inst21
-// CHECK:STDOUT:       1:               inst27
-// CHECK:STDOUT:       2:               inst30
+// CHECK:STDOUT:       0:               ir0.inst21
+// CHECK:STDOUT:       1:               ir0.inst27
+// CHECK:STDOUT:       2:               ir0.inst30
 // CHECK:STDOUT:     inst_block57:
-// CHECK:STDOUT:       0:               inst96
-// CHECK:STDOUT:       1:               inst191
+// CHECK:STDOUT:       0:               ir0.inst96
+// CHECK:STDOUT:       1:               ir0.inst191
 // CHECK:STDOUT:     inst_block58:
-// CHECK:STDOUT:       0:               inst194
-// CHECK:STDOUT:       1:               inst193
+// CHECK:STDOUT:       0:               ir0.inst194
+// CHECK:STDOUT:       1:               ir0.inst193
 // CHECK:STDOUT:     inst_block59:
-// CHECK:STDOUT:       0:               inst195
-// CHECK:STDOUT:       1:               inst196
+// CHECK:STDOUT:       0:               ir0.inst195
+// CHECK:STDOUT:       1:               ir0.inst196
 // CHECK:STDOUT:     inst_block60:
-// CHECK:STDOUT:       0:               inst199
+// CHECK:STDOUT:       0:               ir0.inst199
 // CHECK:STDOUT:     inst_block61:
-// CHECK:STDOUT:       0:               inst95
-// CHECK:STDOUT:       1:               inst190
+// CHECK:STDOUT:       0:               ir0.inst95
+// CHECK:STDOUT:       1:               ir0.inst190
 // CHECK:STDOUT:     inst_block62:
-// CHECK:STDOUT:       0:               inst204
-// CHECK:STDOUT:       1:               inst205
+// CHECK:STDOUT:       0:               ir0.inst204
+// CHECK:STDOUT:       1:               ir0.inst205
 // CHECK:STDOUT:     inst_block63:
-// CHECK:STDOUT:       0:               inst202
-// CHECK:STDOUT:       1:               inst203
+// CHECK:STDOUT:       0:               ir0.inst202
+// CHECK:STDOUT:       1:               ir0.inst203
 // CHECK:STDOUT:     inst_block64:
-// CHECK:STDOUT:       0:               inst202
-// CHECK:STDOUT:       1:               inst203
-// CHECK:STDOUT:       2:               inst204
-// CHECK:STDOUT:       3:               inst205
-// CHECK:STDOUT:       4:               inst206
-// CHECK:STDOUT:       5:               inst207
+// CHECK:STDOUT:       0:               ir0.inst202
+// CHECK:STDOUT:       1:               ir0.inst203
+// CHECK:STDOUT:       2:               ir0.inst204
+// CHECK:STDOUT:       3:               ir0.inst205
+// CHECK:STDOUT:       4:               ir0.inst206
+// CHECK:STDOUT:       5:               ir0.inst207
 // CHECK:STDOUT:     inst_block65:
-// CHECK:STDOUT:       0:               inst95
-// CHECK:STDOUT:       1:               inst190
-// CHECK:STDOUT:       2:               inst96
-// CHECK:STDOUT:       3:               inst191
-// CHECK:STDOUT:       4:               inst192
-// CHECK:STDOUT:       5:               inst201
+// CHECK:STDOUT:       0:               ir0.inst95
+// CHECK:STDOUT:       1:               ir0.inst190
+// CHECK:STDOUT:       2:               ir0.inst96
+// CHECK:STDOUT:       3:               ir0.inst191
+// CHECK:STDOUT:       4:               ir0.inst192
+// CHECK:STDOUT:       5:               ir0.inst201
 // CHECK:STDOUT:     inst_block66:
-// CHECK:STDOUT:       0:               inst215
+// CHECK:STDOUT:       0:               ir0.inst215
 // CHECK:STDOUT:     inst_block67:
-// CHECK:STDOUT:       0:               inst216
-// CHECK:STDOUT:       1:               inst217
+// CHECK:STDOUT:       0:               ir0.inst216
+// CHECK:STDOUT:       1:               ir0.inst217
 // CHECK:STDOUT:     inst_block68:
-// CHECK:STDOUT:       0:               inst202
-// CHECK:STDOUT:       1:               inst203
+// CHECK:STDOUT:       0:               ir0.inst202
+// CHECK:STDOUT:       1:               ir0.inst203
 // CHECK:STDOUT:     inst_block69:
-// CHECK:STDOUT:       0:               inst218
-// CHECK:STDOUT:       1:               inst219
+// CHECK:STDOUT:       0:               ir0.inst218
+// CHECK:STDOUT:       1:               ir0.inst219
 // CHECK:STDOUT:     inst_block70:
-// CHECK:STDOUT:       0:               inst221
-// CHECK:STDOUT:       1:               inst223
+// CHECK:STDOUT:       0:               ir0.inst221
+// CHECK:STDOUT:       1:               ir0.inst223
 // CHECK:STDOUT:     inst_block71:
-// CHECK:STDOUT:       0:               inst220
-// CHECK:STDOUT:       1:               inst221
-// CHECK:STDOUT:       2:               inst222
-// CHECK:STDOUT:       3:               inst223
-// CHECK:STDOUT:       4:               inst224
-// CHECK:STDOUT:       5:               inst225
+// CHECK:STDOUT:       0:               ir0.inst220
+// CHECK:STDOUT:       1:               ir0.inst221
+// CHECK:STDOUT:       2:               ir0.inst222
+// CHECK:STDOUT:       3:               ir0.inst223
+// CHECK:STDOUT:       4:               ir0.inst224
+// CHECK:STDOUT:       5:               ir0.inst225
 // CHECK:STDOUT:     inst_block72:
-// CHECK:STDOUT:       0:               inst95
-// CHECK:STDOUT:       1:               inst96
-// CHECK:STDOUT:       2:               inst190
-// CHECK:STDOUT:       3:               inst191
-// CHECK:STDOUT:       4:               inst192
-// CHECK:STDOUT:       5:               inst211
+// CHECK:STDOUT:       0:               ir0.inst95
+// CHECK:STDOUT:       1:               ir0.inst96
+// CHECK:STDOUT:       2:               ir0.inst190
+// CHECK:STDOUT:       3:               ir0.inst191
+// CHECK:STDOUT:       4:               ir0.inst192
+// CHECK:STDOUT:       5:               ir0.inst211
 // CHECK:STDOUT:     inst_block73:
-// CHECK:STDOUT:       0:               inst190
+// CHECK:STDOUT:       0:               ir0.inst190
 // CHECK:STDOUT:     inst_block74:
-// CHECK:STDOUT:       0:               inst220
+// CHECK:STDOUT:       0:               ir0.inst220
 // CHECK:STDOUT:     inst_block75:
-// CHECK:STDOUT:       0:               inst222
+// CHECK:STDOUT:       0:               ir0.inst222
 // CHECK:STDOUT:     inst_block76:
-// CHECK:STDOUT:       0:               inst232
-// CHECK:STDOUT:       1:               inst233
-// CHECK:STDOUT:       2:               inst234
-// CHECK:STDOUT:       3:               inst235
-// CHECK:STDOUT:       4:               inst236
-// CHECK:STDOUT:       5:               inst237
-// CHECK:STDOUT:       6:               inst238
-// CHECK:STDOUT:       7:               inst239
-// CHECK:STDOUT:       8:               inst240
-// CHECK:STDOUT:       9:               inst241
-// CHECK:STDOUT:       10:              inst242
+// CHECK:STDOUT:       0:               ir0.inst232
+// CHECK:STDOUT:       1:               ir0.inst233
+// CHECK:STDOUT:       2:               ir0.inst234
+// CHECK:STDOUT:       3:               ir0.inst235
+// CHECK:STDOUT:       4:               ir0.inst236
+// CHECK:STDOUT:       5:               ir0.inst237
+// CHECK:STDOUT:       6:               ir0.inst238
+// CHECK:STDOUT:       7:               ir0.inst239
+// CHECK:STDOUT:       8:               ir0.inst240
+// CHECK:STDOUT:       9:               ir0.inst241
+// CHECK:STDOUT:       10:              ir0.inst242
 // CHECK:STDOUT:     inst_block77:
-// CHECK:STDOUT:       0:               inst190
-// CHECK:STDOUT:       1:               inst191
-// CHECK:STDOUT:       2:               inst243
+// CHECK:STDOUT:       0:               ir0.inst190
+// CHECK:STDOUT:       1:               ir0.inst191
+// CHECK:STDOUT:       2:               ir0.inst243
 // CHECK:STDOUT:     inst_block78:
-// CHECK:STDOUT:       0:               inst209
-// CHECK:STDOUT:       1:               inst210
+// CHECK:STDOUT:       0:               ir0.inst209
+// CHECK:STDOUT:       1:               ir0.inst210
 // CHECK:STDOUT:     inst_block79:
-// CHECK:STDOUT:       0:               inst96
-// CHECK:STDOUT:       1:               inst191
-// CHECK:STDOUT:       2:               inst247
+// CHECK:STDOUT:       0:               ir0.inst96
+// CHECK:STDOUT:       1:               ir0.inst191
+// CHECK:STDOUT:       2:               ir0.inst247
 // CHECK:STDOUT:     inst_block80:
-// CHECK:STDOUT:       0:               inst251
-// CHECK:STDOUT:       1:               inst250
-// CHECK:STDOUT:       2:               inst249
+// CHECK:STDOUT:       0:               ir0.inst251
+// CHECK:STDOUT:       1:               ir0.inst250
+// CHECK:STDOUT:       2:               ir0.inst249
 // CHECK:STDOUT:     inst_block81:
-// CHECK:STDOUT:       0:               inst252
-// CHECK:STDOUT:       1:               inst253
-// CHECK:STDOUT:       2:               inst254
+// CHECK:STDOUT:       0:               ir0.inst252
+// CHECK:STDOUT:       1:               ir0.inst253
+// CHECK:STDOUT:       2:               ir0.inst254
 // CHECK:STDOUT:     inst_block82:
-// CHECK:STDOUT:       0:               inst257
+// CHECK:STDOUT:       0:               ir0.inst257
 // CHECK:STDOUT:     inst_block83:
-// CHECK:STDOUT:       0:               inst95
-// CHECK:STDOUT:       1:               inst190
-// CHECK:STDOUT:       2:               inst246
+// CHECK:STDOUT:       0:               ir0.inst95
+// CHECK:STDOUT:       1:               ir0.inst190
+// CHECK:STDOUT:       2:               ir0.inst246
 // CHECK:STDOUT:     inst_block84:
-// CHECK:STDOUT:       0:               inst263
-// CHECK:STDOUT:       1:               inst264
-// CHECK:STDOUT:       2:               inst265
+// CHECK:STDOUT:       0:               ir0.inst263
+// CHECK:STDOUT:       1:               ir0.inst264
+// CHECK:STDOUT:       2:               ir0.inst265
 // CHECK:STDOUT:     inst_block85:
-// CHECK:STDOUT:       0:               inst260
-// CHECK:STDOUT:       1:               inst261
-// CHECK:STDOUT:       2:               inst262
+// CHECK:STDOUT:       0:               ir0.inst260
+// CHECK:STDOUT:       1:               ir0.inst261
+// CHECK:STDOUT:       2:               ir0.inst262
 // CHECK:STDOUT:     inst_block86:
-// CHECK:STDOUT:       0:               inst260
-// CHECK:STDOUT:       1:               inst261
-// CHECK:STDOUT:       2:               inst262
-// CHECK:STDOUT:       3:               inst263
-// CHECK:STDOUT:       4:               inst264
-// CHECK:STDOUT:       5:               inst265
-// CHECK:STDOUT:       6:               inst266
-// CHECK:STDOUT:       7:               inst267
+// CHECK:STDOUT:       0:               ir0.inst260
+// CHECK:STDOUT:       1:               ir0.inst261
+// CHECK:STDOUT:       2:               ir0.inst262
+// CHECK:STDOUT:       3:               ir0.inst263
+// CHECK:STDOUT:       4:               ir0.inst264
+// CHECK:STDOUT:       5:               ir0.inst265
+// CHECK:STDOUT:       6:               ir0.inst266
+// CHECK:STDOUT:       7:               ir0.inst267
 // CHECK:STDOUT:     inst_block87:
-// CHECK:STDOUT:       0:               inst95
-// CHECK:STDOUT:       1:               inst190
-// CHECK:STDOUT:       2:               inst246
-// CHECK:STDOUT:       3:               inst96
-// CHECK:STDOUT:       4:               inst191
-// CHECK:STDOUT:       5:               inst247
-// CHECK:STDOUT:       6:               inst248
-// CHECK:STDOUT:       7:               inst259
+// CHECK:STDOUT:       0:               ir0.inst95
+// CHECK:STDOUT:       1:               ir0.inst190
+// CHECK:STDOUT:       2:               ir0.inst246
+// CHECK:STDOUT:       3:               ir0.inst96
+// CHECK:STDOUT:       4:               ir0.inst191
+// CHECK:STDOUT:       5:               ir0.inst247
+// CHECK:STDOUT:       6:               ir0.inst248
+// CHECK:STDOUT:       7:               ir0.inst259
 // CHECK:STDOUT:     inst_block88:
-// CHECK:STDOUT:       0:               inst275
+// CHECK:STDOUT:       0:               ir0.inst275
 // CHECK:STDOUT:     inst_block89:
-// CHECK:STDOUT:       0:               inst276
-// CHECK:STDOUT:       1:               inst277
-// CHECK:STDOUT:       2:               inst278
+// CHECK:STDOUT:       0:               ir0.inst276
+// CHECK:STDOUT:       1:               ir0.inst277
+// CHECK:STDOUT:       2:               ir0.inst278
 // CHECK:STDOUT:     inst_block90:
-// CHECK:STDOUT:       0:               inst260
-// CHECK:STDOUT:       1:               inst261
-// CHECK:STDOUT:       2:               inst262
+// CHECK:STDOUT:       0:               ir0.inst260
+// CHECK:STDOUT:       1:               ir0.inst261
+// CHECK:STDOUT:       2:               ir0.inst262
 // CHECK:STDOUT:     inst_block91:
-// CHECK:STDOUT:       0:               inst279
-// CHECK:STDOUT:       1:               inst280
+// CHECK:STDOUT:       0:               ir0.inst279
+// CHECK:STDOUT:       1:               ir0.inst280
 // CHECK:STDOUT:     inst_block92:
-// CHECK:STDOUT:       0:               inst282
-// CHECK:STDOUT:       1:               inst284
-// CHECK:STDOUT:       2:               inst286
+// CHECK:STDOUT:       0:               ir0.inst282
+// CHECK:STDOUT:       1:               ir0.inst284
+// CHECK:STDOUT:       2:               ir0.inst286
 // CHECK:STDOUT:     inst_block93:
-// CHECK:STDOUT:       0:               inst281
-// CHECK:STDOUT:       1:               inst282
-// CHECK:STDOUT:       2:               inst283
-// CHECK:STDOUT:       3:               inst284
-// CHECK:STDOUT:       4:               inst285
-// CHECK:STDOUT:       5:               inst286
-// CHECK:STDOUT:       6:               inst287
-// CHECK:STDOUT:       7:               inst288
+// CHECK:STDOUT:       0:               ir0.inst281
+// CHECK:STDOUT:       1:               ir0.inst282
+// CHECK:STDOUT:       2:               ir0.inst283
+// CHECK:STDOUT:       3:               ir0.inst284
+// CHECK:STDOUT:       4:               ir0.inst285
+// CHECK:STDOUT:       5:               ir0.inst286
+// CHECK:STDOUT:       6:               ir0.inst287
+// CHECK:STDOUT:       7:               ir0.inst288
 // CHECK:STDOUT:     inst_block94:
-// CHECK:STDOUT:       0:               inst95
-// CHECK:STDOUT:       1:               inst96
-// CHECK:STDOUT:       2:               inst190
-// CHECK:STDOUT:       3:               inst191
-// CHECK:STDOUT:       4:               inst246
-// CHECK:STDOUT:       5:               inst247
-// CHECK:STDOUT:       6:               inst248
-// CHECK:STDOUT:       7:               inst271
+// CHECK:STDOUT:       0:               ir0.inst95
+// CHECK:STDOUT:       1:               ir0.inst96
+// CHECK:STDOUT:       2:               ir0.inst190
+// CHECK:STDOUT:       3:               ir0.inst191
+// CHECK:STDOUT:       4:               ir0.inst246
+// CHECK:STDOUT:       5:               ir0.inst247
+// CHECK:STDOUT:       6:               ir0.inst248
+// CHECK:STDOUT:       7:               ir0.inst271
 // CHECK:STDOUT:     inst_block95:
-// CHECK:STDOUT:       0:               inst246
+// CHECK:STDOUT:       0:               ir0.inst246
 // CHECK:STDOUT:     inst_block96:
-// CHECK:STDOUT:       0:               inst281
+// CHECK:STDOUT:       0:               ir0.inst281
 // CHECK:STDOUT:     inst_block97:
-// CHECK:STDOUT:       0:               inst283
+// CHECK:STDOUT:       0:               ir0.inst283
 // CHECK:STDOUT:     inst_block98:
-// CHECK:STDOUT:       0:               inst285
+// CHECK:STDOUT:       0:               ir0.inst285
 // CHECK:STDOUT:     inst_block99:
-// CHECK:STDOUT:       0:               inst295
-// CHECK:STDOUT:       1:               inst296
-// CHECK:STDOUT:       2:               inst297
-// CHECK:STDOUT:       3:               inst298
-// CHECK:STDOUT:       4:               inst299
-// CHECK:STDOUT:       5:               inst300
-// CHECK:STDOUT:       6:               inst301
-// CHECK:STDOUT:       7:               inst302
-// CHECK:STDOUT:       8:               inst303
-// CHECK:STDOUT:       9:               inst304
-// CHECK:STDOUT:       10:              inst305
-// CHECK:STDOUT:       11:              inst306
-// CHECK:STDOUT:       12:              inst307
-// CHECK:STDOUT:       13:              inst308
-// CHECK:STDOUT:       14:              inst309
-// CHECK:STDOUT:       15:              inst310
+// CHECK:STDOUT:       0:               ir0.inst295
+// CHECK:STDOUT:       1:               ir0.inst296
+// CHECK:STDOUT:       2:               ir0.inst297
+// CHECK:STDOUT:       3:               ir0.inst298
+// CHECK:STDOUT:       4:               ir0.inst299
+// CHECK:STDOUT:       5:               ir0.inst300
+// CHECK:STDOUT:       6:               ir0.inst301
+// CHECK:STDOUT:       7:               ir0.inst302
+// CHECK:STDOUT:       8:               ir0.inst303
+// CHECK:STDOUT:       9:               ir0.inst304
+// CHECK:STDOUT:       10:              ir0.inst305
+// CHECK:STDOUT:       11:              ir0.inst306
+// CHECK:STDOUT:       12:              ir0.inst307
+// CHECK:STDOUT:       13:              ir0.inst308
+// CHECK:STDOUT:       14:              ir0.inst309
+// CHECK:STDOUT:       15:              ir0.inst310
 // CHECK:STDOUT:     inst_block100:
-// CHECK:STDOUT:       0:               inst246
-// CHECK:STDOUT:       1:               inst247
-// CHECK:STDOUT:       2:               inst311
+// CHECK:STDOUT:       0:               ir0.inst246
+// CHECK:STDOUT:       1:               ir0.inst247
+// CHECK:STDOUT:       2:               ir0.inst311
 // CHECK:STDOUT:     inst_block101:
-// CHECK:STDOUT:       0:               inst269
-// CHECK:STDOUT:       1:               inst270
+// CHECK:STDOUT:       0:               ir0.inst269
+// CHECK:STDOUT:       1:               ir0.inst270
 // CHECK:STDOUT:     inst_block102:
-// CHECK:STDOUT:       0:               inst167
-// CHECK:STDOUT:       1:               inst168
-// CHECK:STDOUT:       2:               inst61
+// CHECK:STDOUT:       0:               ir0.inst167
+// CHECK:STDOUT:       1:               ir0.inst168
+// CHECK:STDOUT:       2:               ir0.inst61
 // CHECK:STDOUT:     inst_block103:
-// CHECK:STDOUT:       0:               inst312
+// CHECK:STDOUT:       0:               ir0.inst312
 // CHECK:STDOUT:     inst_block104:
-// CHECK:STDOUT:       0:               inst313
+// CHECK:STDOUT:       0:               ir0.inst313
 // CHECK:STDOUT:     inst_block105:
-// CHECK:STDOUT:       0:               inst314
+// CHECK:STDOUT:       0:               ir0.inst314
 // CHECK:STDOUT:     inst_block106:
-// CHECK:STDOUT:       0:               inst314
-// CHECK:STDOUT:       1:               inst27
-// CHECK:STDOUT:       2:               inst30
+// CHECK:STDOUT:       0:               ir0.inst314
+// CHECK:STDOUT:       1:               ir0.inst27
+// CHECK:STDOUT:       2:               ir0.inst30
 // CHECK:STDOUT:     inst_block107:
-// CHECK:STDOUT:       0:               inst318
+// CHECK:STDOUT:       0:               ir0.inst318
 // CHECK:STDOUT:     inst_block108:
-// CHECK:STDOUT:       0:               inst63
+// CHECK:STDOUT:       0:               ir0.inst63
 // CHECK:STDOUT:     inst_block109:
-// CHECK:STDOUT:       0:               inst328
-// CHECK:STDOUT:       1:               inst332
+// CHECK:STDOUT:       0:               ir0.inst328
+// CHECK:STDOUT:       1:               ir0.inst332
 // CHECK:STDOUT:     inst_block110:
-// CHECK:STDOUT:       0:               inst59
-// CHECK:STDOUT:       1:               inst62
-// CHECK:STDOUT:       2:               inst313
-// CHECK:STDOUT:       3:               inst318
-// CHECK:STDOUT:       4:               inst319
-// CHECK:STDOUT:       5:               inst320
-// CHECK:STDOUT:       6:               inst324
+// CHECK:STDOUT:       0:               ir0.inst59
+// CHECK:STDOUT:       1:               ir0.inst62
+// CHECK:STDOUT:       2:               ir0.inst313
+// CHECK:STDOUT:       3:               ir0.inst318
+// CHECK:STDOUT:       4:               ir0.inst319
+// CHECK:STDOUT:       5:               ir0.inst320
+// CHECK:STDOUT:       6:               ir0.inst324
 // CHECK:STDOUT:     inst_block111:
 // CHECK:STDOUT:       0:               inst14
-// CHECK:STDOUT:       1:               inst15
-// CHECK:STDOUT:       2:               inst53
+// CHECK:STDOUT:       1:               ir0.inst15
+// CHECK:STDOUT:       2:               ir0.inst53
 // CHECK:STDOUT: ...

+ 120 - 120
toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon

@@ -26,11 +26,11 @@ fn Foo(n: ()) -> ((), ()) {
 // CHECK:STDOUT:   import_ir_insts: {}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst37}}
+// CHECK:STDOUT:     name_scope0:     {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: ir0.inst37}}
 // CHECK:STDOUT:   entity_names:
 // CHECK:STDOUT:     entity_name0:    {name: name1, parent_scope: name_scope<none>, index: -1, is_template: 0, clang_decl_id: clang_decl_id<none>}
 // CHECK:STDOUT:   functions:
-// CHECK:STDOUT:     function0:       {name: name0, parent_scope: name_scope0, call_params_id: inst_block9, return_slot_pattern: inst32, body: [inst_block12]}
+// CHECK:STDOUT:     function0:       {name: name0, parent_scope: name_scope0, call_params_id: inst_block9, return_slot_pattern: ir0.inst32, body: [inst_block12]}
 // CHECK:STDOUT:   classes:         {}
 // CHECK:STDOUT:   generics:        {}
 // CHECK:STDOUT:   specifics:       {}
@@ -43,150 +43,150 @@ fn Foo(n: ()) -> ((), ()) {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     'type(inst15)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst15)}
-// CHECK:STDOUT:     'type(inst24)':
-// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst26)}
-// CHECK:STDOUT:     'type(inst26)':
-// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst26)}
-// CHECK:STDOUT:     'type(inst38)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst15)}
+// CHECK:STDOUT:     'type(ir0.inst15)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst15)}
+// CHECK:STDOUT:     'type(ir0.inst24)':
+// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(ir0.inst26)}
+// CHECK:STDOUT:     'type(ir0.inst26)':
+// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(ir0.inst26)}
+// CHECK:STDOUT:     'type(ir0.inst38)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(ir0.inst15)}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     inst14:          {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst15:          {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst16:          {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst15)}
-// CHECK:STDOUT:     inst17:          {kind: Converted, arg0: inst16, arg1: inst15, type: type(TypeType)}
-// CHECK:STDOUT:     inst18:          {kind: BindName, arg0: entity_name0, arg1: inst33, type: type(inst15)}
-// CHECK:STDOUT:     inst19:          {kind: PatternType, arg0: inst15, type: type(TypeType)}
-// CHECK:STDOUT:     inst20:          {kind: BindingPattern, arg0: entity_name0, type: type(inst19)}
-// CHECK:STDOUT:     inst21:          {kind: ValueParamPattern, arg0: inst20, arg1: call_param0, type: type(inst19)}
-// CHECK:STDOUT:     inst22:          {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst15)}
-// CHECK:STDOUT:     inst23:          {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst15)}
-// CHECK:STDOUT:     inst24:          {kind: TupleType, arg0: inst_block7, type: type(TypeType)}
-// CHECK:STDOUT:     inst25:          {kind: TupleLiteral, arg0: inst_block6, type: type(inst24)}
-// CHECK:STDOUT:     inst26:          {kind: PointerType, arg0: inst24, type: type(TypeType)}
-// CHECK:STDOUT:     inst27:          {kind: Converted, arg0: inst22, arg1: inst15, type: type(TypeType)}
-// CHECK:STDOUT:     inst28:          {kind: Converted, arg0: inst23, arg1: inst15, type: type(TypeType)}
-// CHECK:STDOUT:     inst29:          {kind: Converted, arg0: inst25, arg1: inst24, type: type(TypeType)}
-// CHECK:STDOUT:     inst30:          {kind: PatternType, arg0: inst24, type: type(TypeType)}
-// CHECK:STDOUT:     inst31:          {kind: ReturnSlotPattern, arg0: inst29, type: type(inst30)}
-// CHECK:STDOUT:     inst32:          {kind: OutParamPattern, arg0: inst31, arg1: call_param1, type: type(inst30)}
-// CHECK:STDOUT:     inst33:          {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst15)}
-// CHECK:STDOUT:     inst34:          {kind: SpliceBlock, arg0: inst_block4, arg1: inst17, type: type(TypeType)}
-// CHECK:STDOUT:     inst35:          {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(inst24)}
-// CHECK:STDOUT:     inst36:          {kind: ReturnSlot, arg0: inst24, arg1: inst35, type: type(inst24)}
-// CHECK:STDOUT:     inst37:          {kind: FunctionDecl, arg0: function0, arg1: inst_block11, type: type(inst38)}
-// CHECK:STDOUT:     inst38:          {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst39:          {kind: StructValue, arg0: inst_block_empty, type: type(inst38)}
-// CHECK:STDOUT:     inst40:          {kind: NameRef, arg0: name1, arg1: inst18, type: type(inst15)}
-// CHECK:STDOUT:     inst41:          {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst15)}
-// CHECK:STDOUT:     inst42:          {kind: TupleLiteral, arg0: inst_block13, type: type(inst24)}
-// CHECK:STDOUT:     inst43:          {kind: TupleAccess, arg0: inst36, arg1: element0, type: type(inst15)}
-// CHECK:STDOUT:     inst44:          {kind: TupleInit, arg0: inst_block14, arg1: inst43, type: type(inst15)}
-// CHECK:STDOUT:     inst45:          {kind: TupleValue, arg0: inst_block_empty, type: type(inst15)}
-// CHECK:STDOUT:     inst46:          {kind: Converted, arg0: inst40, arg1: inst44, type: type(inst15)}
-// CHECK:STDOUT:     inst47:          {kind: TupleAccess, arg0: inst36, arg1: element1, type: type(inst15)}
-// CHECK:STDOUT:     inst48:          {kind: TupleInit, arg0: inst_block_empty, arg1: inst47, type: type(inst15)}
-// CHECK:STDOUT:     inst49:          {kind: Converted, arg0: inst41, arg1: inst48, type: type(inst15)}
-// CHECK:STDOUT:     inst50:          {kind: TupleInit, arg0: inst_block15, arg1: inst36, type: type(inst24)}
-// CHECK:STDOUT:     inst51:          {kind: TupleValue, arg0: inst_block16, type: type(inst24)}
-// CHECK:STDOUT:     inst52:          {kind: Converted, arg0: inst42, arg1: inst50, type: type(inst24)}
-// CHECK:STDOUT:     inst53:          {kind: ReturnExpr, arg0: inst52, arg1: inst36}
+// CHECK:STDOUT:     ir0.inst15:      {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst16:      {kind: TupleLiteral, arg0: inst_block_empty, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst17:      {kind: Converted, arg0: ir0.inst16, arg1: ir0.inst15, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst18:      {kind: BindName, arg0: entity_name0, arg1: ir0.inst33, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst19:      {kind: PatternType, arg0: ir0.inst15, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst20:      {kind: BindingPattern, arg0: entity_name0, type: type(ir0.inst19)}
+// CHECK:STDOUT:     ir0.inst21:      {kind: ValueParamPattern, arg0: ir0.inst20, arg1: call_param0, type: type(ir0.inst19)}
+// CHECK:STDOUT:     ir0.inst22:      {kind: TupleLiteral, arg0: inst_block_empty, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst23:      {kind: TupleLiteral, arg0: inst_block_empty, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst24:      {kind: TupleType, arg0: inst_block7, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst25:      {kind: TupleLiteral, arg0: inst_block6, type: type(ir0.inst24)}
+// CHECK:STDOUT:     ir0.inst26:      {kind: PointerType, arg0: ir0.inst24, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst27:      {kind: Converted, arg0: ir0.inst22, arg1: ir0.inst15, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst28:      {kind: Converted, arg0: ir0.inst23, arg1: ir0.inst15, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst29:      {kind: Converted, arg0: ir0.inst25, arg1: ir0.inst24, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst30:      {kind: PatternType, arg0: ir0.inst24, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst31:      {kind: ReturnSlotPattern, arg0: ir0.inst29, type: type(ir0.inst30)}
+// CHECK:STDOUT:     ir0.inst32:      {kind: OutParamPattern, arg0: ir0.inst31, arg1: call_param1, type: type(ir0.inst30)}
+// CHECK:STDOUT:     ir0.inst33:      {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst34:      {kind: SpliceBlock, arg0: inst_block4, arg1: ir0.inst17, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst35:      {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(ir0.inst24)}
+// CHECK:STDOUT:     ir0.inst36:      {kind: ReturnSlot, arg0: ir0.inst24, arg1: ir0.inst35, type: type(ir0.inst24)}
+// CHECK:STDOUT:     ir0.inst37:      {kind: FunctionDecl, arg0: function0, arg1: inst_block11, type: type(ir0.inst38)}
+// CHECK:STDOUT:     ir0.inst38:      {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     ir0.inst39:      {kind: StructValue, arg0: inst_block_empty, type: type(ir0.inst38)}
+// CHECK:STDOUT:     ir0.inst40:      {kind: NameRef, arg0: name1, arg1: ir0.inst18, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst41:      {kind: TupleLiteral, arg0: inst_block_empty, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst42:      {kind: TupleLiteral, arg0: inst_block13, type: type(ir0.inst24)}
+// CHECK:STDOUT:     ir0.inst43:      {kind: TupleAccess, arg0: ir0.inst36, arg1: element0, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst44:      {kind: TupleInit, arg0: inst_block14, arg1: ir0.inst43, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst45:      {kind: TupleValue, arg0: inst_block_empty, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst46:      {kind: Converted, arg0: ir0.inst40, arg1: ir0.inst44, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst47:      {kind: TupleAccess, arg0: ir0.inst36, arg1: element1, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst48:      {kind: TupleInit, arg0: inst_block_empty, arg1: ir0.inst47, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst49:      {kind: Converted, arg0: ir0.inst41, arg1: ir0.inst48, type: type(ir0.inst15)}
+// CHECK:STDOUT:     ir0.inst50:      {kind: TupleInit, arg0: inst_block15, arg1: ir0.inst36, type: type(ir0.inst24)}
+// CHECK:STDOUT:     ir0.inst51:      {kind: TupleValue, arg0: inst_block16, type: type(ir0.inst24)}
+// CHECK:STDOUT:     ir0.inst52:      {kind: Converted, arg0: ir0.inst42, arg1: ir0.inst50, type: type(ir0.inst24)}
+// CHECK:STDOUT:     ir0.inst53:      {kind: ReturnExpr, arg0: ir0.inst52, arg1: ir0.inst36}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
 // CHECK:STDOUT:       inst14:          concrete_constant(inst14)
-// CHECK:STDOUT:       inst15:          concrete_constant(inst15)
-// CHECK:STDOUT:       inst17:          concrete_constant(inst15)
-// CHECK:STDOUT:       inst19:          concrete_constant(inst19)
-// CHECK:STDOUT:       inst20:          concrete_constant(inst20)
-// CHECK:STDOUT:       inst21:          concrete_constant(inst21)
-// CHECK:STDOUT:       inst24:          concrete_constant(inst24)
-// CHECK:STDOUT:       inst26:          concrete_constant(inst26)
-// CHECK:STDOUT:       inst27:          concrete_constant(inst15)
-// CHECK:STDOUT:       inst28:          concrete_constant(inst15)
-// CHECK:STDOUT:       inst29:          concrete_constant(inst24)
-// CHECK:STDOUT:       inst30:          concrete_constant(inst30)
-// CHECK:STDOUT:       inst31:          concrete_constant(inst31)
-// CHECK:STDOUT:       inst32:          concrete_constant(inst32)
-// CHECK:STDOUT:       inst34:          concrete_constant(inst15)
-// CHECK:STDOUT:       inst37:          concrete_constant(inst39)
-// CHECK:STDOUT:       inst38:          concrete_constant(inst38)
-// CHECK:STDOUT:       inst39:          concrete_constant(inst39)
-// CHECK:STDOUT:       inst44:          concrete_constant(inst45)
-// CHECK:STDOUT:       inst45:          concrete_constant(inst45)
-// CHECK:STDOUT:       inst46:          concrete_constant(inst45)
-// CHECK:STDOUT:       inst48:          concrete_constant(inst45)
-// CHECK:STDOUT:       inst49:          concrete_constant(inst45)
-// CHECK:STDOUT:       inst50:          concrete_constant(inst51)
-// CHECK:STDOUT:       inst51:          concrete_constant(inst51)
-// CHECK:STDOUT:       inst52:          concrete_constant(inst51)
+// CHECK:STDOUT:       ir0.inst15:      concrete_constant(ir0.inst15)
+// CHECK:STDOUT:       ir0.inst17:      concrete_constant(ir0.inst15)
+// CHECK:STDOUT:       ir0.inst19:      concrete_constant(ir0.inst19)
+// CHECK:STDOUT:       ir0.inst20:      concrete_constant(ir0.inst20)
+// CHECK:STDOUT:       ir0.inst21:      concrete_constant(ir0.inst21)
+// CHECK:STDOUT:       ir0.inst24:      concrete_constant(ir0.inst24)
+// CHECK:STDOUT:       ir0.inst26:      concrete_constant(ir0.inst26)
+// CHECK:STDOUT:       ir0.inst27:      concrete_constant(ir0.inst15)
+// CHECK:STDOUT:       ir0.inst28:      concrete_constant(ir0.inst15)
+// CHECK:STDOUT:       ir0.inst29:      concrete_constant(ir0.inst24)
+// CHECK:STDOUT:       ir0.inst30:      concrete_constant(ir0.inst30)
+// CHECK:STDOUT:       ir0.inst31:      concrete_constant(ir0.inst31)
+// CHECK:STDOUT:       ir0.inst32:      concrete_constant(ir0.inst32)
+// CHECK:STDOUT:       ir0.inst34:      concrete_constant(ir0.inst15)
+// CHECK:STDOUT:       ir0.inst37:      concrete_constant(ir0.inst39)
+// CHECK:STDOUT:       ir0.inst38:      concrete_constant(ir0.inst38)
+// CHECK:STDOUT:       ir0.inst39:      concrete_constant(ir0.inst39)
+// CHECK:STDOUT:       ir0.inst44:      concrete_constant(ir0.inst45)
+// CHECK:STDOUT:       ir0.inst45:      concrete_constant(ir0.inst45)
+// CHECK:STDOUT:       ir0.inst46:      concrete_constant(ir0.inst45)
+// CHECK:STDOUT:       ir0.inst48:      concrete_constant(ir0.inst45)
+// CHECK:STDOUT:       ir0.inst49:      concrete_constant(ir0.inst45)
+// CHECK:STDOUT:       ir0.inst50:      concrete_constant(ir0.inst51)
+// CHECK:STDOUT:       ir0.inst51:      concrete_constant(ir0.inst51)
+// CHECK:STDOUT:       ir0.inst52:      concrete_constant(ir0.inst51)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst37
+// CHECK:STDOUT:       0:               ir0.inst37
 // CHECK:STDOUT:     imports:         {}
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block4:
-// CHECK:STDOUT:       0:               inst16
-// CHECK:STDOUT:       1:               inst17
+// CHECK:STDOUT:       0:               ir0.inst16
+// CHECK:STDOUT:       1:               ir0.inst17
 // CHECK:STDOUT:     inst_block5:
-// CHECK:STDOUT:       0:               inst21
+// CHECK:STDOUT:       0:               ir0.inst21
 // CHECK:STDOUT:     inst_block6:
-// CHECK:STDOUT:       0:               inst22
-// CHECK:STDOUT:       1:               inst23
+// CHECK:STDOUT:       0:               ir0.inst22
+// CHECK:STDOUT:       1:               ir0.inst23
 // CHECK:STDOUT:     inst_block7:
-// CHECK:STDOUT:       0:               inst15
-// CHECK:STDOUT:       1:               inst15
+// CHECK:STDOUT:       0:               ir0.inst15
+// CHECK:STDOUT:       1:               ir0.inst15
 // CHECK:STDOUT:     inst_block8:
-// CHECK:STDOUT:       0:               inst27
-// CHECK:STDOUT:       1:               inst28
+// CHECK:STDOUT:       0:               ir0.inst27
+// CHECK:STDOUT:       1:               ir0.inst28
 // CHECK:STDOUT:     inst_block9:
-// CHECK:STDOUT:       0:               inst33
-// CHECK:STDOUT:       1:               inst35
+// CHECK:STDOUT:       0:               ir0.inst33
+// CHECK:STDOUT:       1:               ir0.inst35
 // CHECK:STDOUT:     inst_block10:
-// CHECK:STDOUT:       0:               inst20
-// CHECK:STDOUT:       1:               inst21
-// CHECK:STDOUT:       2:               inst31
-// CHECK:STDOUT:       3:               inst32
+// CHECK:STDOUT:       0:               ir0.inst20
+// CHECK:STDOUT:       1:               ir0.inst21
+// CHECK:STDOUT:       2:               ir0.inst31
+// CHECK:STDOUT:       3:               ir0.inst32
 // CHECK:STDOUT:     inst_block11:
-// CHECK:STDOUT:       0:               inst22
-// CHECK:STDOUT:       1:               inst23
-// CHECK:STDOUT:       2:               inst25
-// CHECK:STDOUT:       3:               inst27
-// CHECK:STDOUT:       4:               inst28
-// CHECK:STDOUT:       5:               inst29
-// CHECK:STDOUT:       6:               inst33
-// CHECK:STDOUT:       7:               inst34
-// CHECK:STDOUT:       8:               inst18
-// CHECK:STDOUT:       9:               inst35
-// CHECK:STDOUT:       10:              inst36
+// CHECK:STDOUT:       0:               ir0.inst22
+// CHECK:STDOUT:       1:               ir0.inst23
+// CHECK:STDOUT:       2:               ir0.inst25
+// CHECK:STDOUT:       3:               ir0.inst27
+// CHECK:STDOUT:       4:               ir0.inst28
+// CHECK:STDOUT:       5:               ir0.inst29
+// CHECK:STDOUT:       6:               ir0.inst33
+// CHECK:STDOUT:       7:               ir0.inst34
+// CHECK:STDOUT:       8:               ir0.inst18
+// CHECK:STDOUT:       9:               ir0.inst35
+// CHECK:STDOUT:       10:              ir0.inst36
 // CHECK:STDOUT:     inst_block12:
-// CHECK:STDOUT:       0:               inst40
-// CHECK:STDOUT:       1:               inst41
-// CHECK:STDOUT:       2:               inst42
-// CHECK:STDOUT:       3:               inst43
-// CHECK:STDOUT:       4:               inst44
-// CHECK:STDOUT:       5:               inst46
-// CHECK:STDOUT:       6:               inst47
-// CHECK:STDOUT:       7:               inst48
-// CHECK:STDOUT:       8:               inst49
-// CHECK:STDOUT:       9:               inst50
-// CHECK:STDOUT:       10:              inst52
-// CHECK:STDOUT:       11:              inst53
+// CHECK:STDOUT:       0:               ir0.inst40
+// CHECK:STDOUT:       1:               ir0.inst41
+// CHECK:STDOUT:       2:               ir0.inst42
+// CHECK:STDOUT:       3:               ir0.inst43
+// CHECK:STDOUT:       4:               ir0.inst44
+// CHECK:STDOUT:       5:               ir0.inst46
+// CHECK:STDOUT:       6:               ir0.inst47
+// CHECK:STDOUT:       7:               ir0.inst48
+// CHECK:STDOUT:       8:               ir0.inst49
+// CHECK:STDOUT:       9:               ir0.inst50
+// CHECK:STDOUT:       10:              ir0.inst52
+// CHECK:STDOUT:       11:              ir0.inst53
 // CHECK:STDOUT:     inst_block13:
-// CHECK:STDOUT:       0:               inst40
-// CHECK:STDOUT:       1:               inst41
+// CHECK:STDOUT:       0:               ir0.inst40
+// CHECK:STDOUT:       1:               ir0.inst41
 // CHECK:STDOUT:     inst_block14:    {}
 // CHECK:STDOUT:     inst_block15:
-// CHECK:STDOUT:       0:               inst46
-// CHECK:STDOUT:       1:               inst49
+// CHECK:STDOUT:       0:               ir0.inst46
+// CHECK:STDOUT:       1:               ir0.inst49
 // CHECK:STDOUT:     inst_block16:
-// CHECK:STDOUT:       0:               inst45
-// CHECK:STDOUT:       1:               inst45
+// CHECK:STDOUT:       0:               ir0.inst45
+// CHECK:STDOUT:       1:               ir0.inst45
 // CHECK:STDOUT:     inst_block17:
 // CHECK:STDOUT:       0:               inst14
-// CHECK:STDOUT:       1:               inst37
+// CHECK:STDOUT:       1:               ir0.inst37
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: --- one_file_with_textual_ir.carbon
 // CHECK:STDOUT:

+ 1 - 1
toolchain/check/testdata/basics/verbose.carbon

@@ -14,7 +14,7 @@
 // SET-CHECK-SUBSET
 // CHECK:STDERR: Node Push 0: FunctionIntroducer -> <none>
 // CHECK:STDERR: AddPlaceholderInst: {kind: FunctionDecl, arg0: function<none>, arg1: inst_block_empty}
-// CHECK:STDERR: ReplaceInst: inst{{[0-9]+}} -> {kind: FunctionDecl, arg0: function{{[0-9]+}}, arg1: inst_block_empty, type: type(inst{{[0-9]+}})}
+// CHECK:STDERR: ReplaceInst: ir{{[0-9]+}}.inst{{[0-9]+}} -> {kind: FunctionDecl, arg0: function{{[0-9]+}}, arg1: inst_block_empty, type: type(ir{{[0-9]+}}.inst{{[0-9]+}})}
 // CHECK:STDERR: inst_block_stack_ Push 1
 // CHECK:STDERR: AddInst: {kind: Return}
 // CHECK:STDERR: inst_block_stack_ Pop 1: inst_block{{[0-9]+}}

+ 2 - 2
toolchain/check/testdata/if_expr/fail_not_in_function.carbon

@@ -130,7 +130,7 @@ fn F() {
 // CHECK:STDOUT:   %true: bool = bool_literal true [concrete]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
-// CHECK:STDOUT: generic class @C(<unexpected>.inst20.loc4_14: type) {
+// CHECK:STDOUT: generic class @C(<unexpected>.ir4.inst20.loc4_14: type) {
 // CHECK:STDOUT:   %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)]
 // CHECK:STDOUT:
 // CHECK:STDOUT: !definition:
@@ -145,7 +145,7 @@ fn F() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @B {
-// CHECK:STDOUT:   %C.ref: %C.type = name_ref C, <unexpected>.inst25.loc4_24 [concrete = constants.%C.generic]
+// CHECK:STDOUT:   %C.ref: %C.type = name_ref C, <unexpected>.ir4.inst25.loc4_24 [concrete = constants.%C.generic]
 // CHECK:STDOUT:   %true: bool = bool_literal true [concrete = constants.%true]
 // CHECK:STDOUT:   if %true br !if.expr.then else br !if.expr.else
 // CHECK:STDOUT:   complete_type_witness = invalid

+ 2 - 2
toolchain/check/testdata/let/compile_time_bindings.carbon

@@ -640,12 +640,12 @@ impl i32 as Empty {
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%C
 // CHECK:STDOUT:   .F = %C.F.decl
-// CHECK:STDOUT:   .x = <unexpected>.inst35.loc14_7
+// CHECK:STDOUT:   .x = <unexpected>.ir3.inst35.loc14_7
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @C.F() -> %empty_tuple.type {
 // CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   %x.ref: %empty_tuple.type = name_ref x, <unexpected>.inst35.loc14_7
+// CHECK:STDOUT:   %x.ref: %empty_tuple.type = name_ref x, <unexpected>.ir3.inst35.loc14_7
 // CHECK:STDOUT:   %.loc5_25: init %empty_tuple.type = tuple_init () to %return [concrete = constants.%empty_tuple]
 // CHECK:STDOUT:   %.loc5_26: init %empty_tuple.type = converted %x.ref, %.loc5_25 [concrete = constants.%empty_tuple]
 // CHECK:STDOUT:   return %.loc5_26 to %return

+ 1 - 1
toolchain/check/testdata/let/fail_missing_value.carbon

@@ -50,7 +50,7 @@ fn F() {
 // CHECK:STDOUT: file {
 // CHECK:STDOUT:   package: <namespace> = namespace [concrete] {
 // CHECK:STDOUT:     .Core = imports.%Core
-// CHECK:STDOUT:     .n = <unexpected>.inst44.loc19_5
+// CHECK:STDOUT:     .n = <unexpected>.ir0.inst44.loc19_5
 // CHECK:STDOUT:     .F = %F.decl
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %Core.import = import Core

+ 8 - 8
toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon

@@ -96,7 +96,7 @@ fn F() {
 // CHECK:STDOUT:   %f64: type = class_type @Float, @Float(%int_64) [concrete]
 // CHECK:STDOUT:   %Copy.type: type = facet_type <@Copy> [concrete]
 // CHECK:STDOUT:   %Copy.Op.type: type = fn_type @Copy.Op [concrete]
-// CHECK:STDOUT:   %Copy.impl_witness.de9: <witness> = impl_witness <unexpected>.inst341 [concrete]
+// CHECK:STDOUT:   %Copy.impl_witness.de9: <witness> = impl_witness <unexpected>.ir0.inst341 [concrete]
 // CHECK:STDOUT:   %Copy.facet: %Copy.type = facet_value type, (%Copy.impl_witness.de9) [concrete]
 // CHECK:STDOUT:   %.98f: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet [concrete]
 // CHECK:STDOUT:   %type.as.Copy.impl.Op.type: type = fn_type @type.as.Copy.impl.Op [concrete]
@@ -105,7 +105,7 @@ fn F() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @F(%b.param: bool) -> type {
 // CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   %b.ref: bool = name_ref b, <unexpected>.inst27.loc5_6
+// CHECK:STDOUT:   %b.ref: bool = name_ref b, <unexpected>.ir0.inst27.loc5_6
 // CHECK:STDOUT:   if %b.ref br !if.expr.then else br !if.expr.else
 // CHECK:STDOUT:
 // CHECK:STDOUT: !if.expr.then:
@@ -123,7 +123,7 @@ fn F() {
 // CHECK:STDOUT:   %impl.elem0: %.98f = impl_witness_access constants.%Copy.impl_witness.de9, element0 [concrete = constants.%type.as.Copy.impl.Op]
 // CHECK:STDOUT:   %bound_method: <bound method> = bound_method %.loc6, %impl.elem0
 // CHECK:STDOUT:   %type.as.Copy.impl.Op.call: init type = call %bound_method(%.loc6)
-// CHECK:STDOUT:   return %type.as.Copy.impl.Op.call to <unexpected>.inst36.loc5_15
+// CHECK:STDOUT:   return %type.as.Copy.impl.Op.call to <unexpected>.ir0.inst36.loc5_15
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: --- fail_and_val.carbon
@@ -140,7 +140,7 @@ fn F() {
 // CHECK:STDOUT:   %f64: type = class_type @Float, @Float(%int_64) [concrete]
 // CHECK:STDOUT:   %Copy.type: type = facet_type <@Copy> [concrete]
 // CHECK:STDOUT:   %Copy.Op.type: type = fn_type @Copy.Op [concrete]
-// CHECK:STDOUT:   %Copy.impl_witness.de9: <witness> = impl_witness <unexpected>.inst341 [concrete]
+// CHECK:STDOUT:   %Copy.impl_witness.de9: <witness> = impl_witness <unexpected>.ir2.inst341 [concrete]
 // CHECK:STDOUT:   %Copy.facet: %Copy.type = facet_value type, (%Copy.impl_witness.de9) [concrete]
 // CHECK:STDOUT:   %.98f: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet [concrete]
 // CHECK:STDOUT:   %type.as.Copy.impl.Op.type: type = fn_type @type.as.Copy.impl.Op [concrete]
@@ -149,7 +149,7 @@ fn F() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @F(%b.param: bool) -> type {
 // CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   %b.ref: bool = name_ref b, <unexpected>.inst27.loc5_6
+// CHECK:STDOUT:   %b.ref: bool = name_ref b, <unexpected>.ir2.inst27.loc5_6
 // CHECK:STDOUT:   if %b.ref br !if.expr.then else br !if.expr.else
 // CHECK:STDOUT:
 // CHECK:STDOUT: !if.expr.then:
@@ -167,7 +167,7 @@ fn F() {
 // CHECK:STDOUT:   %impl.elem0: %.98f = impl_witness_access constants.%Copy.impl_witness.de9, element0 [concrete = constants.%type.as.Copy.impl.Op]
 // CHECK:STDOUT:   %bound_method: <bound method> = bound_method %.loc6, %impl.elem0
 // CHECK:STDOUT:   %type.as.Copy.impl.Op.call: init type = call %bound_method(%.loc6)
-// CHECK:STDOUT:   return %type.as.Copy.impl.Op.call to <unexpected>.inst36.loc5_15
+// CHECK:STDOUT:   return %type.as.Copy.impl.Op.call to <unexpected>.ir2.inst36.loc5_15
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: --- fail_or_val.carbon
@@ -189,7 +189,7 @@ fn F() {
 // CHECK:STDOUT:   %false: bool = bool_literal false [concrete]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
-// CHECK:STDOUT: generic class @C(<unexpected>.inst30.loc4_14: bool) {
+// CHECK:STDOUT: generic class @C(<unexpected>.ir4.inst30.loc4_14: bool) {
 // CHECK:STDOUT:   %B: bool = bind_symbolic_name B, 0 [symbolic = %B (constants.%B.7dd)]
 // CHECK:STDOUT:
 // CHECK:STDOUT: !definition:
@@ -204,7 +204,7 @@ fn F() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @B {
-// CHECK:STDOUT:   %C.ref: %C.type = name_ref C, <unexpected>.inst36.loc4_24 [concrete = constants.%C.generic]
+// CHECK:STDOUT:   %C.ref: %C.type = name_ref C, <unexpected>.ir4.inst36.loc4_24 [concrete = constants.%C.generic]
 // CHECK:STDOUT:   %true.loc12_20: bool = bool_literal true [concrete = constants.%true]
 // CHECK:STDOUT:   %.loc12: bool = not %true.loc12_20 [concrete = constants.%false]
 // CHECK:STDOUT:   %true.loc12_25: bool = bool_literal true [concrete = constants.%true]

+ 4 - 4
toolchain/driver/compile_subcommand.cpp

@@ -559,8 +559,8 @@ class MultiUnitCache {
 
   auto include_in_dumps() -> const IncludeInDumpsStore& {
     if (!include_in_dumps_) {
-      include_in_dumps_.emplace(
-          IncludeInDumpsStore::MakeWithExplicitSize(units_.size(), false));
+      include_in_dumps_.emplace(IncludeInDumpsStore::MakeWithExplicitSize(
+          IdTag(), units_.size(), false));
       for (const auto& [i, unit] : llvm::enumerate(units_)) {
         // If this is first accessed after lexing is complete, we need to apply
         // per-file includes. Otherwise, this is based only on the exclude
@@ -580,8 +580,8 @@ class MultiUnitCache {
   auto tree_and_subtrees_getters() -> const TreeAndSubtreesGettersStore& {
     if (!tree_and_subtrees_getters_) {
       tree_and_subtrees_getters_.emplace(
-          TreeAndSubtreesGettersStore::MakeWithExplicitSize(units_.size(),
-                                                            nullptr));
+          TreeAndSubtreesGettersStore::MakeWithExplicitSize(
+              IdTag(), units_.size(), nullptr));
       for (const auto& [i, unit] : llvm::enumerate(units_)) {
         if (unit->has_source()) {
           tree_and_subtrees_getters_->Set(SemIR::CheckIRId(i),

+ 1 - 1
toolchain/language_server/context.cpp

@@ -168,7 +168,7 @@ auto Context::File::SetText(Context& context, std::optional<int64_t> version,
   Check::CheckParseTreesOptions check_options;
   check_options.vlog_stream = context.vlog_stream();
   auto getters =
-      Parse::GetTreeAndSubtreesStore::MakeWithExplicitSize(1, getter);
+      Parse::GetTreeAndSubtreesStore::MakeWithExplicitSize(IdTag(), 1, getter);
 
   auto clang_invocation =
       BuildClangInvocation(consumer, fs, {context.installation().clang_path()});

+ 3 - 3
toolchain/lower/file_context.cpp

@@ -50,10 +50,10 @@ FileContext::FileContext(Context& context, const SemIR::File& sem_ir,
       vlog_stream_(vlog_stream),
       functions_(LoweredFunctionStore::MakeForOverwrite(sem_ir.functions())),
       specific_functions_(sem_ir.specifics(), nullptr),
-      types_(LoweredTypeStore::MakeWithExplicitSize(sem_ir.insts().size(),
-                                                    nullptr)),
+      types_(LoweredTypeStore::MakeWithExplicitSize(
+          sem_ir.insts().GetIdTag(), sem_ir.insts().size(), nullptr)),
       constants_(LoweredConstantStore::MakeWithExplicitSize(
-          sem_ir.insts().size(), nullptr)),
+          sem_ir.insts().GetIdTag(), sem_ir.insts().size(), nullptr)),
       lowered_specifics_(sem_ir.generics(),
                          llvm::SmallVector<SemIR::SpecificId>()),
       coalescer_(vlog_stream_, sem_ir.specifics()),

+ 25 - 9
toolchain/sem_ir/constant.h

@@ -108,9 +108,20 @@ struct SymbolicConstant : Printable<SymbolicConstant> {
 // Provides a ValueStore wrapper for tracking the constant values of
 // instructions.
 class ConstantValueStore {
+  struct UnusableType {};
+
  public:
-  explicit ConstantValueStore(ConstantId default_value)
-      : default_(default_value) {}
+  inline static const auto Unusable = UnusableType();
+
+  // Constructs an unusable ConstantValueStore, only good as a placeholder (eg:
+  // in C++ interop, where there's no foreign SemIR to reference)
+  explicit ConstantValueStore(UnusableType /* tag */)
+      : default_(ConstantId::None), insts_(nullptr) {}
+
+  explicit ConstantValueStore(ConstantId default_value, const InstStore* insts)
+      : default_(default_value),
+        values_((CARBON_CHECK(insts), insts->GetIdTag())),
+        insts_(insts) {}
 
   // Returns the constant value of the requested instruction, which is default_
   // if unallocated. Always returns an unattached constant.
@@ -122,18 +133,21 @@ class ConstantValueStore {
   // Returns the constant value of the requested instruction, which is default_
   // if unallocated. This may be an attached constant.
   auto GetAttached(InstId inst_id) const -> ConstantId {
-    CARBON_DCHECK(inst_id.index >= 0);
-    return static_cast<size_t>(inst_id.index) >= values_.size()
-               ? default_
-               : values_.Get(inst_id);
+    CARBON_CHECK(insts_,
+                 "Used ConstantValueStores must have an associated InstStore.");
+    auto index = insts_->GetRawIndex(inst_id);
+    return static_cast<size_t>(index) >= values_.size() ? default_
+                                                        : values_.Get(inst_id);
   }
 
   // Sets the constant value of the given instruction, or sets that it is known
   // to not be a constant.
   auto Set(InstId inst_id, ConstantId const_id) -> void {
-    CARBON_DCHECK(inst_id.index >= 0);
-    if (static_cast<size_t>(inst_id.index) >= values_.size()) {
-      values_.Resize(inst_id.index + 1, default_);
+    CARBON_CHECK(insts_,
+                 "Used ConstantValueStores must have an associated InstStore.");
+    auto index = insts_->GetRawIndex(inst_id);
+    if (static_cast<size_t>(index) >= values_.size()) {
+      values_.Resize(index + 1, default_);
     }
     values_.Get(inst_id) = const_id;
   }
@@ -251,6 +265,8 @@ class ConstantValueStore {
   // `ConstantId`. For a symbolic constant, we also track information about
   // where the constant was used, which is stored here.
   ValueStore<ConstantId::SymbolicId, SymbolicConstant> symbolic_constants_;
+
+  const InstStore* insts_;
 };
 
 // Given a constant ID, returns an instruction that has that constant value.

+ 2 - 1
toolchain/sem_ir/file.cpp

@@ -36,7 +36,8 @@ File::File(const Parse::Tree* parse_tree, CheckIRId check_ir_id,
       value_stores_(&value_stores),
       filename_(std::move(filename)),
       impls_(*this),
-      constant_values_(ConstantId::NotConstant),
+      insts_(this, SingletonInstKinds.size() + 1),
+      constant_values_(ConstantId::NotConstant, &insts_),
       inst_blocks_(allocator_),
       constants_(this) {
   // `type` and the error type are both complete & concrete types.

+ 1 - 1
toolchain/sem_ir/file.h

@@ -360,7 +360,7 @@ class File : public Printable<File> {
 
   // All instructions. The first entries will always be the singleton
   // instructions.
-  InstStore insts_ = InstStore(this);
+  InstStore insts_;
 
   VtableStore vtables_;
 

+ 5 - 3
toolchain/sem_ir/formatter.cpp

@@ -111,7 +111,7 @@ auto Formatter::Format() -> void {
 auto Formatter::ComputeNodeParents() -> void {
   CARBON_CHECK(!node_parents_);
   node_parents_ = NodeParentStore::MakeWithExplicitSize(
-      sem_ir_->parse_tree().size(), Parse::NodeId::None);
+      IdTag(), sem_ir_->parse_tree().size(), Parse::NodeId::None);
   for (auto n : sem_ir_->parse_tree().postorder()) {
     for (auto child : get_tree_and_subtrees_().children(n)) {
       node_parents_->Set(child, n);
@@ -1236,15 +1236,17 @@ auto Formatter::FormatImportRefRhs(AnyImportRef inst) -> void {
     const auto& import_ir = sem_ir_->import_irs().Get(import_ir_inst.ir_id());
     auto loc_id =
         import_ir.sem_ir->insts().GetCanonicalLocId(import_ir_inst.inst_id());
+    InstId stripped_inst_id(
+        import_ir.sem_ir->insts().GetRawIndex(import_ir_inst.inst_id()));
     switch (loc_id.kind()) {
       case LocId::Kind::None: {
-        out_ << import_ir_inst.inst_id() << " [no loc]";
+        out_ << stripped_inst_id << " [no loc]";
         break;
       }
       case LocId::Kind::ImportIRInstId: {
         // TODO: Probably don't want to format each indirection, but maybe
         // reuse GetCanonicalImportIRInst?
-        out_ << import_ir_inst.inst_id() << " [indirect]";
+        out_ << stripped_inst_id << " [indirect]";
         break;
       }
       case LocId::Kind::NodeId: {

+ 2 - 0
toolchain/sem_ir/generic.h

@@ -149,6 +149,8 @@ class SpecificStore : public Yaml::Printable<SpecificStore> {
     return specifics_.enumerate();
   }
 
+  auto GetIdTag() const { return IdTag(); }
+
  private:
   // Context for hashing keys.
   class KeyContext;

+ 6 - 1
toolchain/sem_ir/ids.cpp

@@ -16,7 +16,12 @@ auto InstId::Print(llvm::raw_ostream& out) const -> void {
   if (IsSingletonInstId(*this)) {
     out << Label << "(" << SingletonInstKinds[index] << ")";
   } else {
-    IdBase::Print(out);
+    auto [ir_id, simple_index] = IdTag::DecomposeWithBestEffort(index);
+    if (ir_id == -1) {
+      IdBase::Print(out);
+    } else {
+      out << "ir" << ir_id << ".inst" << simple_index;
+    }
   }
 }
 

+ 4 - 0
toolchain/sem_ir/inst.cpp

@@ -54,6 +54,10 @@ const std::pair<IdKind, IdKind> Inst::ArgKindTable[] = {
 #include "toolchain/sem_ir/inst_kind.def"
 };
 
+InstStore::InstStore(File* file, int32_t reserved_inst_ids)
+    : file_(file),
+      values_(IdTag(file->check_ir_id().index, reserved_inst_ids)) {}
+
 auto InstStore::GetUnattachedType(TypeId type_id) const -> TypeId {
   return file_->types().GetUnattachedType(type_id);
 }

+ 13 - 5
toolchain/sem_ir/inst.h

@@ -442,7 +442,7 @@ class InstStore {
  public:
   using IdType = InstId;
 
-  explicit InstStore(File* file) : file_(file) {}
+  explicit InstStore(File* file, int32_t reserved_inst_ids);
 
   // Adds an instruction to the instruction list, returning an ID to reference
   // the instruction. Note that this doesn't add the instruction to any
@@ -610,7 +610,8 @@ class InstStore {
 
   // Overwrites a given instruction's location with a new value.
   auto SetLocId(InstId inst_id, LocId loc_id) -> void {
-    loc_ids_[inst_id.index] = loc_id;
+    auto index = values_.GetRawIndex(inst_id);
+    loc_ids_[index] = loc_id;
   }
 
   // Overwrites a given instruction and location ID with a new value.
@@ -641,6 +642,12 @@ class InstStore {
     return values_.enumerate();
   }
 
+  auto GetRawIndex(InstId id) const -> int32_t {
+    return values_.GetRawIndex(id);
+  }
+
+  auto GetIdTag() const -> IdTag { return values_.GetIdTag(); }
+
  private:
   // Given a symbolic type, get the corresponding unattached type.
   auto GetUnattachedType(TypeId type_id) const -> TypeId;
@@ -648,9 +655,10 @@ class InstStore {
   // Gets the specified location for an instruction, without performing any
   // canonicalization.
   auto GetNonCanonicalLocId(InstId inst_id) const -> LocId {
-    CARBON_CHECK(static_cast<size_t>(inst_id.index) < loc_ids_.size(),
-                 "{0} {1}", inst_id.index, loc_ids_.size());
-    return loc_ids_[inst_id.index];
+    auto index = values_.GetRawIndex(inst_id);
+    CARBON_CHECK(static_cast<size_t>(index) < loc_ids_.size(), "{0} {1}", index,
+                 loc_ids_.size());
+    return loc_ids_[index];
   }
 
   File* file_;

+ 1 - 1
toolchain/sem_ir/inst_fingerprinter.cpp

@@ -60,7 +60,7 @@ struct Worklist {
     auto& store = fingerprints->Get(file->check_ir_id());
     if (store.size() == 0) {
       store = FixedSizeValueStore<InstId, uint64_t>::MakeWithExplicitSize(
-          file->insts().size(), 0);
+          file->insts().GetIdTag(), file->insts().size(), 0);
     }
     store.Set(inst_id, fingerprint ? fingerprint : 1);
   }

+ 16 - 6
toolchain/sem_ir/inst_namer.cpp

@@ -188,7 +188,8 @@ auto InstNamer::GetUnscopedNameFor(InstId inst_id) const -> llvm::StringRef {
   if (IsSingletonInstId(inst_id)) {
     return sem_ir_->insts().Get(inst_id).kind().ir_name();
   }
-  const auto& inst_name = insts_[inst_id.index].second;
+  auto index = sem_ir_->insts().GetRawIndex(inst_id);
+  const auto& inst_name = insts_[index].second;
   return inst_name ? inst_name.GetFullName() : "";
 }
 
@@ -207,7 +208,8 @@ auto InstNamer::GetNameFor(ScopeId scope_id, InstId inst_id) const
     return "package";
   }
 
-  const auto& [inst_scope, inst_name] = insts_[inst_id.index];
+  auto index = sem_ir_->insts().GetRawIndex(inst_id);
+  const auto& [inst_scope, inst_name] = insts_[index];
   if (!inst_name) {
     // This should not happen in valid IR.
     RawStringOstream out;
@@ -576,9 +578,10 @@ auto InstNamer::PushEntity(ImplId impl_id, ScopeId scope_id, Scope& scope)
   llvm::StringRef self_name;
   auto self_const_id =
       sem_ir_->constant_values().GetConstantInstId(impl.self_id);
+  auto index = sem_ir_->insts().GetRawIndex(self_const_id);
   if (IsSingletonInstId(self_const_id)) {
     self_name = sem_ir_->insts().Get(self_const_id).kind().ir_name();
-  } else if (const auto& inst_name = insts_[self_const_id.index].second) {
+  } else if (const auto& inst_name = insts_[index].second) {
     self_name = inst_name.GetBaseName();
   } else {
     self_name = "<unexpected self>";
@@ -638,7 +641,8 @@ InstNamer::NamingContext::NamingContext(InstNamer* inst_namer,
       inst_(sem_ir().insts().Get(inst_id)) {}
 
 auto InstNamer::NamingContext::AddInstName(std::string name) -> void {
-  ScopeId old_scope_id = inst_namer_->insts_[inst_id_.index].first;
+  auto index = sem_ir().insts().GetRawIndex(inst_id_);
+  ScopeId old_scope_id = inst_namer_->insts_[index].first;
   if (old_scope_id == ScopeId::None) {
     std::variant<LocId, uint64_t> loc_id_or_fingerprint = LocId::None;
     if (scope_id_ == ScopeId::Constants || scope_id_ == ScopeId::Imports) {
@@ -649,7 +653,7 @@ auto InstNamer::NamingContext::AddInstName(std::string name) -> void {
     }
     auto scoped_name = inst_namer_->GetScopeInfo(scope_id_).insts.AllocateName(
         *inst_namer_, loc_id_or_fingerprint, std::move(name));
-    inst_namer_->insts_[inst_id_.index] = {scope_id_, scoped_name};
+    inst_namer_->insts_[index] = {scope_id_, scoped_name};
   } else {
     CARBON_CHECK(old_scope_id == scope_id_,
                  "Attempting to name inst in multiple scopes");
@@ -971,7 +975,8 @@ auto InstNamer::NamingContext::NameInst() -> void {
       auto const_id = sem_ir().constant_values().Get(inst_id_);
       if (const_id.has_value() && const_id.is_concrete()) {
         auto const_inst_id = sem_ir().constant_values().GetInstId(const_id);
-        if (!inst_namer_->insts_[const_inst_id.index].second) {
+        auto index = sem_ir().insts().GetRawIndex(const_inst_id);
+        if (!inst_namer_->insts_[index].second) {
           inst_namer_->PushBlockInsts(ScopeId::Imports, const_inst_id);
         }
       }
@@ -1172,4 +1177,9 @@ auto InstNamer::NamingContext::NameInst() -> void {
   }
 }
 
+auto InstNamer::has_name(InstId inst_id) const -> bool {
+  return static_cast<bool>(
+      insts_[sem_ir_->insts().GetRawIndex(inst_id)].second);
+}
+
 }  // namespace Carbon::SemIR

+ 1 - 3
toolchain/sem_ir/inst_namer.h

@@ -93,9 +93,7 @@ class InstNamer {
   auto GetLabelFor(ScopeId scope_id, InstBlockId block_id) const -> std::string;
 
   // Returns true if the instruction has a specific name assigned.
-  auto has_name(InstId inst_id) const -> bool {
-    return static_cast<bool>(insts_[inst_id.index].second);
-  }
+  auto has_name(InstId inst_id) const -> bool;
 
  private:
   // A space in which unique names can be allocated.

+ 4 - 4
toolchain/sem_ir/yaml_test.cpp

@@ -47,12 +47,12 @@ TEST(SemIRTest, Yaml) {
   // Matches the ID of an instruction. Instruction counts may change as various
   // support changes, so this code is only doing loose structural checks.
   auto inst_block_id = Yaml::Scalar(MatchesRegex(R"(inst_block(\d+|_empty))"));
-  auto inst_id = Yaml::Scalar(MatchesRegex(R"(inst\d+)"));
+  auto inst_id = Yaml::Scalar(MatchesRegex(R"((ir\d+\.)?inst\d+)"));
   auto constant_id =
-      Yaml::Scalar(MatchesRegex(R"(concrete_constant\(inst(\w+|\+\d+)\))"));
+      Yaml::Scalar(MatchesRegex(R"(concrete_constant\((ir\d+\.)?inst\d+\))"));
   auto inst_builtin = Yaml::Scalar(MatchesRegex(R"(inst\(\w+\))"));
-  auto type_id =
-      Yaml::Scalar(MatchesRegex(R"(type\((\w+|inst\(\w+\)|inst\d+)\))"));
+  auto type_id = Yaml::Scalar(
+      MatchesRegex(R"(type\((\w+|inst\(\w+\)|(ir\d+\.)?inst\d+)\))"));
   auto type_builtin = Pair(type_id, Yaml::Mapping(_));
 
   auto file = Yaml::Mapping(ElementsAre(