Commit cec48f2cf1

Koakuma <koachan@protonmail.com>
2022-04-02 03:44:56
stage2: sparcv9: Different formatting for genBody
1 parent 5ab6b5a
Changed files (1)
src
arch
sparcv9
src/arch/sparcv9/CodeGen.zig
@@ -481,166 +481,185 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
         try self.ensureProcessDeathCapacity(Liveness.bpi);
 
         switch (air_tags[inst]) {
-            .arg => @panic("TODO implement arg"),
-            .add => @panic("TODO implement add"),
-            .addwrap => @panic("TODO implement addwrap"),
-            .add_sat => @panic("TODO implement add_sat"),
-            .sub => @panic("TODO implement sub"),
-            .subwrap => @panic("TODO implement subwrap"),
-            .sub_sat => @panic("TODO implement sub_sat"),
-            .mul => @panic("TODO implement mul"),
-            .mulwrap => @panic("TODO implement mulwrap"),
-            .mul_sat => @panic("TODO implement mul_sat"),
-            .div_float => @panic("TODO implement div_float"),
-            .div_trunc => @panic("TODO implement div_trunc"),
-            .div_floor => @panic("TODO implement div_floor"),
-            .div_exact => @panic("TODO implement div_exact"),
-            .rem => @panic("TODO implement rem"),
-            .mod => @panic("TODO implement mod"),
-            .ptr_add => @panic("TODO implement ptr_add"),
-            .ptr_sub => @panic("TODO implement ptr_sub"),
-            .max => @panic("TODO implement max"),
-            .min => @panic("TODO implement min"),
-            .add_with_overflow => @panic("TODO implement add_with_overflow"),
-            .sub_with_overflow => @panic("TODO implement sub_with_overflow"),
-            .mul_with_overflow => @panic("TODO implement mul_with_overflow"),
-            .shl_with_overflow => @panic("TODO implement shl_with_overflow"),
-            .alloc => @panic("TODO implement alloc"),
-            .ret_ptr => @panic("TODO implement ret_ptr"),
-            .assembly => @panic("TODO implement assembly"),
-            .bit_and => @panic("TODO implement bit_and"),
-            .bit_or => @panic("TODO implement bit_or"),
-            .shr => @panic("TODO implement shr"),
-            .shr_exact => @panic("TODO implement shr_exact"),
-            .shl => @panic("TODO implement shl"),
-            .shl_exact => @panic("TODO implement shl_exact"),
-            .shl_sat => @panic("TODO implement shl_sat"),
-            .xor => @panic("TODO implement xor"),
-            .not => @panic("TODO implement not"),
-            .bitcast => @panic("TODO implement bitcast"),
-            .block => @panic("TODO implement block"),
-            .loop => @panic("TODO implement loop"),
-            .br => @panic("TODO implement br"),
-            .breakpoint => @panic("TODO implement breakpoint"),
-            .ret_addr => @panic("TODO implement ret_addr"),
-            .frame_addr => @panic("TODO implement frame_addr"),
-            .call => @panic("TODO implement call"),
-            .call_always_tail => @panic("TODO implement call_always_tail"),
-            .call_never_tail => @panic("TODO implement call_never_tail"),
-            .call_never_inline => @panic("TODO implement call_never_inline"),
-            .clz => @panic("TODO implement clz"),
-            .ctz => @panic("TODO implement ctz"),
-            .popcount => @panic("TODO implement popcount"),
-            .byte_swap => @panic("TODO implement byte_swap"),
-            .bit_reverse => @panic("TODO implement bit_reverse"),
-            .sqrt => @panic("TODO implement sqrt"),
-            .sin => @panic("TODO implement sin"),
-            .cos => @panic("TODO implement cos"),
-            .exp => @panic("TODO implement exp"),
-            .exp2 => @panic("TODO implement exp2"),
-            .log => @panic("TODO implement log"),
-            .log2 => @panic("TODO implement log2"),
-            .log10 => @panic("TODO implement log10"),
-            .fabs => @panic("TODO implement fabs"),
-            .floor => @panic("TODO implement floor"),
-            .ceil => @panic("TODO implement ceil"),
-            .round => @panic("TODO implement round"),
-            .trunc_float => @panic("TODO implement trunc_float"),
-            .cmp_lt => @panic("TODO implement cmp_lt"),
-            .cmp_lte => @panic("TODO implement cmp_lte"),
-            .cmp_eq => @panic("TODO implement cmp_eq"),
-            .cmp_gte => @panic("TODO implement cmp_gte"),
-            .cmp_gt => @panic("TODO implement cmp_gt"),
-            .cmp_neq => @panic("TODO implement cmp_neq"),
-            .cmp_vector => @panic("TODO implement cmp_vector"),
-            .cond_br => @panic("TODO implement cond_br"),
-            .switch_br => @panic("TODO implement switch_br"),
-            .constant => @panic("TODO implement constant"),
-            .const_ty => @panic("TODO implement const_ty"),
-            .dbg_stmt => @panic("TODO implement dbg_stmt"),
-            .dbg_block_begin => @panic("TODO implement dbg_block_begin"),
-            .dbg_block_end => @panic("TODO implement dbg_block_end"),
-            .dbg_inline_begin => @panic("TODO implement dbg_inline_begin"),
-            .dbg_inline_end => @panic("TODO implement dbg_inline_end"),
-            .dbg_var_ptr => @panic("TODO implement dbg_var_ptr"),
-            .dbg_var_val => @panic("TODO implement dbg_var_val"),
-            .is_null => @panic("TODO implement is_null"),
-            .is_non_null => @panic("TODO implement is_non_null"),
-            .is_null_ptr => @panic("TODO implement is_null_ptr"),
-            .is_non_null_ptr => @panic("TODO implement is_non_null_ptr"),
-            .is_err => @panic("TODO implement is_err"),
-            .is_non_err => @panic("TODO implement is_non_err"),
-            .is_err_ptr => @panic("TODO implement is_err_ptr"),
-            .is_non_err_ptr => @panic("TODO implement is_non_err_ptr"),
-            .bool_and => @panic("TODO implement bool_and"),
-            .bool_or => @panic("TODO implement bool_or"),
-            .load => @panic("TODO implement load"),
-            .ptrtoint => @panic("TODO implement ptrtoint"),
-            .bool_to_int => @panic("TODO implement bool_to_int"),
-            .ret => @panic("TODO implement ret"),
-            .ret_load => @panic("TODO implement ret_load"),
-            .store => @panic("TODO implement store"),
-            .unreach => @panic("TODO implement unreach"),
-            .fptrunc => @panic("TODO implement fptrunc"),
-            .fpext => @panic("TODO implement fpext"),
-            .intcast => @panic("TODO implement intcast"),
-            .trunc => @panic("TODO implement trunc"),
-            .optional_payload => @panic("TODO implement optional_payload"),
-            .optional_payload_ptr => @panic("TODO implement optional_payload_ptr"),
-            .optional_payload_ptr_set => @panic("TODO implement optional_payload_ptr_set"),
-            .wrap_optional => @panic("TODO implement wrap_optional"),
-            .unwrap_errunion_payload => @panic("TODO implement unwrap_errunion_payload"),
-            .unwrap_errunion_err => @panic("TODO implement unwrap_errunion_err"),
-            .unwrap_errunion_payload_ptr => @panic("TODO implement unwrap_errunion_payload_ptr"),
-            .unwrap_errunion_err_ptr => @panic("TODO implement unwrap_errunion_err_ptr"),
-            .errunion_payload_ptr_set => @panic("TODO implement errunion_payload_ptr_set"),
-            .wrap_errunion_payload => @panic("TODO implement wrap_errunion_payload"),
-            .wrap_errunion_err => @panic("TODO implement wrap_errunion_err"),
-            .struct_field_ptr => @panic("TODO implement struct_field_ptr"),
-            .struct_field_ptr_index_0 => @panic("TODO implement struct_field_ptr_index_0"),
-            .struct_field_ptr_index_1 => @panic("TODO implement struct_field_ptr_index_1"),
-            .struct_field_ptr_index_2 => @panic("TODO implement struct_field_ptr_index_2"),
-            .struct_field_ptr_index_3 => @panic("TODO implement struct_field_ptr_index_3"),
-            .struct_field_val => @panic("TODO implement struct_field_val"),
-            .set_union_tag => @panic("TODO implement set_union_tag"),
-            .get_union_tag => @panic("TODO implement get_union_tag"),
-            .slice => @panic("TODO implement slice"),
-            .slice_len => @panic("TODO implement slice_len"),
-            .slice_ptr => @panic("TODO implement slice_ptr"),
-            .ptr_slice_len_ptr => @panic("TODO implement ptr_slice_len_ptr"),
-            .ptr_slice_ptr_ptr => @panic("TODO implement ptr_slice_ptr_ptr"),
-            .array_elem_val => @panic("TODO implement array_elem_val"),
-            .slice_elem_val => @panic("TODO implement slice_elem_val"),
-            .slice_elem_ptr => @panic("TODO implement slice_elem_ptr"),
-            .ptr_elem_val => @panic("TODO implement ptr_elem_val"),
-            .ptr_elem_ptr => @panic("TODO implement ptr_elem_ptr"),
-            .array_to_slice => @panic("TODO implement array_to_slice"),
-            .float_to_int => @panic("TODO implement float_to_int"),
-            .int_to_float => @panic("TODO implement int_to_float"),
-            .reduce => @panic("TODO implement reduce"),
-            .splat => @panic("TODO implement splat"),
-            .shuffle => @panic("TODO implement shuffle"),
-            .select => @panic("TODO implement select"),
-            .memset => @panic("TODO implement memset"),
-            .memcpy => @panic("TODO implement memcpy"),
-            .cmpxchg_weak => @panic("TODO implement cmpxchg_weak"),
-            .cmpxchg_strong => @panic("TODO implement cmpxchg_strong"),
-            .fence => @panic("TODO implement fence"),
-            .atomic_load => @panic("TODO implement atomic_load"),
-            .atomic_store_unordered => @panic("TODO implement atomic_store_unordered"),
-            .atomic_store_monotonic => @panic("TODO implement atomic_store_monotonic"),
-            .atomic_store_release => @panic("TODO implement atomic_store_release"),
-            .atomic_store_seq_cst => @panic("TODO implement atomic_store_seq_cst"),
-            .atomic_rmw => @panic("TODO implement atomic_rmw"),
-            .tag_name => @panic("TODO implement tag_name"),
-            .error_name => @panic("TODO implement error_name"),
-            .aggregate_init => @panic("TODO implement aggregate_init"),
-            .union_init => @panic("TODO implement union_init"),
-            .prefetch => @panic("TODO implement prefetch"),
-            .mul_add => @panic("TODO implement mul_add"),
-            .field_parent_ptr => @panic("TODO implement field_parent_ptr"),
-
-            .wasm_memory_size, .wasm_memory_grow => unreachable,
+            // zig fmt: off
+            .add, .ptr_add   => @panic("TODO try self.airBinOp(inst)"),
+            .addwrap         => @panic("TODO try self.airAddWrap(inst)"),
+            .add_sat         => @panic("TODO try self.airAddSat(inst)"),
+            .sub, .ptr_sub   => @panic("TODO try self.airBinOp(inst)"),
+            .subwrap         => @panic("TODO try self.airSubWrap(inst)"),
+            .sub_sat         => @panic("TODO try self.airSubSat(inst)"),
+            .mul             => @panic("TODO try self.airMul(inst)"),
+            .mulwrap         => @panic("TODO try self.airMulWrap(inst)"),
+            .mul_sat         => @panic("TODO try self.airMulSat(inst)"),
+            .rem             => @panic("TODO try self.airRem(inst)"),
+            .mod             => @panic("TODO try self.airMod(inst)"),
+            .shl, .shl_exact => @panic("TODO try self.airShl(inst)"),
+            .shl_sat         => @panic("TODO try self.airShlSat(inst)"),
+            .min             => @panic("TODO try self.airMin(inst)"),
+            .max             => @panic("TODO try self.airMax(inst)"),
+            .slice           => @panic("TODO try self.airSlice(inst)"),
+
+            .sqrt,
+            .sin,
+            .cos,
+            .exp,
+            .exp2,
+            .log,
+            .log2,
+            .log10,
+            .fabs,
+            .floor,
+            .ceil,
+            .round,
+            .trunc_float,
+            => @panic("TODO try self.airUnaryMath(inst)"),
+
+            .add_with_overflow => @panic("TODO try self.airAddWithOverflow(inst)"),
+            .sub_with_overflow => @panic("TODO try self.airSubWithOverflow(inst)"),
+            .mul_with_overflow => @panic("TODO try self.airMulWithOverflow(inst)"),
+            .shl_with_overflow => @panic("TODO try self.airShlWithOverflow(inst)"),
+
+            .div_float, .div_trunc, .div_floor, .div_exact => @panic("TODO try self.airDiv(inst)"),
+
+            .cmp_lt  => @panic("TODO try self.airCmp(inst, .lt)"),
+            .cmp_lte => @panic("TODO try self.airCmp(inst, .lte)"),
+            .cmp_eq  => @panic("TODO try self.airCmp(inst, .eq)"),
+            .cmp_gte => @panic("TODO try self.airCmp(inst, .gte)"),
+            .cmp_gt  => @panic("TODO try self.airCmp(inst, .gt)"),
+            .cmp_neq => @panic("TODO try self.airCmp(inst, .neq)"),
+            .cmp_vector => @panic("TODO try self.airCmpVector(inst)"),
+
+            .bool_and        => @panic("TODO try self.airBoolOp(inst)"),
+            .bool_or         => @panic("TODO try self.airBoolOp(inst)"),
+            .bit_and         => @panic("TODO try self.airBitAnd(inst)"),
+            .bit_or          => @panic("TODO try self.airBitOr(inst)"),
+            .xor             => @panic("TODO try self.airXor(inst)"),
+            .shr, .shr_exact => @panic("TODO try self.airShr(inst)"),
+
+            .alloc           => @panic("TODO try self.airAlloc(inst)"),
+            .ret_ptr         => @panic("TODO try self.airRetPtr(inst)"),
+            .arg             => @panic("TODO try self.airArg(inst)"),
+            .assembly        => @panic("TODO try self.airAsm(inst)"),
+            .bitcast         => @panic("TODO try self.airBitCast(inst)"),
+            .block           => @panic("TODO try self.airBlock(inst)"),
+            .br              => @panic("TODO try self.airBr(inst)"),
+            .breakpoint      => @panic("TODO try self.airBreakpoint()"),
+            .ret_addr        => @panic("TODO try self.airRetAddr(inst)"),
+            .frame_addr      => @panic("TODO try self.airFrameAddress(inst)"),
+            .fence           => @panic("TODO try self.airFence()"),
+            .cond_br         => @panic("TODO try self.airCondBr(inst)"),
+            .dbg_stmt        => @panic("TODO try self.airDbgStmt(inst)"),
+            .fptrunc         => @panic("TODO try self.airFptrunc(inst)"),
+            .fpext           => @panic("TODO try self.airFpext(inst)"),
+            .intcast         => @panic("TODO try self.airIntCast(inst)"),
+            .trunc           => @panic("TODO try self.airTrunc(inst)"),
+            .bool_to_int     => @panic("TODO try self.airBoolToInt(inst)"),
+            .is_non_null     => @panic("TODO try self.airIsNonNull(inst)"),
+            .is_non_null_ptr => @panic("TODO try self.airIsNonNullPtr(inst)"),
+            .is_null         => @panic("TODO try self.airIsNull(inst)"),
+            .is_null_ptr     => @panic("TODO try self.airIsNullPtr(inst)"),
+            .is_non_err      => @panic("TODO try self.airIsNonErr(inst)"),
+            .is_non_err_ptr  => @panic("TODO try self.airIsNonErrPtr(inst)"),
+            .is_err          => @panic("TODO try self.airIsErr(inst)"),
+            .is_err_ptr      => @panic("TODO try self.airIsErrPtr(inst)"),
+            .load            => @panic("TODO try self.airLoad(inst)"),
+            .loop            => @panic("TODO try self.airLoop(inst)"),
+            .not             => @panic("TODO try self.airNot(inst)"),
+            .ptrtoint        => @panic("TODO try self.airPtrToInt(inst)"),
+            .ret             => @panic("TODO try self.airRet(inst)"),
+            .ret_load        => @panic("TODO try self.airRetLoad(inst)"),
+            .store           => @panic("TODO try self.airStore(inst)"),
+            .struct_field_ptr=> @panic("TODO try self.airStructFieldPtr(inst)"),
+            .struct_field_val=> @panic("TODO try self.airStructFieldVal(inst)"),
+            .array_to_slice  => @panic("TODO try self.airArrayToSlice(inst)"),
+            .int_to_float    => @panic("TODO try self.airIntToFloat(inst)"),
+            .float_to_int    => @panic("TODO try self.airFloatToInt(inst)"),
+            .cmpxchg_strong  => @panic("TODO try self.airCmpxchg(inst)"),
+            .cmpxchg_weak    => @panic("TODO try self.airCmpxchg(inst)"),
+            .atomic_rmw      => @panic("TODO try self.airAtomicRmw(inst)"),
+            .atomic_load     => @panic("TODO try self.airAtomicLoad(inst)"),
+            .memcpy          => @panic("TODO try self.airMemcpy(inst)"),
+            .memset          => @panic("TODO try self.airMemset(inst)"),
+            .set_union_tag   => @panic("TODO try self.airSetUnionTag(inst)"),
+            .get_union_tag   => @panic("TODO try self.airGetUnionTag(inst)"),
+            .clz             => @panic("TODO try self.airClz(inst)"),
+            .ctz             => @panic("TODO try self.airCtz(inst)"),
+            .popcount        => @panic("TODO try self.airPopcount(inst)"),
+            .byte_swap       => @panic("TODO try self.airByteSwap(inst)"),
+            .bit_reverse     => @panic("TODO try self.airBitReverse(inst)"),
+            .tag_name        => @panic("TODO try self.airTagName(inst)"),
+            .error_name      => @panic("TODO try self.airErrorName(inst)"),
+            .splat           => @panic("TODO try self.airSplat(inst)"),
+            .select          => @panic("TODO try self.airSelect(inst)"),
+            .shuffle         => @panic("TODO try self.airShuffle(inst)"),
+            .reduce          => @panic("TODO try self.airReduce(inst)"),
+            .aggregate_init  => @panic("TODO try self.airAggregateInit(inst)"),
+            .union_init      => @panic("TODO try self.airUnionInit(inst)"),
+            .prefetch        => @panic("TODO try self.airPrefetch(inst)"),
+            .mul_add         => @panic("TODO try self.airMulAdd(inst)"),
+
+            .dbg_var_ptr,
+            .dbg_var_val,
+            => @panic("TODO try self.airDbgVar(inst)"),
+
+            .dbg_inline_begin,
+            .dbg_inline_end,
+            => @panic("TODO try self.airDbgInline(inst)"),
+
+            .dbg_block_begin,
+            .dbg_block_end,
+            => @panic("TODO try self.airDbgBlock(inst)"),
+
+            .call              => @panic("TODO try self.airCall(inst, .auto)"),
+            .call_always_tail  => @panic("TODO try self.airCall(inst, .always_tail)"),
+            .call_never_tail   => @panic("TODO try self.airCall(inst, .never_tail)"),
+            .call_never_inline => @panic("TODO try self.airCall(inst, .never_inline)"),
+
+            .atomic_store_unordered => @panic("TODO try self.airAtomicStore(inst, .Unordered)"),
+            .atomic_store_monotonic => @panic("TODO try self.airAtomicStore(inst, .Monotonic)"),
+            .atomic_store_release   => @panic("TODO try self.airAtomicStore(inst, .Release)"),
+            .atomic_store_seq_cst   => @panic("TODO try self.airAtomicStore(inst, .SeqCst)"),
+
+            .struct_field_ptr_index_0 => @panic("TODO try self.airStructFieldPtrIndex(inst, 0)"),
+            .struct_field_ptr_index_1 => @panic("TODO try self.airStructFieldPtrIndex(inst, 1)"),
+            .struct_field_ptr_index_2 => @panic("TODO try self.airStructFieldPtrIndex(inst, 2)"),
+            .struct_field_ptr_index_3 => @panic("TODO try self.airStructFieldPtrIndex(inst, 3)"),
+
+            .field_parent_ptr => @panic("TODO try self.airFieldParentPtr(inst)"),
+
+            .switch_br       => @panic("TODO try self.airSwitch(inst)"),
+            .slice_ptr       => @panic("TODO try self.airSlicePtr(inst)"),
+            .slice_len       => @panic("TODO try self.airSliceLen(inst)"),
+
+            .ptr_slice_len_ptr => @panic("TODO try self.airPtrSliceLenPtr(inst)"),
+            .ptr_slice_ptr_ptr => @panic("TODO try self.airPtrSlicePtrPtr(inst)"),
+
+            .array_elem_val      => @panic("TODO try self.airArrayElemVal(inst)"),
+            .slice_elem_val      => @panic("TODO try self.airSliceElemVal(inst)"),
+            .slice_elem_ptr      => @panic("TODO try self.airSliceElemPtr(inst)"),
+            .ptr_elem_val        => @panic("TODO try self.airPtrElemVal(inst)"),
+            .ptr_elem_ptr        => @panic("TODO try self.airPtrElemPtr(inst)"),
+
+            .constant => unreachable, // excluded from function bodies
+            .const_ty => unreachable, // excluded from function bodies
+            .unreach  => @panic("TODO self.finishAirBookkeeping()"),
+
+            .optional_payload           => @panic("TODO try self.airOptionalPayload(inst)"),
+            .optional_payload_ptr       => @panic("TODO try self.airOptionalPayloadPtr(inst)"),
+            .optional_payload_ptr_set   => @panic("TODO try self.airOptionalPayloadPtrSet(inst)"),
+            .unwrap_errunion_err        => @panic("TODO try self.airUnwrapErrErr(inst)"),
+            .unwrap_errunion_payload    => @panic("TODO try self.airUnwrapErrPayload(inst)"),
+            .unwrap_errunion_err_ptr    => @panic("TODO try self.airUnwrapErrErrPtr(inst)"),
+            .unwrap_errunion_payload_ptr=> @panic("TODO try self.airUnwrapErrPayloadPtr(inst)"),
+            .errunion_payload_ptr_set   => @panic("TODO try self.airErrUnionPayloadPtrSet(inst)"),
+
+            .wrap_optional         => @panic("TODO try self.airWrapOptional(inst)"),
+            .wrap_errunion_payload => @panic("TODO try self.airWrapErrUnionPayload(inst)"),
+            .wrap_errunion_err     => @panic("TODO try self.airWrapErrUnionErr(inst)"),
+
+            .wasm_memory_size => unreachable,
+            .wasm_memory_grow => unreachable,
+            // zig fmt: on
         }
 
         if (std.debug.runtime_safety) {