From cec48f2cf1009653ac1097328b75beaf0bf198d2 Mon Sep 17 00:00:00 2001 From: Koakuma Date: Sat, 2 Apr 2022 08:44:56 +0700 Subject: [PATCH] stage2: sparcv9: Different formatting for genBody --- src/arch/sparcv9/CodeGen.zig | 337 ++++++++++++++++++----------------- 1 file changed, 178 insertions(+), 159 deletions(-) diff --git a/src/arch/sparcv9/CodeGen.zig b/src/arch/sparcv9/CodeGen.zig index 33dc0e1f8f..35d9f5bfa5 100644 --- a/src/arch/sparcv9/CodeGen.zig +++ b/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"), + // 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)"), - .wasm_memory_size, .wasm_memory_grow => unreachable, + .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) {