lib/std/builtin.zig | 3 + lib/std/target.zig | 12 +- src/Compilation.zig | 1 + src/codegen/spirv.zig | 604 ++++++++++++++++++++++++-------- src/codegen/spirv/Module.zig | 13 +- test/behavior.zig | 3 +- test/behavior/align.zig | 23 ++ test/behavior/array.zig | 30 ++ test/behavior/asm.zig | 4 + test/behavior/atomics.zig | 15 + test/behavior/basic.zig | 55 +++ test/behavior/bit_shifting.zig | 1 + test/behavior/bitcast.zig | 15 + test/behavior/bitreverse.zig | 5 + test/behavior/bool.zig | 3 + test/behavior/bugs/10138.zig | 1 + test/behavior/bugs/10147.zig | 1 + test/behavior/bugs/10684.zig | 1 + test/behavior/bugs/1076.zig | 1 + test/behavior/bugs/10970.zig | 1 + test/behavior/bugs/11046.zig | 1 + test/behavior/bugs/11100.zig | 4 + test/behavior/bugs/11139.zig | 1 + test/behavior/bugs/11165.zig | 2 + test/behavior/bugs/11179.zig | 1 + test/behavior/bugs/11213.zig | 2 + test/behavior/bugs/11787.zig | 1 + test/behavior/bugs/11816.zig | 1 + test/behavior/bugs/11995.zig | 2 + test/behavior/bugs/12000.zig | 2 + test/behavior/bugs/12025.zig | 4 + test/behavior/bugs/12033.zig | 3 + test/behavior/bugs/12043.zig | 3 + test/behavior/bugs/12051.zig | 2 + test/behavior/bugs/12092.zig | 2 + test/behavior/bugs/12119.zig | 2 + test/behavior/bugs/12142.zig | 2 + test/behavior/bugs/12450.zig | 2 + test/behavior/bugs/12551.zig | 1 + test/behavior/bugs/12571.zig | 1 + test/behavior/bugs/12644.zig | 3 + test/behavior/bugs/12680.zig | 1 + test/behavior/bugs/1277.zig | 1 + test/behavior/bugs/12776.zig | 1 + test/behavior/bugs/12801-2.zig | 1 + test/behavior/bugs/12890.zig | 1 + test/behavior/bugs/12891.zig | 14 + test/behavior/bugs/12928.zig | 8 + test/behavior/bugs/12972.zig | 1 + test/behavior/bugs/12984.zig | 1 + test/behavior/bugs/13064.zig | 1 + test/behavior/bugs/13065.zig | 1 + test/behavior/bugs/13068.zig | 1 + test/behavior/bugs/13069.zig | 1 + test/behavior/bugs/13113.zig | 2 + test/behavior/bugs/13128.zig | 1 + test/behavior/bugs/13159.zig | 2 + test/behavior/bugs/13285.zig | 1 + test/behavior/bugs/13366.zig | 1 + test/behavior/bugs/13664.zig | 1 + test/behavior/bugs/13785.zig | 1 + test/behavior/bugs/1381.zig | 1 + test/behavior/bugs/1442.zig | 2 + test/behavior/bugs/14854.zig | 3 + test/behavior/bugs/1500.zig | 2 + test/behavior/bugs/1607.zig | 2 + test/behavior/bugs/1735.zig | 2 + test/behavior/bugs/1741.zig | 1 + test/behavior/bugs/1851.zig | 1 + test/behavior/bugs/1914.zig | 4 + test/behavior/bugs/2006.zig | 1 + test/behavior/bugs/2114.zig | 1 + test/behavior/bugs/2578.zig | 1 + test/behavior/bugs/2622.zig | 1 + test/behavior/bugs/2692.zig | 1 + test/behavior/bugs/3007.zig | 1 + test/behavior/bugs/3046.zig | 1 + test/behavior/bugs/3112.zig | 2 + test/behavior/bugs/3367.zig | 2 + test/behavior/bugs/3742.zig | 2 + test/behavior/bugs/3779.zig | 5 + test/behavior/bugs/421.zig | 1 + test/behavior/bugs/4328.zig | 5 + test/behavior/bugs/4954.zig | 1 + test/behavior/bugs/529.zig | 1 + test/behavior/bugs/5398.zig | 1 + test/behavior/bugs/6047.zig | 1 + test/behavior/bugs/6456.zig | 1 + test/behavior/bugs/656.zig | 2 + test/behavior/bugs/6781.zig | 1 + test/behavior/bugs/6905.zig | 1 + test/behavior/bugs/6947.zig | 1 + test/behavior/bugs/7047.zig | 3 + test/behavior/bugs/718.zig | 1 + test/behavior/bugs/7187.zig | 2 + test/behavior/bugs/726.zig | 2 + test/behavior/bugs/7325.zig | 1 + test/behavior/bugs/8277.zig | 2 + test/behavior/bugs/828.zig | 1 + test/behavior/bugs/8646.zig | 1 + test/behavior/bugs/920.zig | 1 + test/behavior/bugs/9584.zig | 1 + test/behavior/byteswap.zig | 4 + test/behavior/byval_arg_var.zig | 1 + test/behavior/call.zig | 12 + test/behavior/cast.zig | 88 +++++ test/behavior/cast_int.zig | 1 + test/behavior/const_slice_child.zig | 1 + test/behavior/decltest.zig | 4 + test/behavior/defer.zig | 9 + test/behavior/duplicated_test_names.zig | 4 + test/behavior/empty_tuple_fields.zig | 2 + test/behavior/empty_union.zig | 6 + test/behavior/enum.zig | 23 ++ test/behavior/error.zig | 39 +++ test/behavior/eval.zig | 54 +++ test/behavior/field_parent_ptr.zig | 7 + test/behavior/floatop.zig | 51 +++ test/behavior/fn.zig | 33 ++ test/behavior/fn_delegation.zig | 1 + test/behavior/fn_in_struct_in_comptime.zig | 3 + test/behavior/for.zig | 22 ++ test/behavior/generics.zig | 24 ++ test/behavior/if.zig | 5 + test/behavior/inline_switch.zig | 5 + test/behavior/int128.zig | 5 + test/behavior/int_comparison_elision.zig | 2 + test/behavior/inttoptr.zig | 1 + test/behavior/ir_block_deps.zig | 1 + test/behavior/lower_strlit_to_vector.zig | 1 + test/behavior/math.zig | 42 +++ test/behavior/maximum_minimum.zig | 11 + test/behavior/member_func.zig | 2 + test/behavior/memcpy.zig | 2 + test/behavior/memset.zig | 7 + test/behavior/merge_error_sets.zig | 1 + test/behavior/muladd.zig | 9 + test/behavior/null.zig | 7 + test/behavior/optional.zig | 25 ++ test/behavior/packed-struct.zig | 17 + test/behavior/packed_struct_explicit_backing_int.zig | 1 + test/behavior/pointers.zig | 23 ++ test/behavior/popcount.zig | 3 + test/behavior/prefetch.zig | 3 + test/behavior/ptrcast.zig | 6 + test/behavior/pub_enum.zig | 3 + test/behavior/ref_var_in_if_after_if_2nd_switch_prong.zig | 1 + test/behavior/reflection.zig | 1 + test/behavior/return_address.zig | 2 + test/behavior/saturating_arithmetic.zig | 7 + test/behavior/select.zig | 2 + test/behavior/shuffle.zig | 3 + test/behavior/sizeof_and_typeof.zig | 8 + test/behavior/slice.zig | 33 +- test/behavior/src.zig | 3 + test/behavior/struct.zig | 53 +++ test/behavior/struct_contains_null_ptr_itself.zig | 1 + test/behavior/struct_contains_slice_of_itself.zig | 2 + test/behavior/switch.zig | 18 + test/behavior/switch_prong_err_enum.zig | 1 + test/behavior/switch_prong_implicit_cast.zig | 1 + test/behavior/this.zig | 3 + test/behavior/threadlocal.zig | 3 + test/behavior/translate_c_macros.zig | 16 + test/behavior/truncate.zig | 1 + test/behavior/try.zig | 5 + test/behavior/tuple.zig | 16 + test/behavior/tuple_declarations.zig | 2 + test/behavior/type.zig | 5 + test/behavior/type_info.zig | 10 + test/behavior/typename.zig | 8 + test/behavior/undefined.zig | 3 + test/behavior/underscore.zig | 1 + test/behavior/union.zig | 61 ++++ test/behavior/union_with_members.zig | 1 + test/behavior/usingnamespace.zig | 1 + test/behavior/var_args.zig | 8 + test/behavior/vector.zig | 43 +++ test/behavior/void.zig | 2 + test/behavior/while.zig | 20 ++ test/behavior/widening.zig | 7 + 181 files changed, 1721 insertions(+), 145 deletions(-)