lib/compiler/aro/aro/Attribute/Wip.zig | 2 +- lib/compiler/aro/aro/Target.zig | 2 +- lib/compiler/test_runner.zig | 2 +- lib/std/Target.zig | 2 +- lib/std/debug.zig | 1 + lib/std/lang.zig | 5 + lib/std/mem.zig | 2 +- lib/std/testing.zig | 1 + lib/std/zig/llvm/Builder.zig | 77 +++++++- src/Compilation.zig | 3 +- src/Compilation/Config.zig | 5 +- src/Sema.zig | 71 +++---- src/Type.zig | 2 +- src/Zcu.zig | 2 +- src/codegen/llvm.zig | 139 ++++++++++++- src/codegen/llvm/FuncGen.zig | 4 + src/codegen/spirv/Assembler.zig | 22 +-- src/codegen/spirv/CodeGen.zig | 338 ++++++++------------------------ src/codegen/spirv/Section.zig | 53 ++++- src/codegen/spirv/spec.zig | 248 +++++++++++++++++++++++ src/link/Elf/ZigObject.zig | 2 +- src/link/Elf2.zig | 16 +- src/link/MachO/ZigObject.zig | 2 +- src/link/Spirv.zig | 3 +- src/link/Spirv/Flush.zig | 241 +++++++++++++---------- src/main.zig | 29 +++ src/target.zig | 56 +++--- test/behavior.zig | 10 +- test/behavior/abs.zig | 20 +- test/behavior/addrspace_and_linksection.zig | 6 +- test/behavior/align.zig | 50 ++--- test/behavior/alignof.zig | 3 +- test/behavior/array.zig | 88 +++++---- test/behavior/asm.zig | 6 +- test/behavior/atomics.zig | 22 +-- test/behavior/backing_int.zig | 14 +- test/behavior/basic.zig | 102 +++++++--- test/behavior/bit_shifting.zig | 6 +- test/behavior/bitcast.zig | 31 +-- test/behavior/bitreverse.zig | 8 +- test/behavior/bool.zig | 5 + test/behavior/builtin_functions_returning_void_or_noreturn.zig | 2 +- test/behavior/byteswap.zig | 10 +- test/behavior/byval_arg_var.zig | 2 +- test/behavior/call.zig | 34 ++-- test/behavior/cast.zig | 226 ++++++++++++--------- test/behavior/cast_int.zig | 7 +- test/behavior/comptime_memory.zig | 9 +- test/behavior/const_slice_child.zig | 2 +- test/behavior/decl_literals.zig | 6 +- test/behavior/defer.zig | 9 +- test/behavior/destructure.zig | 14 ++ test/behavior/enum.zig | 45 +++-- test/behavior/error.zig | 69 +++++-- test/behavior/eval.zig | 70 +++++-- test/behavior/export_builtin.zig | 6 +- test/behavior/export_keyword.zig | 2 +- test/behavior/extern.zig | 6 +- test/behavior/field_parent_ptr.zig | 32 +-- test/behavior/floatop.zig | 120 +++++++----- test/behavior/fn.zig | 48 +++-- test/behavior/fn_delegation.zig | 1 + test/behavior/fn_in_struct_in_comptime.zig | 2 +- test/behavior/for.zig | 31 +-- test/behavior/generics.zig | 39 ++-- test/behavior/globals.zig | 20 +- test/behavior/hasdecl.zig | 2 + test/behavior/hasfield.zig | 2 + test/behavior/if.zig | 12 +- test/behavior/import_c_keywords.zig | 2 +- test/behavior/incomplete_struct_param_tld.zig | 2 +- test/behavior/inline_switch.zig | 6 + test/behavior/int128.zig | 7 +- test/behavior/int_comparison_elision.zig | 3 +- test/behavior/ir_block_deps.zig | 1 + test/behavior/lower_strlit_to_vector.zig | 2 +- test/behavior/math.zig | 128 +++++++----- test/behavior/maximum_minimum.zig | 23 ++- test/behavior/member_func.zig | 4 +- test/behavior/memcpy.zig | 16 +- test/behavior/memmove.zig | 10 +- test/behavior/memset.zig | 24 +-- test/behavior/merge_error_sets.zig | 1 + test/behavior/muladd.zig | 11 +- test/behavior/multiple_externs_with_conflicting_types.zig | 4 +- test/behavior/nan.zig | 2 +- test/behavior/null.zig | 8 +- test/behavior/optional.zig | 42 ++-- test/behavior/overlapping_assign.zig | 2 +- test/behavior/packed-struct.zig | 46 +++-- test/behavior/packed-union.zig | 16 +- test/behavior/packed_struct_explicit_backing_int.zig | 1 + test/behavior/pointers.zig | 64 +++--- test/behavior/popcount.zig | 6 +- test/behavior/prefetch.zig | 2 +- test/behavior/ptrcast.zig | 41 ++-- test/behavior/ptrfromint.zig | 7 +- test/behavior/ref_var_in_if_after_if_2nd_switch_prong.zig | 2 +- test/behavior/reflection.zig | 1 + test/behavior/return_address.zig | 2 +- test/behavior/saturating_arithmetic.zig | 28 +-- test/behavior/select.zig | 4 +- test/behavior/shuffle.zig | 8 +- test/behavior/sizeof_and_typeof.zig | 22 ++- test/behavior/slice.zig | 98 +++++---- test/behavior/spirv.zig | 5 + test/behavior/splat.zig | 9 +- test/behavior/src.zig | 2 +- test/behavior/string_literals.zig | 15 +- test/behavior/struct.zig | 147 ++++++++++---- test/behavior/struct_contains_null_ptr_itself.zig | 2 +- test/behavior/struct_contains_slice_of_itself.zig | 4 +- test/behavior/switch.zig | 65 ++++-- test/behavior/switch_loop.zig | 26 ++- test/behavior/switch_on_captured_error.zig | 4 +- test/behavior/switch_prong_err_enum.zig | 2 +- test/behavior/switch_prong_implicit_cast.zig | 1 + test/behavior/this.zig | 3 +- test/behavior/threadlocal.zig | 4 +- test/behavior/truncate.zig | 6 +- test/behavior/try.zig | 12 +- test/behavior/tuple.zig | 32 +-- test/behavior/tuple_declarations.zig | 4 +- test/behavior/type.zig | 22 ++- test/behavior/type_info.zig | 45 ++++- test/behavior/typename.zig | 16 +- test/behavior/undefined.zig | 9 +- test/behavior/underscore.zig | 1 + test/behavior/union.zig | 124 ++++++++---- test/behavior/var_args.zig | 16 +- test/behavior/vector.zig | 86 ++++---- test/behavior/void.zig | 2 +- test/behavior/while.zig | 24 ++- test/behavior/widening.zig | 9 +- test/cases/compile_errors/spirv_slices.zig | 6 +- test/cases/spirv_mergable_pointers.zig | 6 +- test/src/Cases.zig | 2 +- test/tests.zig | 2 +- tools/gen_spirv_spec.zig | 1 + 139 files changed, 2481 insertions(+), 1408 deletions(-)