lib/compiler/test_runner.zig | 18 + lib/std/builtin.zig | 14 +- lib/std/dwarf.zig | 10 +- lib/std/mem.zig | 2 + lib/std/start.zig | 33 +- lib/std/testing.zig | 2 +- src/Sema.zig | 7 +- src/arch/riscv64/CodeGen.zig | 4547 +++++++++++++++++++++++++------- src/arch/riscv64/Emit.zig | 340 ++- src/arch/riscv64/Encoding.zig | 403 +++ src/arch/riscv64/Lower.zig | 360 +++ src/arch/riscv64/Mir.zig | 363 ++- src/arch/riscv64/abi.zig | 185 +- src/arch/riscv64/bits.zig | 563 ++-- src/arch/riscv64/encoder.zig | 49 + src/codegen/llvm.zig | 2 + src/link/Elf.zig | 2 + src/link/Elf/Atom.zig | 28 +- src/link/riscv.zig | 65 +- src/register_manager.zig | 3 +- src/target.zig | 4 +- test/behavior/abs.zig | 11 +- test/behavior/align.zig | 16 + test/behavior/alignof.zig | 2 + test/behavior/array.zig | 45 + test/behavior/asm.zig | 4 + test/behavior/atomics.zig | 13 + test/behavior/basic.zig | 37 + test/behavior/bit_shifting.zig | 2 + test/behavior/bitcast.zig | 17 + test/behavior/bitreverse.zig | 4 + test/behavior/bool.zig | 2 + test/behavior/builtin_functions_returning_void_or_noreturn.zig | 2 +- test/behavior/byteswap.zig | 4 + test/behavior/byval_arg_var.zig | 1 + test/behavior/call.zig | 13 + test/behavior/call_tail.zig | 2 + test/behavior/cast.zig | 102 + test/behavior/cast_int.zig | 8 + test/behavior/comptime_memory.zig | 4 + test/behavior/const_slice_child.zig | 1 + test/behavior/defer.zig | 5 + test/behavior/destructure.zig | 2 + test/behavior/duplicated_test_names.zig | 1 + test/behavior/empty_tuple_fields.zig | 2 + test/behavior/empty_union.zig | 4 + test/behavior/enum.zig | 20 + test/behavior/error.zig | 45 + test/behavior/eval.zig | 30 + test/behavior/export_builtin.zig | 2 + test/behavior/export_keyword.zig | 2 + test/behavior/extern.zig | 3 + test/behavior/field_parent_ptr.zig | 21 + test/behavior/floatop.zig | 78 + test/behavior/fn.zig | 22 + test/behavior/fn_delegation.zig | 1 + test/behavior/for.zig | 18 + test/behavior/generics.zig | 19 + test/behavior/globals.zig | 3 + test/behavior/hasdecl.zig | 4 + test/behavior/if.zig | 8 + test/behavior/import.zig | 4 + test/behavior/import_c_keywords.zig | 1 + test/behavior/incomplete_struct_param_tld.zig | 1 + test/behavior/inline_switch.zig | 9 + test/behavior/int128.zig | 5 + test/behavior/int_comparison_elision.zig | 2 + test/behavior/int_div.zig | 2 + test/behavior/ir_block_deps.zig | 1 + test/behavior/lower_strlit_to_vector.zig | 1 + test/behavior/math.zig | 61 + test/behavior/maximum_minimum.zig | 10 + test/behavior/member_func.zig | 2 + test/behavior/memcpy.zig | 4 + test/behavior/memset.zig | 9 + test/behavior/merge_error_sets.zig | 1 + test/behavior/muladd.zig | 10 + test/behavior/multiple_externs_with_conflicting_types.zig | 1 + test/behavior/namespace_depends_on_compile_var.zig | 1 + test/behavior/nan.zig | 1 + test/behavior/null.zig | 8 + test/behavior/optional.zig | 27 + test/behavior/packed-struct.zig | 30 + test/behavior/packed-union.zig | 5 + test/behavior/pointers.zig | 17 + test/behavior/popcount.zig | 3 + test/behavior/prefetch.zig | 1 + test/behavior/ptrcast.zig | 3 + test/behavior/ptrfromint.zig | 5 + test/behavior/pub_enum.zig | 2 + test/behavior/ref_var_in_if_after_if_2nd_switch_prong.zig | 1 + test/behavior/reflection.zig | 1 + test/behavior/return_address.zig | 1 + test/behavior/saturating_arithmetic.zig | 7 + test/behavior/select.zig | 2 + test/behavior/shuffle.zig | 3 + test/behavior/sizeof_and_typeof.zig | 5 + test/behavior/slice.zig | 30 + test/behavior/src.zig | 3 + test/behavior/string_literals.zig | 3 + test/behavior/struct.zig | 75 + test/behavior/struct_contains_null_ptr_itself.zig | 1 + test/behavior/struct_contains_slice_of_itself.zig | 2 + test/behavior/switch.zig | 43 + test/behavior/switch_on_captured_error.zig | 2 + test/behavior/switch_prong_err_enum.zig | 1 + test/behavior/switch_prong_implicit_cast.zig | 1 + test/behavior/this.zig | 2 + test/behavior/threadlocal.zig | 3 + test/behavior/truncate.zig | 1 + test/behavior/try.zig | 2 + test/behavior/tuple.zig | 19 + test/behavior/tuple_declarations.zig | 2 + test/behavior/type.zig | 3 + test/behavior/type_info.zig | 5 + test/behavior/typename.zig | 8 + test/behavior/undefined.zig | 2 + test/behavior/underscore.zig | 1 + test/behavior/union.zig | 66 + test/behavior/union_with_members.zig | 1 + test/behavior/usingnamespace.zig | 13 + test/behavior/usingnamespace/file_1.zig | 3 + test/behavior/usingnamespace/import_segregation.zig | 1 + test/behavior/var_args.zig | 15 + test/behavior/vector.zig | 46 +- test/behavior/void.zig | 2 + test/behavior/wasm.zig | 2 + test/behavior/while.zig | 13 + test/behavior/widening.zig | 5 + test/behavior/wrapping_arithmetic.zig | 3 + test/cases/compile_errors/capture_by_ref_while.zig | 2 +- test/cases/compile_errors/switch_expression-missing_error_prong.zig | 2 +- test/cases/compile_errors/switch_expression-multiple_else_prongs.zig | 4 +- test/cases/inherit_want_safety.zig | 2 +- test/tests.zig | 14 + 135 files changed, 6570 insertions(+), 1660 deletions(-)