| ... | @@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2414 | } | 2414 | } |
| 2415 | | 2415 | |
| 2416 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | 2416 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2417 | @setEvalBranchQuota(4_500); | 2417 | @setEvalBranchQuota(9_600); |
| 2418 | const pt = cg.pt; | 2418 | const pt = cg.pt; |
| 2419 | const zcu = pt.zcu; | 2419 | const zcu = pt.zcu; |
| 2420 | const ip = &zcu.intern_pool; | 2420 | const ip = &zcu.intern_pool; |
| ... | @@ -2450,23 +2450,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2450,23 +2450,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2450 | try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1); | 2450 | try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1); |
| 2451 | switch (air_tags[@intFromEnum(inst)]) { | 2451 | switch (air_tags[@intFromEnum(inst)]) { |
| 2452 | // zig fmt: off | 2452 | // zig fmt: off |
| 2453 | .add, | | |
| 2454 | .add_wrap, | 2453 | .add_wrap, |
| 2455 | .sub, | | |
| 2456 | .sub_wrap, | 2454 | .sub_wrap, |
| 2457 | => |air_tag| try cg.airBinOp(inst, air_tag), | 2455 | => |air_tag| try cg.airBinOp(inst, air_tag), |
| 2458 | | 2456 | |
| 2459 | .shr, .shr_exact => try cg.airShlShrBinOp(inst), | 2457 | .shr, .shr_exact => try cg.airShlShrBinOp(inst), |
| 2460 | .shl, .shl_exact => try cg.airShlShrBinOp(inst), | 2458 | .shl, .shl_exact => try cg.airShlShrBinOp(inst), |
| 2461 | | 2459 | |
| 2462 | .mul, | | |
| 2463 | .mul_wrap, | 2460 | .mul_wrap, |
| 2464 | .rem, | | |
| 2465 | .mod, | | |
| 2466 | .div_float, | | |
| 2467 | .div_trunc, | | |
| 2468 | .div_floor, | | |
| 2469 | .div_exact, | | |
| 2470 | => |air_tag| try cg.airMulDivBinOp(inst, air_tag), | 2461 | => |air_tag| try cg.airMulDivBinOp(inst, air_tag), |
| 2471 | | 2462 | |
| 2472 | .add_sat => try cg.airAddSat(inst), | 2463 | .add_sat => try cg.airAddSat(inst), |
| ... | @@ -2474,23 +2465,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2474,23 +2465,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2474 | .mul_sat => try cg.airMulSat(inst), | 2465 | .mul_sat => try cg.airMulSat(inst), |
| 2475 | .shl_sat => try cg.airShlSat(inst), | 2466 | .shl_sat => try cg.airShlSat(inst), |
| 2476 | | 2467 | |
| 2477 | .sin, | | |
| 2478 | .cos, | | |
| 2479 | .tan, | | |
| 2480 | .exp, | | |
| 2481 | .exp2, | | |
| 2482 | .log, | | |
| 2483 | .log2, | | |
| 2484 | .log10, | | |
| 2485 | .round, | | |
| 2486 | => |air_tag| try cg.airUnaryMath(inst, air_tag), | | |
| 2487 | | | |
| 2488 | .floor => try cg.airRound(inst, .{ .mode = .down, .precision = .inexact }), | | |
| 2489 | .ceil => try cg.airRound(inst, .{ .mode = .up, .precision = .inexact }), | | |
| 2490 | .trunc_float => try cg.airRound(inst, .{ .mode = .zero, .precision = .inexact }), | | |
| 2491 | .sqrt => try cg.airSqrt(inst), | | |
| 2492 | .neg => |air_tag| try cg.airFloatSign(inst, air_tag), | | |
| 2493 | | | |
| 2494 | .add_with_overflow => try cg.airAddSubWithOverflow(inst), | 2468 | .add_with_overflow => try cg.airAddSubWithOverflow(inst), |
| 2495 | .sub_with_overflow => try cg.airAddSubWithOverflow(inst), | 2469 | .sub_with_overflow => try cg.airAddSubWithOverflow(inst), |
| 2496 | .mul_with_overflow => try cg.airMulWithOverflow(inst), | 2470 | .mul_with_overflow => try cg.airMulWithOverflow(inst), |
| ... | @@ -2499,7 +2473,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2499,7 +2473,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2499 | .cmp_lt_errors_len => try cg.airCmpLtErrorsLen(inst), | 2473 | .cmp_lt_errors_len => try cg.airCmpLtErrorsLen(inst), |
| 2500 | | 2474 | |
| 2501 | .bitcast => try cg.airBitCast(inst), | 2475 | .bitcast => try cg.airBitCast(inst), |
| 2502 | .trunc => try cg.airTrunc(inst), | | |
| 2503 | .is_non_null => try cg.airIsNonNull(inst), | 2476 | .is_non_null => try cg.airIsNonNull(inst), |
| 2504 | .is_null => try cg.airIsNull(inst), | 2477 | .is_null => try cg.airIsNull(inst), |
| 2505 | .is_non_err => try cg.airIsNonErr(inst), | 2478 | .is_non_err => try cg.airIsNonErr(inst), |
| ... | @@ -2525,7 +2498,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2525,7 +2498,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2525 | .reduce => try cg.airReduce(inst), | 2498 | .reduce => try cg.airReduce(inst), |
| 2526 | .aggregate_init => try cg.airAggregateInit(inst), | 2499 | .aggregate_init => try cg.airAggregateInit(inst), |
| 2527 | .prefetch => try cg.airPrefetch(inst), | 2500 | .prefetch => try cg.airPrefetch(inst), |
| 2528 | .mul_add => try cg.airMulAdd(inst), | | |
| 2529 | | 2501 | |
| 2530 | .atomic_store_unordered => try cg.airAtomicStore(inst, .unordered), | 2502 | .atomic_store_unordered => try cg.airAtomicStore(inst, .unordered), |
| 2531 | .atomic_store_monotonic => try cg.airAtomicStore(inst, .monotonic), | 2503 | .atomic_store_monotonic => try cg.airAtomicStore(inst, .monotonic), |
| ... | @@ -2549,16 +2521,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2549,16 +2521,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2549 | .intcast_safe, | 2521 | .intcast_safe, |
| 2550 | => return cg.fail("TODO implement safety_checked_instructions", .{}), | 2522 | => return cg.fail("TODO implement safety_checked_instructions", .{}), |
| 2551 | | 2523 | |
| 2552 | .add_optimized => try cg.airBinOp(inst, .add), | | |
| 2553 | .sub_optimized => try cg.airBinOp(inst, .sub), | | |
| 2554 | .mul_optimized => try cg.airBinOp(inst, .mul), | | |
| 2555 | .div_float_optimized => try cg.airMulDivBinOp(inst, .div_float), | | |
| 2556 | .div_trunc_optimized => try cg.airMulDivBinOp(inst, .div_trunc), | | |
| 2557 | .div_floor_optimized => try cg.airMulDivBinOp(inst, .div_floor), | | |
| 2558 | .div_exact_optimized => try cg.airMulDivBinOp(inst, .div_exact), | | |
| 2559 | .rem_optimized => try cg.airMulDivBinOp(inst, .rem), | | |
| 2560 | .mod_optimized => try cg.airMulDivBinOp(inst, .mod), | | |
| 2561 | .neg_optimized => try cg.airFloatSign(inst, .neg), | | |
| 2562 | .reduce_optimized => try cg.airReduce(inst), | 2524 | .reduce_optimized => try cg.airReduce(inst), |
| 2563 | .int_from_float_optimized => try cg.airIntFromFloat(inst), | 2525 | .int_from_float_optimized => try cg.airIntFromFloat(inst), |
| 2564 | | 2526 | |
| ... | @@ -2576,490 +2538,630 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2576,490 +2538,630 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2576 | if (arg != .none) break; | 2538 | if (arg != .none) break; |
| 2577 | } else try cg.airDbgVarArgs(); | 2539 | } else try cg.airDbgVarArgs(); |
| 2578 | }, | 2540 | }, |
| 2579 | .ptr_add => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else { | 2541 | .add, .add_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .add) else fallback: { |
| 2580 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; | 2542 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| 2581 | const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data; | 2543 | if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airBinOp(inst, air_tag); |
| 2582 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); | 2544 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| 2583 | try ops[0].toSlicePtr(cg); | | |
| 2584 | var res: [1]Temp = undefined; | 2545 | var res: [1]Temp = undefined; |
| 2585 | if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{ | 2546 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ |
| 2586 | .patterns = &.{ | 2547 | .required_features = .{ .f16c, null, null, null }, |
| 2587 | .{ .src = .{ .to_gpr, .simm32 } }, | 2548 | .src_constraints = .{ |
| | 2549 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 2550 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 2551 | .any, |
| 2588 | }, | 2552 | }, |
| 2589 | .dst_temps = .{.{ .rc = .general_purpose }}, | | |
| 2590 | .each = .{ .once = &.{ | | |
| 2591 | .{ ._, ._, .lea, .dst0p, .leaa(.src0, .add_src0_elem_size_times_src1), ._, ._ }, | | |
| 2592 | } }, | | |
| 2593 | }, .{ | | |
| 2594 | .dst_constraints = .{.{ .elem_size_is = 1 }}, | | |
| 2595 | .patterns = &.{ | 2553 | .patterns = &.{ |
| 2596 | .{ .src = .{ .to_gpr, .to_gpr } }, | 2554 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 2597 | }, | 2555 | }, |
| 2598 | .dst_temps = .{.{ .rc = .general_purpose }}, | 2556 | .extra_temps = .{ |
| 2599 | .each = .{ .once = &.{ | 2557 | .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 2600 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ }, | 2558 | .unused, |
| 2601 | } }, | 2559 | .unused, |
| 2602 | }, .{ | 2560 | .unused, |
| 2603 | .dst_constraints = .{.{ .elem_size_is = 2 }}, | 2561 | .unused, |
| 2604 | .patterns = &.{ | 2562 | .unused, |
| 2605 | .{ .src = .{ .to_gpr, .to_gpr } }, | 2563 | .unused, |
| | 2564 | .unused, |
| | 2565 | .unused, |
| 2606 | }, | 2566 | }, |
| 2607 | .dst_temps = .{.{ .rc = .general_purpose }}, | 2567 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 2608 | .each = .{ .once = &.{ | 2568 | .each = .{ .once = &.{ |
| 2609 | .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ }, | 2569 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 2570 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| | 2571 | .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0d, ._ }, |
| | 2572 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 2610 | } }, | 2573 | } }, |
| 2611 | }, .{ | 2574 | }, .{ |
| 2612 | .dst_constraints = .{.{ .elem_size_is = 2 + 1 }}, | 2575 | .required_features = .{ .sse, null, null, null }, |
| 2613 | .patterns = &.{ | 2576 | .src_constraints = .{ |
| 2614 | .{ .src = .{ .to_gpr, .to_gpr } }, | 2577 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 2578 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 2579 | .any, |
| 2615 | }, | 2580 | }, |
| 2616 | .dst_temps = .{.{ .rc = .general_purpose }}, | | |
| 2617 | .each = .{ .once = &.{ | | |
| 2618 | .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ }, | | |
| 2619 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, | | |
| 2620 | } }, | | |
| 2621 | }, .{ | | |
| 2622 | .dst_constraints = .{.{ .elem_size_is = 4 }}, | | |
| 2623 | .patterns = &.{ | 2581 | .patterns = &.{ |
| 2624 | .{ .src = .{ .to_gpr, .to_gpr } }, | 2582 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 2625 | }, | 2583 | }, |
| 2626 | .dst_temps = .{.{ .rc = .general_purpose }}, | 2584 | .call_frame = .{ .alignment = .@"16" }, |
| 2627 | .each = .{ .once = &.{ | 2585 | .extra_temps = .{ |
| 2628 | .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ }, | 2586 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| 2629 | } }, | 2587 | .unused, |
| 2630 | }, .{ | 2588 | .unused, |
| 2631 | .dst_constraints = .{.{ .elem_size_is = 4 + 1 }}, | 2589 | .unused, |
| 2632 | .patterns = &.{ | 2590 | .unused, |
| 2633 | .{ .src = .{ .to_gpr, .to_gpr } }, | 2591 | .unused, |
| | 2592 | .unused, |
| | 2593 | .unused, |
| | 2594 | .unused, |
| 2634 | }, | 2595 | }, |
| 2635 | .dst_temps = .{.{ .ref = .src1 }}, | 2596 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 2597 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 2636 | .each = .{ .once = &.{ | 2598 | .each = .{ .once = &.{ |
| 2637 | .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ }, | 2599 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 2638 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, | | |
| 2639 | } }, | 2600 | } }, |
| 2640 | }, .{ | 2601 | }, .{ |
| 2641 | .required_features = .{ .@"64bit", null, null, null }, | 2602 | .required_features = .{ .f16c, null, null, null }, |
| 2642 | .dst_constraints = .{.{ .elem_size_is = 8 }}, | 2603 | .src_constraints = .{ |
| | 2604 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 2605 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 2606 | .any, |
| | 2607 | }, |
| 2643 | .patterns = &.{ | 2608 | .patterns = &.{ |
| 2644 | .{ .src = .{ .to_gpr, .to_gpr } }, | 2609 | .{ .src = .{ .mem, .mem, .none } }, |
| | 2610 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 2611 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 2612 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 2645 | }, | 2613 | }, |
| 2646 | .dst_temps = .{.{ .rc = .general_purpose }}, | 2614 | .extra_temps = .{ |
| | 2615 | .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| | 2616 | .unused, |
| | 2617 | .unused, |
| | 2618 | .unused, |
| | 2619 | .unused, |
| | 2620 | .unused, |
| | 2621 | .unused, |
| | 2622 | .unused, |
| | 2623 | .unused, |
| | 2624 | }, |
| | 2625 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 2647 | .each = .{ .once = &.{ | 2626 | .each = .{ .once = &.{ |
| 2648 | .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ }, | 2627 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 2628 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| | 2629 | .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ }, |
| | 2630 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 2649 | } }, | 2631 | } }, |
| 2650 | }, .{ | 2632 | }, .{ |
| 2651 | .required_features = .{ .@"64bit", null, null, null }, | 2633 | .required_features = .{ .f16c, null, null, null }, |
| 2652 | .dst_constraints = .{.{ .elem_size_is = 8 + 1 }}, | 2634 | .src_constraints = .{ |
| | 2635 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 2636 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 2637 | .any, |
| | 2638 | }, |
| 2653 | .patterns = &.{ | 2639 | .patterns = &.{ |
| 2654 | .{ .src = .{ .to_gpr, .to_gpr } }, | 2640 | .{ .src = .{ .mem, .mem, .none } }, |
| | 2641 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 2642 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 2643 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 2655 | }, | 2644 | }, |
| 2656 | .dst_temps = .{.{ .ref = .src1 }}, | 2645 | .extra_temps = .{ |
| | 2646 | .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| | 2647 | .unused, |
| | 2648 | .unused, |
| | 2649 | .unused, |
| | 2650 | .unused, |
| | 2651 | .unused, |
| | 2652 | .unused, |
| | 2653 | .unused, |
| | 2654 | .unused, |
| | 2655 | }, |
| | 2656 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 2657 | .each = .{ .once = &.{ | 2657 | .each = .{ .once = &.{ |
| 2658 | .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ }, | 2658 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| 2659 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, | 2659 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, |
| | 2660 | .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp0y, ._ }, |
| | 2661 | .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, |
| 2660 | } }, | 2662 | } }, |
| 2661 | }, .{ | 2663 | }, .{ |
| 2662 | .dst_constraints = .{.po2_elem_size}, | 2664 | .required_features = .{ .f16c, null, null, null }, |
| | 2665 | .src_constraints = .{ |
| | 2666 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 2667 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 2668 | .any, |
| | 2669 | }, |
| 2663 | .patterns = &.{ | 2670 | .patterns = &.{ |
| 2664 | .{ .src = .{ .to_gpr, .to_mut_gpr } }, | 2671 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 2665 | }, | 2672 | }, |
| 2666 | .dst_temps = .{.{ .ref = .src1 }}, | 2673 | .extra_temps = .{ |
| | 2674 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 2675 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 2676 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 2677 | .unused, |
| | 2678 | .unused, |
| | 2679 | .unused, |
| | 2680 | .unused, |
| | 2681 | .unused, |
| | 2682 | .unused, |
| | 2683 | }, |
| | 2684 | .dst_temps = .{.mem}, |
| 2667 | .clobbers = .{ .eflags = true }, | 2685 | .clobbers = .{ .eflags = true }, |
| 2668 | .each = .{ .once = &.{ | 2686 | .each = .{ .once = &.{ |
| 2669 | .{ ._, ._l, .sh, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ }, | 2687 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 2670 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ }, | 2688 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 2689 | .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 2690 | .{ ._, .v_ps, .add, .tmp1y, .tmp1y, .tmp2y, ._ }, |
| | 2691 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, |
| | 2692 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 2693 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 2671 | } }, | 2694 | } }, |
| 2672 | }, .{ | 2695 | }, .{ |
| 2673 | .patterns = &.{ | 2696 | .required_features = .{ .avx, null, null, null }, |
| 2674 | .{ .src = .{ .to_gpr, .to_gpr } }, | 2697 | .src_constraints = .{ |
| | 2698 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 2699 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 2700 | .any, |
| 2675 | }, | 2701 | }, |
| 2676 | .dst_temps = .{.{ .rc = .general_purpose }}, | | |
| 2677 | .clobbers = .{ .eflags = true }, | | |
| 2678 | .each = .{ .once = &.{ | | |
| 2679 | .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .add_src0_elem_size), ._ }, | | |
| 2680 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, | | |
| 2681 | } }, | | |
| 2682 | } }) catch |err| switch (err) { | | |
| 2683 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ | | |
| 2684 | @tagName(air_tag), | | |
| 2685 | cg.typeOf(bin_op.lhs).fmt(pt), | | |
| 2686 | ops[0].tracking(cg), | | |
| 2687 | ops[1].tracking(cg), | | |
| 2688 | }), | | |
| 2689 | else => |e| return e, | | |
| 2690 | } else { // hack around Sema OPV bugs | | |
| 2691 | res[0] = ops[0]; | | |
| 2692 | } | | |
| 2693 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); | | |
| 2694 | }, | | |
| 2695 | .ptr_sub => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else { | | |
| 2696 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; | | |
| 2697 | const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data; | | |
| 2698 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); | | |
| 2699 | try ops[0].toSlicePtr(cg); | | |
| 2700 | var res: [1]Temp = undefined; | | |
| 2701 | if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{ | | |
| 2702 | .patterns = &.{ | 2702 | .patterns = &.{ |
| 2703 | .{ .src = .{ .to_gpr, .simm32 } }, | 2703 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 2704 | }, | 2704 | }, |
| 2705 | .dst_temps = .{.{ .rc = .general_purpose }}, | 2705 | .call_frame = .{ .alignment = .@"16" }, |
| | 2706 | .extra_temps = .{ |
| | 2707 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 2708 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 2709 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 2710 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 2711 | .unused, |
| | 2712 | .unused, |
| | 2713 | .unused, |
| | 2714 | .unused, |
| | 2715 | .unused, |
| | 2716 | }, |
| | 2717 | .dst_temps = .{.mem}, |
| | 2718 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 2706 | .each = .{ .once = &.{ | 2719 | .each = .{ .once = &.{ |
| 2707 | .{ ._, ._, .lea, .dst0p, .leaa(.src0, .sub_src0_elem_size_times_src1), ._, ._ }, | 2720 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 2721 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 2722 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 2723 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 2724 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 2725 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 2726 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 2727 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 2708 | } }, | 2728 | } }, |
| 2709 | }, .{ | 2729 | }, .{ |
| 2710 | .dst_constraints = .{.{ .elem_size_is = 1 }}, | 2730 | .required_features = .{ .sse4_1, null, null, null }, |
| | 2731 | .src_constraints = .{ |
| | 2732 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 2733 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 2734 | .any, |
| | 2735 | }, |
| 2711 | .patterns = &.{ | 2736 | .patterns = &.{ |
| 2712 | .{ .src = .{ .to_gpr, .to_mut_gpr } }, | 2737 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 2713 | }, | 2738 | }, |
| 2714 | .dst_temps = .{.{ .ref = .src1 }}, | 2739 | .call_frame = .{ .alignment = .@"16" }, |
| 2715 | .clobbers = .{ .eflags = true }, | 2740 | .extra_temps = .{ |
| | 2741 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 2742 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 2743 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 2744 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 2745 | .unused, |
| | 2746 | .unused, |
| | 2747 | .unused, |
| | 2748 | .unused, |
| | 2749 | .unused, |
| | 2750 | }, |
| | 2751 | .dst_temps = .{.mem}, |
| | 2752 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 2716 | .each = .{ .once = &.{ | 2753 | .each = .{ .once = &.{ |
| 2717 | .{ ._, ._, .neg, .src1p, ._, ._, ._ }, | 2754 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 2718 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ }, | 2755 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 2756 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 2757 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 2758 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 2759 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 2760 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 2761 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 2762 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 2719 | } }, | 2763 | } }, |
| 2720 | }, .{ | 2764 | }, .{ |
| 2721 | .dst_constraints = .{.{ .elem_size_is = 2 }}, | 2765 | .required_features = .{ .sse2, null, null, null }, |
| | 2766 | .src_constraints = .{ |
| | 2767 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 2768 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 2769 | .any, |
| | 2770 | }, |
| 2722 | .patterns = &.{ | 2771 | .patterns = &.{ |
| 2723 | .{ .src = .{ .to_gpr, .to_mut_gpr } }, | 2772 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 2724 | }, | 2773 | }, |
| 2725 | .dst_temps = .{.{ .ref = .src1 }}, | 2774 | .call_frame = .{ .alignment = .@"16" }, |
| 2726 | .clobbers = .{ .eflags = true }, | 2775 | .extra_temps = .{ |
| | 2776 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 2777 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 2778 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 2779 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 2780 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 2781 | .unused, |
| | 2782 | .unused, |
| | 2783 | .unused, |
| | 2784 | .unused, |
| | 2785 | }, |
| | 2786 | .dst_temps = .{.mem}, |
| | 2787 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 2727 | .each = .{ .once = &.{ | 2788 | .each = .{ .once = &.{ |
| 2728 | .{ ._, ._, .neg, .src1p, ._, ._, ._ }, | 2789 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 2729 | .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ }, | 2790 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 2791 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 2792 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 2793 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 2794 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 2795 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, |
| | 2796 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 2797 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 2798 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 2730 | } }, | 2799 | } }, |
| 2731 | }, .{ | 2800 | }, .{ |
| 2732 | .dst_constraints = .{.{ .elem_size_is = 2 + 1 }}, | 2801 | .required_features = .{ .sse, null, null, null }, |
| | 2802 | .src_constraints = .{ |
| | 2803 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 2804 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 2805 | .any, |
| | 2806 | }, |
| 2733 | .patterns = &.{ | 2807 | .patterns = &.{ |
| 2734 | .{ .src = .{ .to_gpr, .to_gpr } }, | 2808 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 2735 | }, | 2809 | }, |
| 2736 | .dst_temps = .{.{ .rc = .general_purpose }}, | 2810 | .call_frame = .{ .alignment = .@"16" }, |
| 2737 | .clobbers = .{ .eflags = true }, | 2811 | .extra_temps = .{ |
| | 2812 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 2813 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 2814 | .{ .type = .f32, .kind = .mem }, |
| | 2815 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 2816 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 2817 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 2818 | .unused, |
| | 2819 | .unused, |
| | 2820 | .unused, |
| | 2821 | }, |
| | 2822 | .dst_temps = .{.mem}, |
| | 2823 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 2738 | .each = .{ .once = &.{ | 2824 | .each = .{ .once = &.{ |
| 2739 | .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ }, | 2825 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 2740 | .{ ._, ._, .neg, .dst0p, ._, ._, ._ }, | 2826 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 2741 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, | 2827 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 2828 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 2829 | .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 2830 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 2831 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| | 2832 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 2833 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| | 2834 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 2835 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 2836 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 2837 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 2742 | } }, | 2838 | } }, |
| 2743 | }, .{ | 2839 | }, .{ |
| 2744 | .dst_constraints = .{.{ .elem_size_is = 4 }}, | 2840 | .required_features = .{ .avx, null, null, null }, |
| | 2841 | .src_constraints = .{ |
| | 2842 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 2843 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 2844 | .any, |
| | 2845 | }, |
| 2745 | .patterns = &.{ | 2846 | .patterns = &.{ |
| 2746 | .{ .src = .{ .to_gpr, .to_mut_gpr } }, | 2847 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 2848 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 2849 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 2747 | }, | 2850 | }, |
| 2748 | .dst_temps = .{.{ .ref = .src1 }}, | 2851 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 2749 | .clobbers = .{ .eflags = true }, | | |
| 2750 | .each = .{ .once = &.{ | 2852 | .each = .{ .once = &.{ |
| 2751 | .{ ._, ._, .neg, .src1p, ._, ._, ._ }, | 2853 | .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ }, |
| 2752 | .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ }, | | |
| 2753 | } }, | 2854 | } }, |
| 2754 | }, .{ | 2855 | }, .{ |
| 2755 | .dst_constraints = .{.{ .elem_size_is = 4 + 1 }}, | 2856 | .required_features = .{ .sse, null, null, null }, |
| | 2857 | .src_constraints = .{ |
| | 2858 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 2859 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 2860 | .any, |
| | 2861 | }, |
| 2756 | .patterns = &.{ | 2862 | .patterns = &.{ |
| 2757 | .{ .src = .{ .to_gpr, .to_gpr } }, | 2863 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 2864 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 2865 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 2758 | }, | 2866 | }, |
| 2759 | .dst_temps = .{.{ .rc = .general_purpose }}, | 2867 | .dst_temps = .{.{ .ref = .src0 }}, |
| 2760 | .clobbers = .{ .eflags = true }, | | |
| 2761 | .each = .{ .once = &.{ | 2868 | .each = .{ .once = &.{ |
| 2762 | .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ }, | 2869 | .{ ._, ._ss, .add, .dst0x, .src1d, ._, ._ }, |
| 2763 | .{ ._, ._, .neg, .dst0p, ._, ._, ._ }, | | |
| 2764 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, | | |
| 2765 | } }, | 2870 | } }, |
| 2766 | }, .{ | 2871 | }, .{ |
| 2767 | .required_features = .{ .@"64bit", null, null, null }, | 2872 | .required_features = .{ .avx, null, null, null }, |
| 2768 | .dst_constraints = .{.{ .elem_size_is = 8 }}, | 2873 | .src_constraints = .{ |
| | 2874 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 2875 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 2876 | .any, |
| | 2877 | }, |
| 2769 | .patterns = &.{ | 2878 | .patterns = &.{ |
| 2770 | .{ .src = .{ .to_gpr, .to_mut_gpr } }, | 2879 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 2880 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 2881 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 2771 | }, | 2882 | }, |
| 2772 | .dst_temps = .{.{ .ref = .src1 }}, | 2883 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 2773 | .clobbers = .{ .eflags = true }, | | |
| 2774 | .each = .{ .once = &.{ | 2884 | .each = .{ .once = &.{ |
| 2775 | .{ ._, ._, .neg, .src1p, ._, ._, ._ }, | 2885 | .{ ._, .v_ps, .add, .dst0x, .src0x, .src1x, ._ }, |
| 2776 | .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ }, | | |
| 2777 | } }, | 2886 | } }, |
| 2778 | }, .{ | 2887 | }, .{ |
| 2779 | .required_features = .{ .@"64bit", null, null, null }, | 2888 | .required_features = .{ .sse, null, null, null }, |
| 2780 | .dst_constraints = .{.{ .elem_size_is = 8 + 1 }}, | 2889 | .src_constraints = .{ |
| | 2890 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 2891 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 2892 | .any, |
| | 2893 | }, |
| 2781 | .patterns = &.{ | 2894 | .patterns = &.{ |
| 2782 | .{ .src = .{ .to_gpr, .to_gpr } }, | 2895 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 2896 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 2897 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 2783 | }, | 2898 | }, |
| 2784 | .dst_temps = .{.{ .rc = .general_purpose }}, | 2899 | .dst_temps = .{.{ .ref = .src0 }}, |
| 2785 | .clobbers = .{ .eflags = true }, | | |
| 2786 | .each = .{ .once = &.{ | 2900 | .each = .{ .once = &.{ |
| 2787 | .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ }, | 2901 | .{ ._, ._ps, .add, .dst0x, .src1x, ._, ._ }, |
| 2788 | .{ ._, ._, .neg, .dst0p, ._, ._, ._ }, | | |
| 2789 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, | | |
| 2790 | } }, | 2902 | } }, |
| 2791 | }, .{ | 2903 | }, .{ |
| 2792 | .dst_constraints = .{.po2_elem_size}, | 2904 | .required_features = .{ .avx, null, null, null }, |
| | 2905 | .src_constraints = .{ |
| | 2906 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 2907 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 2908 | .any, |
| | 2909 | }, |
| 2793 | .patterns = &.{ | 2910 | .patterns = &.{ |
| 2794 | .{ .src = .{ .to_gpr, .to_mut_gpr } }, | 2911 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 2912 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 2913 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 2795 | }, | 2914 | }, |
| 2796 | .dst_temps = .{.{ .ref = .src1 }}, | 2915 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 2797 | .clobbers = .{ .eflags = true }, | | |
| 2798 | .each = .{ .once = &.{ | 2916 | .each = .{ .once = &.{ |
| 2799 | .{ ._, ._l, .sa, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ }, | 2917 | .{ ._, .v_ps, .add, .dst0y, .src0y, .src1y, ._ }, |
| 2800 | .{ ._, ._, .neg, .src1p, ._, ._, ._ }, | | |
| 2801 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ }, | | |
| 2802 | } }, | 2918 | } }, |
| 2803 | }, .{ | 2919 | }, .{ |
| | 2920 | .required_features = .{ .avx, null, null, null }, |
| | 2921 | .src_constraints = .{ |
| | 2922 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 2923 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 2924 | .any, |
| | 2925 | }, |
| 2804 | .patterns = &.{ | 2926 | .patterns = &.{ |
| 2805 | .{ .src = .{ .to_gpr, .to_gpr } }, | 2927 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 2806 | }, | 2928 | }, |
| 2807 | .dst_temps = .{.{ .rc = .general_purpose }}, | 2929 | .extra_temps = .{ |
| | 2930 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 2931 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 2932 | .unused, |
| | 2933 | .unused, |
| | 2934 | .unused, |
| | 2935 | .unused, |
| | 2936 | .unused, |
| | 2937 | .unused, |
| | 2938 | .unused, |
| | 2939 | }, |
| | 2940 | .dst_temps = .{.mem}, |
| 2808 | .clobbers = .{ .eflags = true }, | 2941 | .clobbers = .{ .eflags = true }, |
| 2809 | .each = .{ .once = &.{ | 2942 | .each = .{ .once = &.{ |
| 2810 | .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .sub_src0_elem_size), ._ }, | 2943 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 2811 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, | 2944 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 2945 | .{ ._, .v_ps, .add, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, |
| | 2946 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 2947 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 2948 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 2812 | } }, | 2949 | } }, |
| 2813 | } }) catch |err| switch (err) { | 2950 | }, .{ |
| 2814 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ | 2951 | .required_features = .{ .sse, null, null, null }, |
| 2815 | @tagName(air_tag), | 2952 | .src_constraints = .{ |
| 2816 | cg.typeOf(bin_op.lhs).fmt(pt), | 2953 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| 2817 | ops[0].tracking(cg), | 2954 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| 2818 | ops[1].tracking(cg), | 2955 | .any, |
| 2819 | }), | 2956 | }, |
| 2820 | else => |e| return e, | | |
| 2821 | } else { | | |
| 2822 | // hack around Sema OPV bugs | | |
| 2823 | res[0] = ops[0]; | | |
| 2824 | } | | |
| 2825 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); | | |
| 2826 | }, | | |
| 2827 | .max => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else { | | |
| 2828 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; | | |
| 2829 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); | | |
| 2830 | var res: [1]Temp = undefined; | | |
| 2831 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ | | |
| 2832 | .required_features = .{ .cmov, null, null, null }, | | |
| 2833 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } }, | | |
| 2834 | .patterns = &.{ | 2957 | .patterns = &.{ |
| 2835 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 2958 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 2836 | }, | 2959 | }, |
| 2837 | .dst_temps = .{.{ .ref = .src0 }}, | 2960 | .extra_temps = .{ |
| | 2961 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 2962 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 2963 | .unused, |
| | 2964 | .unused, |
| | 2965 | .unused, |
| | 2966 | .unused, |
| | 2967 | .unused, |
| | 2968 | .unused, |
| | 2969 | .unused, |
| | 2970 | }, |
| | 2971 | .dst_temps = .{.mem}, |
| 2838 | .clobbers = .{ .eflags = true }, | 2972 | .clobbers = .{ .eflags = true }, |
| 2839 | .each = .{ .once = &.{ | 2973 | .each = .{ .once = &.{ |
| 2840 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 2974 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 2841 | .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ }, | 2975 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 2976 | .{ ._, ._ps, .add, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 2977 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 2978 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 2979 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 2842 | } }, | 2980 | } }, |
| 2843 | }, .{ | 2981 | }, .{ |
| 2844 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } }, | 2982 | .required_features = .{ .avx, null, null, null }, |
| | 2983 | .src_constraints = .{ |
| | 2984 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 2985 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 2986 | .any, |
| | 2987 | }, |
| 2845 | .patterns = &.{ | 2988 | .patterns = &.{ |
| 2846 | .{ .src = .{ .to_mut_gpr, .mem } }, | 2989 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 2847 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 2990 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 2848 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 2991 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 2849 | }, | 2992 | }, |
| 2850 | .dst_temps = .{.{ .ref = .src0 }}, | 2993 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 2851 | .clobbers = .{ .eflags = true }, | | |
| 2852 | .each = .{ .once = &.{ | 2994 | .each = .{ .once = &.{ |
| 2853 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 2995 | .{ ._, .v_sd, .add, .dst0x, .src0x, .src1q, ._ }, |
| 2854 | .{ ._, ._nl, .j, .@"0f", ._, ._, ._ }, | | |
| 2855 | .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ }, | | |
| 2856 | } }, | 2996 | } }, |
| 2857 | }, .{ | 2997 | }, .{ |
| 2858 | .required_features = .{ .cmov, null, null, null }, | 2998 | .required_features = .{ .sse2, null, null, null }, |
| 2859 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } }, | 2999 | .src_constraints = .{ |
| | 3000 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 3001 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 3002 | .any, |
| | 3003 | }, |
| 2860 | .patterns = &.{ | 3004 | .patterns = &.{ |
| 2861 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 3005 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 3006 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 3007 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 2862 | }, | 3008 | }, |
| 2863 | .dst_temps = .{.{ .ref = .src0 }}, | 3009 | .dst_temps = .{.{ .ref = .src0 }}, |
| 2864 | .clobbers = .{ .eflags = true }, | | |
| 2865 | .each = .{ .once = &.{ | 3010 | .each = .{ .once = &.{ |
| 2866 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 3011 | .{ ._, ._sd, .add, .dst0x, .src1q, ._, ._ }, |
| 2867 | .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ }, | | |
| 2868 | } }, | 3012 | } }, |
| 2869 | }, .{ | 3013 | }, .{ |
| 2870 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } }, | 3014 | .required_features = .{ .x87, null, null, null }, |
| | 3015 | .src_constraints = .{ |
| | 3016 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 3017 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 3018 | .any, |
| | 3019 | }, |
| 2871 | .patterns = &.{ | 3020 | .patterns = &.{ |
| 2872 | .{ .src = .{ .to_mut_gpr, .mem } }, | 3021 | .{ .src = .{ .mem, .mem, .none } }, |
| 2873 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | | |
| 2874 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | | |
| 2875 | }, | 3022 | }, |
| 2876 | .dst_temps = .{.{ .ref = .src0 }}, | 3023 | .extra_temps = .{ |
| 2877 | .clobbers = .{ .eflags = true }, | 3024 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| | 3025 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| | 3026 | .unused, |
| | 3027 | .unused, |
| | 3028 | .unused, |
| | 3029 | .unused, |
| | 3030 | .unused, |
| | 3031 | .unused, |
| | 3032 | .unused, |
| | 3033 | }, |
| | 3034 | .dst_temps = .{.mem}, |
| 2878 | .each = .{ .once = &.{ | 3035 | .each = .{ .once = &.{ |
| 2879 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 3036 | .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, |
| 2880 | .{ ._, ._nb, .j, .@"0f", ._, ._, ._ }, | 3037 | .{ ._, .f_, .ld, .src1q, ._, ._, ._ }, |
| 2881 | .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ }, | 3038 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 3039 | .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, |
| 2882 | } }, | 3040 | } }, |
| 2883 | }, .{ | 3041 | }, .{ |
| 2884 | .required_features = .{ .cmov, null, null, null }, | 3042 | .required_features = .{ .avx, null, null, null }, |
| 2885 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } }, | 3043 | .src_constraints = .{ |
| | 3044 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 3045 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 3046 | .any, |
| | 3047 | }, |
| 2886 | .patterns = &.{ | 3048 | .patterns = &.{ |
| 2887 | .{ .src = .{ .to_mut_gpr, .mem } }, | 3049 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 2888 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 3050 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 2889 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 3051 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 2890 | }, | 3052 | }, |
| 2891 | .dst_temps = .{.{ .ref = .src0 }}, | 3053 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 2892 | .clobbers = .{ .eflags = true }, | | |
| 2893 | .each = .{ .once = &.{ | 3054 | .each = .{ .once = &.{ |
| 2894 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 3055 | .{ ._, .v_pd, .add, .dst0x, .src0x, .src1x, ._ }, |
| 2895 | .{ ._, ._l, .cmov, .dst0w, .src1w, ._, ._ }, | | |
| 2896 | } }, | 3056 | } }, |
| 2897 | }, .{ | 3057 | }, .{ |
| 2898 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } }, | 3058 | .required_features = .{ .sse2, null, null, null }, |
| | 3059 | .src_constraints = .{ |
| | 3060 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 3061 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 3062 | .any, |
| | 3063 | }, |
| 2899 | .patterns = &.{ | 3064 | .patterns = &.{ |
| 2900 | .{ .src = .{ .to_mut_gpr, .mem } }, | 3065 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 2901 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 3066 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 2902 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 3067 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 2903 | }, | 3068 | }, |
| 2904 | .dst_temps = .{.{ .ref = .src0 }}, | 3069 | .dst_temps = .{.{ .ref = .src0 }}, |
| 2905 | .clobbers = .{ .eflags = true }, | | |
| 2906 | .each = .{ .once = &.{ | 3070 | .each = .{ .once = &.{ |
| 2907 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 3071 | .{ ._, ._pd, .add, .dst0x, .src1x, ._, ._ }, |
| 2908 | .{ ._, ._nl, .j, .@"0f", ._, ._, ._ }, | | |
| 2909 | .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ }, | | |
| 2910 | } }, | 3072 | } }, |
| 2911 | }, .{ | 3073 | }, .{ |
| 2912 | .required_features = .{ .cmov, null, null, null }, | 3074 | .required_features = .{ .avx, null, null, null }, |
| 2913 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } }, | 3075 | .src_constraints = .{ |
| | 3076 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 3077 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 3078 | .any, |
| | 3079 | }, |
| 2914 | .patterns = &.{ | 3080 | .patterns = &.{ |
| 2915 | .{ .src = .{ .to_mut_gpr, .mem } }, | 3081 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 2916 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 3082 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 2917 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 3083 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 2918 | }, | 3084 | }, |
| 2919 | .dst_temps = .{.{ .ref = .src0 }}, | 3085 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 2920 | .clobbers = .{ .eflags = true }, | | |
| 2921 | .each = .{ .once = &.{ | 3086 | .each = .{ .once = &.{ |
| 2922 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 3087 | .{ ._, .v_pd, .add, .dst0y, .src0y, .src1y, ._ }, |
| 2923 | .{ ._, ._b, .cmov, .dst0w, .src1w, ._, ._ }, | | |
| 2924 | } }, | 3088 | } }, |
| 2925 | }, .{ | 3089 | }, .{ |
| 2926 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } }, | 3090 | .required_features = .{ .avx, null, null, null }, |
| | 3091 | .src_constraints = .{ |
| | 3092 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 3093 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 3094 | .any, |
| | 3095 | }, |
| 2927 | .patterns = &.{ | 3096 | .patterns = &.{ |
| 2928 | .{ .src = .{ .to_mut_gpr, .mem } }, | 3097 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 2929 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | | |
| 2930 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | | |
| 2931 | }, | 3098 | }, |
| 2932 | .dst_temps = .{.{ .ref = .src0 }}, | 3099 | .extra_temps = .{ |
| 2933 | .clobbers = .{ .eflags = true }, | 3100 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 2934 | .each = .{ .once = &.{ | 3101 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| 2935 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 3102 | .unused, |
| 2936 | .{ ._, ._nb, .j, .@"0f", ._, ._, ._ }, | 3103 | .unused, |
| 2937 | .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ }, | 3104 | .unused, |
| 2938 | } }, | 3105 | .unused, |
| 2939 | }, .{ | 3106 | .unused, |
| 2940 | .required_features = .{ .cmov, null, null, null }, | 3107 | .unused, |
| 2941 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } }, | 3108 | .unused, |
| 2942 | .patterns = &.{ | | |
| 2943 | .{ .src = .{ .to_mut_gpr, .mem } }, | | |
| 2944 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | | |
| 2945 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | | |
| 2946 | }, | | |
| 2947 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 2948 | .clobbers = .{ .eflags = true }, | | |
| 2949 | .each = .{ .once = &.{ | | |
| 2950 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | | |
| 2951 | .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ }, | | |
| 2952 | } }, | | |
| 2953 | }, .{ | | |
| 2954 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } }, | | |
| 2955 | .patterns = &.{ | | |
| 2956 | .{ .src = .{ .to_mut_gpr, .mem } }, | | |
| 2957 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | | |
| 2958 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | | |
| 2959 | }, | | |
| 2960 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 2961 | .clobbers = .{ .eflags = true }, | | |
| 2962 | .each = .{ .once = &.{ | | |
| 2963 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | | |
| 2964 | .{ ._, ._nl, .j, .@"0f", ._, ._, ._ }, | | |
| 2965 | .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ }, | | |
| 2966 | } }, | | |
| 2967 | }, .{ | | |
| 2968 | .required_features = .{ .cmov, null, null, null }, | | |
| 2969 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } }, | | |
| 2970 | .patterns = &.{ | | |
| 2971 | .{ .src = .{ .to_mut_gpr, .mem } }, | | |
| 2972 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | | |
| 2973 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | | |
| 2974 | }, | | |
| 2975 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 2976 | .clobbers = .{ .eflags = true }, | | |
| 2977 | .each = .{ .once = &.{ | | |
| 2978 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | | |
| 2979 | .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ }, | | |
| 2980 | } }, | | |
| 2981 | }, .{ | | |
| 2982 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } }, | | |
| 2983 | .patterns = &.{ | | |
| 2984 | .{ .src = .{ .to_mut_gpr, .mem } }, | | |
| 2985 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | | |
| 2986 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | | |
| 2987 | }, | 3109 | }, |
| 2988 | .dst_temps = .{.{ .ref = .src0 }}, | 3110 | .dst_temps = .{.mem}, |
| 2989 | .clobbers = .{ .eflags = true }, | 3111 | .clobbers = .{ .eflags = true }, |
| 2990 | .each = .{ .once = &.{ | 3112 | .each = .{ .once = &.{ |
| 2991 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | 3113 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 2992 | .{ ._, ._nb, .j, .@"0f", ._, ._, ._ }, | 3114 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 2993 | .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ }, | 3115 | .{ ._, .v_pd, .add, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, |
| | 3116 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 3117 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 3118 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 2994 | } }, | 3119 | } }, |
| 2995 | }, .{ | 3120 | }, .{ |
| 2996 | .required_features = .{ .@"64bit", .cmov, null, null }, | 3121 | .required_features = .{ .sse2, null, null, null }, |
| 2997 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } }, | 3122 | .src_constraints = .{ |
| 2998 | .patterns = &.{ | 3123 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| 2999 | .{ .src = .{ .to_mut_gpr, .mem } }, | 3124 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| 3000 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 3125 | .any, |
| 3001 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | | |
| 3002 | }, | 3126 | }, |
| 3003 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 3004 | .clobbers = .{ .eflags = true }, | | |
| 3005 | .each = .{ .once = &.{ | | |
| 3006 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | | |
| 3007 | .{ ._, ._l, .cmov, .dst0q, .src1q, ._, ._ }, | | |
| 3008 | } }, | | |
| 3009 | }, .{ | | |
| 3010 | .required_features = .{ .@"64bit", null, null, null }, | | |
| 3011 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } }, | | |
| 3012 | .patterns = &.{ | 3127 | .patterns = &.{ |
| 3013 | .{ .src = .{ .to_mut_gpr, .mem } }, | 3128 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3014 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | | |
| 3015 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | | |
| 3016 | }, | 3129 | }, |
| 3017 | .dst_temps = .{.{ .ref = .src0 }}, | 3130 | .extra_temps = .{ |
| 3018 | .clobbers = .{ .eflags = true }, | 3131 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3019 | .each = .{ .once = &.{ | 3132 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| 3020 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | 3133 | .unused, |
| 3021 | .{ ._, ._nl, .j, .@"0f", ._, ._, ._ }, | 3134 | .unused, |
| 3022 | .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ }, | 3135 | .unused, |
| 3023 | } }, | 3136 | .unused, |
| 3024 | }, .{ | 3137 | .unused, |
| 3025 | .required_features = .{ .@"64bit", .cmov, null, null }, | 3138 | .unused, |
| 3026 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } }, | 3139 | .unused, |
| 3027 | .patterns = &.{ | | |
| 3028 | .{ .src = .{ .to_mut_gpr, .mem } }, | | |
| 3029 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | | |
| 3030 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | | |
| 3031 | }, | 3140 | }, |
| 3032 | .dst_temps = .{.{ .ref = .src0 }}, | 3141 | .dst_temps = .{.mem}, |
| 3033 | .clobbers = .{ .eflags = true }, | 3142 | .clobbers = .{ .eflags = true }, |
| 3034 | .each = .{ .once = &.{ | 3143 | .each = .{ .once = &.{ |
| 3035 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | 3144 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3036 | .{ ._, ._b, .cmov, .dst0q, .src1q, ._, ._ }, | 3145 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 3146 | .{ ._, ._pd, .add, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 3147 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 3148 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 3149 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3037 | } }, | 3150 | } }, |
| 3038 | }, .{ | 3151 | }, .{ |
| 3039 | .required_features = .{ .@"64bit", null, null, null }, | 3152 | .required_features = .{ .x87, null, null, null }, |
| 3040 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } }, | 3153 | .src_constraints = .{ |
| 3041 | .patterns = &.{ | 3154 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 3042 | .{ .src = .{ .to_mut_gpr, .mem } }, | 3155 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 3043 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 3156 | .any, |
| 3044 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | | |
| 3045 | }, | 3157 | }, |
| 3046 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 3047 | .clobbers = .{ .eflags = true }, | | |
| 3048 | .each = .{ .once = &.{ | | |
| 3049 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | | |
| 3050 | .{ ._, ._nb, .j, .@"0f", ._, ._, ._ }, | | |
| 3051 | .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ }, | | |
| 3052 | } }, | | |
| 3053 | }, .{ | | |
| 3054 | .required_features = .{ .@"64bit", .cmov, null, null }, | | |
| 3055 | .src_constraints = .{ .any_signed_int, .any_signed_int }, | | |
| 3056 | .patterns = &.{ | 3158 | .patterns = &.{ |
| 3057 | .{ .src = .{ .to_mem, .to_mem } }, | 3159 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3058 | }, | 3160 | }, |
| 3059 | .extra_temps = .{ | 3161 | .extra_temps = .{ |
| 3060 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, | 3162 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3061 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, | 3163 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 3062 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, | 3164 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 3063 | .unused, | 3165 | .unused, |
| 3064 | .unused, | 3166 | .unused, |
| 3065 | .unused, | 3167 | .unused, |
| ... | @@ -3068,33 +3170,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3068,33 +3170,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3068 | .unused, | 3170 | .unused, |
| 3069 | }, | 3171 | }, |
| 3070 | .dst_temps = .{.mem}, | 3172 | .dst_temps = .{.mem}, |
| 3071 | .clobbers = .{ .eflags = true }, | | |
| 3072 | .each = .{ .once = &.{ | 3173 | .each = .{ .once = &.{ |
| 3073 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, | 3174 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3074 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 3175 | .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 3075 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, | 3176 | .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 3076 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, | 3177 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| 3077 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 3178 | .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 3078 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 3179 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 3079 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, | 3180 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3080 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, | | |
| 3081 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, | | |
| 3082 | .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ }, | | |
| 3083 | .{ ._, ._l, .cmov, .tmp0p, .tmp1p, ._, ._ }, | | |
| 3084 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | | |
| 3085 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, | | |
| 3086 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | | |
| 3087 | } }, | 3181 | } }, |
| 3088 | }, .{ | 3182 | }, .{ |
| 3089 | .required_features = .{ .@"64bit", null, null, null }, | 3183 | .required_features = .{ .x87, null, null, null }, |
| 3090 | .src_constraints = .{ .any_signed_int, .any_signed_int }, | 3184 | .src_constraints = .{ |
| | 3185 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 3186 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 3187 | .any, |
| | 3188 | }, |
| 3091 | .patterns = &.{ | 3189 | .patterns = &.{ |
| 3092 | .{ .src = .{ .to_mem, .to_mem } }, | 3190 | .{ .src = .{ .mem, .mem, .none } }, |
| 3093 | }, | 3191 | }, |
| 3094 | .extra_temps = .{ | 3192 | .extra_temps = .{ |
| 3095 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, | 3193 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 3096 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, | 3194 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 3097 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, | 3195 | .unused, |
| 3098 | .unused, | 3196 | .unused, |
| 3099 | .unused, | 3197 | .unused, |
| 3100 | .unused, | 3198 | .unused, |
| ... | @@ -3102,34 +3200,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3102,34 +3200,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3102 | .unused, | 3200 | .unused, |
| 3103 | .unused, | 3201 | .unused, |
| 3104 | }, | 3202 | }, |
| 3105 | .dst_temps = .{.mem}, | 3203 | .dst_temps = .{.{ .rc = .x87 }}, |
| 3106 | .clobbers = .{ .eflags = true }, | | |
| 3107 | .each = .{ .once = &.{ | 3204 | .each = .{ .once = &.{ |
| 3108 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, | 3205 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 3109 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 3206 | .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, |
| 3110 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, | 3207 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| 3111 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, | 3208 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 3112 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | | |
| 3113 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 3114 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, | | |
| 3115 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, | | |
| 3116 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, | | |
| 3117 | .{ ._, ._nl, .j, .@"0f", ._, ._, ._ }, | | |
| 3118 | .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ }, | | |
| 3119 | .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | | |
| 3120 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, | | |
| 3121 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | | |
| 3122 | } }, | 3209 | } }, |
| 3123 | }, .{ | 3210 | }, .{ |
| 3124 | .required_features = .{ .@"64bit", .cmov, null, null }, | 3211 | .required_features = .{ .x87, null, null, null }, |
| 3125 | .src_constraints = .{ .any_unsigned_int, .any_unsigned_int }, | 3212 | .src_constraints = .{ |
| | 3213 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 3214 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 3215 | .any, |
| | 3216 | }, |
| 3126 | .patterns = &.{ | 3217 | .patterns = &.{ |
| 3127 | .{ .src = .{ .to_mem, .to_mem } }, | 3218 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 3219 | .{ .src = .{ .mem, .to_x87, .none } }, |
| | 3220 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| 3128 | }, | 3221 | }, |
| 3129 | .extra_temps = .{ | 3222 | .extra_temps = .{ |
| 3130 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, | 3223 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 3131 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, | 3224 | .unused, |
| 3132 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, | 3225 | .unused, |
| 3133 | .unused, | 3226 | .unused, |
| 3134 | .unused, | 3227 | .unused, |
| 3135 | .unused, | 3228 | .unused, |
| ... | @@ -3137,32 +3230,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3137,32 +3230,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3137 | .unused, | 3230 | .unused, |
| 3138 | .unused, | 3231 | .unused, |
| 3139 | }, | 3232 | }, |
| 3140 | .dst_temps = .{.mem}, | 3233 | .dst_temps = .{.{ .rc = .x87 }}, |
| 3141 | .clobbers = .{ .eflags = true }, | | |
| 3142 | .each = .{ .once = &.{ | 3234 | .each = .{ .once = &.{ |
| 3143 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, | 3235 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 3144 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 3236 | .{ ._, .f_, .add, .tmp0t, .src1t, ._, ._ }, |
| 3145 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, | 3237 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 3146 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, | | |
| 3147 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | | |
| 3148 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 3149 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, | | |
| 3150 | .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ }, | | |
| 3151 | .{ ._, ._b, .cmov, .tmp0p, .tmp1p, ._, ._ }, | | |
| 3152 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | | |
| 3153 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, | | |
| 3154 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | | |
| 3155 | } }, | 3238 | } }, |
| 3156 | }, .{ | 3239 | }, .{ |
| 3157 | .required_features = .{ .@"64bit", null, null, null }, | 3240 | .required_features = .{ .x87, null, null, null }, |
| 3158 | .src_constraints = .{ .any_unsigned_int, .any_unsigned_int }, | 3241 | .src_constraints = .{ |
| | 3242 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 3243 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 3244 | .any, |
| | 3245 | }, |
| 3159 | .patterns = &.{ | 3246 | .patterns = &.{ |
| 3160 | .{ .src = .{ .to_mem, .to_mem } }, | 3247 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3161 | }, | 3248 | }, |
| 3162 | .extra_temps = .{ | 3249 | .extra_temps = .{ |
| 3163 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, | 3250 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3164 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, | 3251 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 3165 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, | 3252 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 3166 | .unused, | 3253 | .unused, |
| 3167 | .unused, | 3254 | .unused, |
| 3168 | .unused, | 3255 | .unused, |
| ... | @@ -3171,99 +3258,91 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3171,99 +3258,91 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3171 | .unused, | 3258 | .unused, |
| 3172 | }, | 3259 | }, |
| 3173 | .dst_temps = .{.mem}, | 3260 | .dst_temps = .{.mem}, |
| 3174 | .clobbers = .{ .eflags = true }, | | |
| 3175 | .each = .{ .once = &.{ | 3261 | .each = .{ .once = &.{ |
| 3176 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, | 3262 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3177 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 3263 | .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 3178 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, | 3264 | .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 3179 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, | 3265 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| 3180 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 3266 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 3181 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 3267 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 3182 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, | 3268 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3183 | .{ ._, ._nb, .j, .@"0f", ._, ._, ._ }, | | |
| 3184 | .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ }, | | |
| 3185 | .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | | |
| 3186 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, | | |
| 3187 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | | |
| 3188 | } }, | 3269 | } }, |
| 3189 | }, .{ | 3270 | }, .{ |
| 3190 | .required_features = .{ .avx, null, null, null }, | 3271 | .required_features = .{ .sse, null, null, null }, |
| 3191 | .src_constraints = .{ | 3272 | .src_constraints = .{ |
| 3192 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 3273 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| 3193 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 3274 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 3275 | .any, |
| 3194 | }, | 3276 | }, |
| 3195 | .patterns = &.{ | 3277 | .patterns = &.{ |
| 3196 | .{ .src = .{ .to_sse, .mem } }, | 3278 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 3197 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | | |
| 3198 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 3199 | }, | | |
| 3200 | .dst_temps = .{.{ .rc = .sse }}, | | |
| 3201 | .each = .{ .once = &.{ | | |
| 3202 | .{ ._, .vp_b, .maxs, .dst0x, .src0x, .src1x, ._ }, | | |
| 3203 | } }, | | |
| 3204 | }, .{ | | |
| 3205 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 3206 | .src_constraints = .{ | | |
| 3207 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, | | |
| 3208 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, | | |
| 3209 | }, | 3279 | }, |
| 3210 | .patterns = &.{ | 3280 | .call_frame = .{ .alignment = .@"16" }, |
| 3211 | .{ .src = .{ .to_mut_sse, .mem } }, | 3281 | .extra_temps = .{ |
| 3212 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 3282 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, |
| 3213 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 3283 | .unused, |
| | 3284 | .unused, |
| | 3285 | .unused, |
| | 3286 | .unused, |
| | 3287 | .unused, |
| | 3288 | .unused, |
| | 3289 | .unused, |
| | 3290 | .unused, |
| 3214 | }, | 3291 | }, |
| 3215 | .dst_temps = .{.{ .ref = .src0 }}, | 3292 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 3293 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 3216 | .each = .{ .once = &.{ | 3294 | .each = .{ .once = &.{ |
| 3217 | .{ ._, .p_b, .maxs, .dst0x, .src1x, ._, ._ }, | 3295 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 3218 | } }, | 3296 | } }, |
| 3219 | }, .{ | 3297 | }, .{ |
| 3220 | .required_features = .{ .sse2, null, null, null }, | 3298 | .required_features = .{ .avx, null, null, null }, |
| 3221 | .src_constraints = .{ | 3299 | .src_constraints = .{ |
| 3222 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 3300 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 3223 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 3301 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 3302 | .any, |
| 3224 | }, | 3303 | }, |
| 3225 | .patterns = &.{ | 3304 | .patterns = &.{ |
| 3226 | .{ .src = .{ .to_mut_sse, .mem } }, | 3305 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3227 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | | |
| 3228 | .{ .src = .{ .to_mut_sse, .to_sse } }, | | |
| 3229 | }, | | |
| 3230 | .dst_temps = .{.{ .rc = .sse }}, | | |
| 3231 | .each = .{ .once = &.{ | | |
| 3232 | .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ }, | | |
| 3233 | .{ ._, .p_b, .cmpgt, .dst0x, .src1x, ._, ._ }, | | |
| 3234 | .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ }, | | |
| 3235 | .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ }, | | |
| 3236 | .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ }, | | |
| 3237 | } }, | | |
| 3238 | }, .{ | | |
| 3239 | .required_features = .{ .avx2, null, null, null }, | | |
| 3240 | .src_constraints = .{ | | |
| 3241 | .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, | | |
| 3242 | .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, | | |
| 3243 | }, | 3306 | }, |
| 3244 | .patterns = &.{ | 3307 | .call_frame = .{ .alignment = .@"16" }, |
| 3245 | .{ .src = .{ .to_sse, .mem } }, | 3308 | .extra_temps = .{ |
| 3246 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 3309 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3247 | .{ .src = .{ .to_sse, .to_sse } }, | 3310 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 3311 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 3312 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, |
| | 3313 | .unused, |
| | 3314 | .unused, |
| | 3315 | .unused, |
| | 3316 | .unused, |
| | 3317 | .unused, |
| 3248 | }, | 3318 | }, |
| 3249 | .dst_temps = .{.{ .rc = .sse }}, | 3319 | .dst_temps = .{.mem}, |
| | 3320 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 3250 | .each = .{ .once = &.{ | 3321 | .each = .{ .once = &.{ |
| 3251 | .{ ._, .vp_b, .maxs, .dst0y, .src0y, .src1y, ._ }, | 3322 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 3323 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 3324 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 3325 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 3326 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 3327 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 3328 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3252 | } }, | 3329 | } }, |
| 3253 | }, .{ | 3330 | }, .{ |
| 3254 | .required_features = .{ .avx2, null, null, null }, | 3331 | .required_features = .{ .sse2, null, null, null }, |
| 3255 | .src_constraints = .{ | 3332 | .src_constraints = .{ |
| 3256 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, | 3333 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 3257 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, | 3334 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 3335 | .any, |
| 3258 | }, | 3336 | }, |
| 3259 | .patterns = &.{ | 3337 | .patterns = &.{ |
| 3260 | .{ .src = .{ .to_mem, .to_mem } }, | 3338 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3261 | }, | 3339 | }, |
| | 3340 | .call_frame = .{ .alignment = .@"16" }, |
| 3262 | .extra_temps = .{ | 3341 | .extra_temps = .{ |
| 3263 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3342 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3264 | .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, | 3343 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 3265 | .unused, | 3344 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 3266 | .unused, | 3345 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, |
| 3267 | .unused, | 3346 | .unused, |
| 3268 | .unused, | 3347 | .unused, |
| 3269 | .unused, | 3348 | .unused, |
| ... | @@ -3271,29 +3350,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3271,29 +3350,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3271 | .unused, | 3350 | .unused, |
| 3272 | }, | 3351 | }, |
| 3273 | .dst_temps = .{.mem}, | 3352 | .dst_temps = .{.mem}, |
| 3274 | .clobbers = .{ .eflags = true }, | 3353 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 3275 | .each = .{ .once = &.{ | 3354 | .each = .{ .once = &.{ |
| 3276 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3355 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3277 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | 3356 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 3278 | .{ ._, .vp_b, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ }, | 3357 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 3279 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | 3358 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 3280 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 3359 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 3360 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 3281 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 3361 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3282 | } }, | 3362 | } }, |
| 3283 | }, .{ | 3363 | }, .{ |
| 3284 | .required_features = .{ .avx, null, null, null }, | 3364 | .required_features = .{ .sse, null, null, null }, |
| 3285 | .src_constraints = .{ | 3365 | .src_constraints = .{ |
| 3286 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 3366 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 3287 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 3367 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 3368 | .any, |
| 3288 | }, | 3369 | }, |
| 3289 | .patterns = &.{ | 3370 | .patterns = &.{ |
| 3290 | .{ .src = .{ .to_mem, .to_mem } }, | 3371 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3291 | }, | 3372 | }, |
| | 3373 | .call_frame = .{ .alignment = .@"16" }, |
| 3292 | .extra_temps = .{ | 3374 | .extra_temps = .{ |
| 3293 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3375 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3294 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, | 3376 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 3295 | .unused, | 3377 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 3296 | .unused, | 3378 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, |
| 3297 | .unused, | 3379 | .unused, |
| 3298 | .unused, | 3380 | .unused, |
| 3299 | .unused, | 3381 | .unused, |
| ... | @@ -3301,27 +3383,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3301,27 +3383,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3301 | .unused, | 3383 | .unused, |
| 3302 | }, | 3384 | }, |
| 3303 | .dst_temps = .{.mem}, | 3385 | .dst_temps = .{.mem}, |
| 3304 | .clobbers = .{ .eflags = true }, | 3386 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 3305 | .each = .{ .once = &.{ | 3387 | .each = .{ .once = &.{ |
| 3306 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3388 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3307 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 3389 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 3308 | .{ ._, .vp_b, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ }, | 3390 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 3309 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 3391 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 3392 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 3310 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 3393 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 3311 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 3394 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3312 | } }, | 3395 | } }, |
| 3313 | }, .{ | 3396 | } }) catch |err| switch (err) { |
| 3314 | .required_features = .{ .sse4_1, null, null, null }, | 3397 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 3398 | @tagName(air_tag), |
| | 3399 | cg.typeOf(bin_op.lhs).fmt(pt), |
| | 3400 | ops[0].tracking(cg), |
| | 3401 | ops[1].tracking(cg), |
| | 3402 | }), |
| | 3403 | else => |e| return e, |
| | 3404 | }; |
| | 3405 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 3406 | }, |
| | 3407 | .sub, .sub_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .sub) else fallback: { |
| | 3408 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| | 3409 | if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airBinOp(inst, air_tag); |
| | 3410 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 3411 | var res: [1]Temp = undefined; |
| | 3412 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ |
| | 3413 | .required_features = .{ .f16c, null, null, null }, |
| 3315 | .src_constraints = .{ | 3414 | .src_constraints = .{ |
| 3316 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 3415 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 3317 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 3416 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 3417 | .any, |
| 3318 | }, | 3418 | }, |
| 3319 | .patterns = &.{ | 3419 | .patterns = &.{ |
| 3320 | .{ .src = .{ .to_mem, .to_mem } }, | 3420 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 3321 | }, | 3421 | }, |
| 3322 | .extra_temps = .{ | 3422 | .extra_temps = .{ |
| 3323 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3423 | .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 3324 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, | 3424 | .unused, |
| 3325 | .unused, | 3425 | .unused, |
| 3326 | .unused, | 3426 | .unused, |
| 3327 | .unused, | 3427 | .unused, |
| ... | @@ -3330,29 +3430,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3330,29 +3430,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3330 | .unused, | 3430 | .unused, |
| 3331 | .unused, | 3431 | .unused, |
| 3332 | }, | 3432 | }, |
| 3333 | .dst_temps = .{.mem}, | 3433 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 3334 | .clobbers = .{ .eflags = true }, | | |
| 3335 | .each = .{ .once = &.{ | 3434 | .each = .{ .once = &.{ |
| 3336 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3435 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 3337 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 3436 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| 3338 | .{ ._, .p_b, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 3437 | .{ ._, .v_ss, .sub, .dst0x, .dst0x, .tmp0d, ._ }, |
| 3339 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 3438 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 3340 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 3341 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 3342 | } }, | 3439 | } }, |
| 3343 | }, .{ | 3440 | }, .{ |
| 3344 | .required_features = .{ .sse2, null, null, null }, | 3441 | .required_features = .{ .sse, null, null, null }, |
| 3345 | .src_constraints = .{ | 3442 | .src_constraints = .{ |
| 3346 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 3443 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 3347 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 3444 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 3445 | .any, |
| 3348 | }, | 3446 | }, |
| 3349 | .patterns = &.{ | 3447 | .patterns = &.{ |
| 3350 | .{ .src = .{ .to_mem, .to_mem } }, | 3448 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 3351 | }, | 3449 | }, |
| | 3450 | .call_frame = .{ .alignment = .@"16" }, |
| 3352 | .extra_temps = .{ | 3451 | .extra_temps = .{ |
| 3353 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3452 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } }, |
| 3354 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, | 3453 | .unused, |
| 3355 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, | 3454 | .unused, |
| 3356 | .unused, | 3455 | .unused, |
| 3357 | .unused, | 3456 | .unused, |
| 3358 | .unused, | 3457 | .unused, |
| ... | @@ -3360,33 +3459,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3360,33 +3459,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3360 | .unused, | 3459 | .unused, |
| 3361 | .unused, | 3460 | .unused, |
| 3362 | }, | 3461 | }, |
| 3363 | .dst_temps = .{.mem}, | 3462 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3364 | .clobbers = .{ .eflags = true }, | 3463 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 3365 | .each = .{ .once = &.{ | 3464 | .each = .{ .once = &.{ |
| 3366 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3465 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 3367 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | | |
| 3368 | .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, | | |
| 3369 | .{ ._, .p_b, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | | |
| 3370 | .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ }, | | |
| 3371 | .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | | |
| 3372 | .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ }, | | |
| 3373 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 3374 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 3375 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 3376 | } }, | 3466 | } }, |
| 3377 | }, .{ | 3467 | }, .{ |
| 3378 | .required_features = .{ .cmov, .slow_incdec, null, null }, | 3468 | .required_features = .{ .f16c, null, null, null }, |
| 3379 | .src_constraints = .{ | 3469 | .src_constraints = .{ |
| 3380 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 3470 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| 3381 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 3471 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 3472 | .any, |
| 3382 | }, | 3473 | }, |
| 3383 | .patterns = &.{ | 3474 | .patterns = &.{ |
| 3384 | .{ .src = .{ .to_mem, .to_mem } }, | 3475 | .{ .src = .{ .mem, .mem, .none } }, |
| | 3476 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 3477 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 3478 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 3385 | }, | 3479 | }, |
| 3386 | .extra_temps = .{ | 3480 | .extra_temps = .{ |
| 3387 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3481 | .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 3388 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, | 3482 | .unused, |
| 3389 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, | 3483 | .unused, |
| 3390 | .unused, | 3484 | .unused, |
| 3391 | .unused, | 3485 | .unused, |
| 3392 | .unused, | 3486 | .unused, |
| ... | @@ -3394,31 +3488,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3394,31 +3488,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3394 | .unused, | 3488 | .unused, |
| 3395 | .unused, | 3489 | .unused, |
| 3396 | }, | 3490 | }, |
| 3397 | .dst_temps = .{.mem}, | 3491 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 3398 | .clobbers = .{ .eflags = true }, | | |
| 3399 | .each = .{ .once = &.{ | 3492 | .each = .{ .once = &.{ |
| 3400 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3493 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 3401 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, | 3494 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| 3402 | .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ }, | 3495 | .{ ._, .v_ps, .sub, .dst0x, .dst0x, .tmp0x, ._ }, |
| 3403 | .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ }, | 3496 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 3404 | .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ }, | | |
| 3405 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, | | |
| 3406 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | | |
| 3407 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 3408 | } }, | 3497 | } }, |
| 3409 | }, .{ | 3498 | }, .{ |
| 3410 | .required_features = .{ .cmov, null, null, null }, | 3499 | .required_features = .{ .f16c, null, null, null }, |
| 3411 | .src_constraints = .{ | 3500 | .src_constraints = .{ |
| 3412 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 3501 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| 3413 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 3502 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 3503 | .any, |
| 3414 | }, | 3504 | }, |
| 3415 | .patterns = &.{ | 3505 | .patterns = &.{ |
| 3416 | .{ .src = .{ .to_mem, .to_mem } }, | 3506 | .{ .src = .{ .mem, .mem, .none } }, |
| | 3507 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 3508 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 3509 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 3417 | }, | 3510 | }, |
| 3418 | .extra_temps = .{ | 3511 | .extra_temps = .{ |
| 3419 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3512 | .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 3420 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, | 3513 | .unused, |
| 3421 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, | 3514 | .unused, |
| 3422 | .unused, | 3515 | .unused, |
| 3423 | .unused, | 3516 | .unused, |
| 3424 | .unused, | 3517 | .unused, |
| ... | @@ -3426,31 +3519,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3426,31 +3519,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3426 | .unused, | 3519 | .unused, |
| 3427 | .unused, | 3520 | .unused, |
| 3428 | }, | 3521 | }, |
| 3429 | .dst_temps = .{.mem}, | 3522 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 3430 | .clobbers = .{ .eflags = true }, | | |
| 3431 | .each = .{ .once = &.{ | 3523 | .each = .{ .once = &.{ |
| 3432 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3524 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| 3433 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, | 3525 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, |
| 3434 | .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ }, | 3526 | .{ ._, .v_ps, .sub, .dst0y, .dst0y, .tmp0y, ._ }, |
| 3435 | .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ }, | 3527 | .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, |
| 3436 | .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ }, | | |
| 3437 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, | | |
| 3438 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | | |
| 3439 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 3440 | } }, | 3528 | } }, |
| 3441 | }, .{ | 3529 | }, .{ |
| 3442 | .required_features = .{ .slow_incdec, null, null, null }, | 3530 | .required_features = .{ .f16c, null, null, null }, |
| 3443 | .src_constraints = .{ | 3531 | .src_constraints = .{ |
| 3444 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 3532 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| 3445 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 3533 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 3534 | .any, |
| 3446 | }, | 3535 | }, |
| 3447 | .patterns = &.{ | 3536 | .patterns = &.{ |
| 3448 | .{ .src = .{ .to_mem, .to_mem } }, | 3537 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3449 | }, | 3538 | }, |
| 3450 | .extra_temps = .{ | 3539 | .extra_temps = .{ |
| 3451 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3540 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3452 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, | 3541 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 3453 | .unused, | 3542 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 3454 | .unused, | 3543 | .unused, |
| 3455 | .unused, | 3544 | .unused, |
| 3456 | .unused, | 3545 | .unused, |
| ... | @@ -3461,28 +3550,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3461,28 +3550,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3461 | .dst_temps = .{.mem}, | 3550 | .dst_temps = .{.mem}, |
| 3462 | .clobbers = .{ .eflags = true }, | 3551 | .clobbers = .{ .eflags = true }, |
| 3463 | .each = .{ .once = &.{ | 3552 | .each = .{ .once = &.{ |
| 3464 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3553 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3465 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, | 3554 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 3466 | .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, | 3555 | .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 3467 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, | 3556 | .{ ._, .v_ps, .sub, .tmp1y, .tmp1y, .tmp2y, ._ }, |
| 3468 | .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, | 3557 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, |
| 3469 | .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, | 3558 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 3470 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | | |
| 3471 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 3559 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3472 | } }, | 3560 | } }, |
| 3473 | }, .{ | 3561 | }, .{ |
| | 3562 | .required_features = .{ .avx, null, null, null }, |
| 3474 | .src_constraints = .{ | 3563 | .src_constraints = .{ |
| 3475 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 3564 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 3476 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 3565 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 3566 | .any, |
| 3477 | }, | 3567 | }, |
| 3478 | .patterns = &.{ | 3568 | .patterns = &.{ |
| 3479 | .{ .src = .{ .to_mem, .to_mem } }, | 3569 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3480 | }, | 3570 | }, |
| | 3571 | .call_frame = .{ .alignment = .@"16" }, |
| 3481 | .extra_temps = .{ | 3572 | .extra_temps = .{ |
| 3482 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3573 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3483 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, | 3574 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 3484 | .unused, | 3575 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 3485 | .unused, | 3576 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } }, |
| 3486 | .unused, | 3577 | .unused, |
| 3487 | .unused, | 3578 | .unused, |
| 3488 | .unused, | 3579 | .unused, |
| ... | @@ -3490,149 +3581,215 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3490,149 +3581,215 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3490 | .unused, | 3581 | .unused, |
| 3491 | }, | 3582 | }, |
| 3492 | .dst_temps = .{.mem}, | 3583 | .dst_temps = .{.mem}, |
| 3493 | .clobbers = .{ .eflags = true }, | 3584 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 3494 | .each = .{ .once = &.{ | 3585 | .each = .{ .once = &.{ |
| 3495 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3586 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3496 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, | 3587 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| 3497 | .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, | 3588 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| 3498 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, | 3589 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, |
| 3499 | .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, | 3590 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 3500 | .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, | 3591 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| 3501 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 3592 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 3502 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 3593 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3503 | } }, | 3594 | } }, |
| 3504 | }, .{ | 3595 | }, .{ |
| 3505 | .required_features = .{ .sse, .mmx, null, null }, | 3596 | .required_features = .{ .sse4_1, null, null, null }, |
| 3506 | .src_constraints = .{ | 3597 | .src_constraints = .{ |
| 3507 | .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, | 3598 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 3508 | .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, | 3599 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 3600 | .any, |
| 3509 | }, | 3601 | }, |
| 3510 | .patterns = &.{ | 3602 | .patterns = &.{ |
| 3511 | .{ .src = .{ .to_mut_mmx, .mem } }, | 3603 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3512 | .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } }, | | |
| 3513 | .{ .src = .{ .to_mut_mmx, .to_mmx } }, | | |
| 3514 | }, | 3604 | }, |
| 3515 | .dst_temps = .{.{ .ref = .src0 }}, | 3605 | .call_frame = .{ .alignment = .@"16" }, |
| 3516 | .each = .{ .once = &.{ | 3606 | .extra_temps = .{ |
| 3517 | .{ ._, .p_b, .maxu, .dst0q, .src1q, ._, ._ }, | 3607 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 3608 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 3609 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 3610 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } }, |
| | 3611 | .unused, |
| | 3612 | .unused, |
| | 3613 | .unused, |
| | 3614 | .unused, |
| | 3615 | .unused, |
| | 3616 | }, |
| | 3617 | .dst_temps = .{.mem}, |
| | 3618 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 3619 | .each = .{ .once = &.{ |
| | 3620 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 3621 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 3622 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 3623 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 3624 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 3625 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 3626 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 3627 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 3628 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 3629 | } }, |
| | 3630 | }, .{ |
| | 3631 | .required_features = .{ .sse2, null, null, null }, |
| | 3632 | .src_constraints = .{ |
| | 3633 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 3634 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 3635 | .any, |
| | 3636 | }, |
| | 3637 | .patterns = &.{ |
| | 3638 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 3639 | }, |
| | 3640 | .call_frame = .{ .alignment = .@"16" }, |
| | 3641 | .extra_temps = .{ |
| | 3642 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 3643 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 3644 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 3645 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } }, |
| | 3646 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 3647 | .unused, |
| | 3648 | .unused, |
| | 3649 | .unused, |
| | 3650 | .unused, |
| | 3651 | }, |
| | 3652 | .dst_temps = .{.mem}, |
| | 3653 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 3654 | .each = .{ .once = &.{ |
| | 3655 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 3656 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 3657 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 3658 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 3659 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 3660 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 3661 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, |
| | 3662 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 3663 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 3664 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 3665 | } }, |
| | 3666 | }, .{ |
| | 3667 | .required_features = .{ .sse, null, null, null }, |
| | 3668 | .src_constraints = .{ |
| | 3669 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 3670 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 3671 | .any, |
| | 3672 | }, |
| | 3673 | .patterns = &.{ |
| | 3674 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 3675 | }, |
| | 3676 | .call_frame = .{ .alignment = .@"16" }, |
| | 3677 | .extra_temps = .{ |
| | 3678 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 3679 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 3680 | .{ .type = .f32, .kind = .mem }, |
| | 3681 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 3682 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 3683 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } }, |
| | 3684 | .unused, |
| | 3685 | .unused, |
| | 3686 | .unused, |
| | 3687 | }, |
| | 3688 | .dst_temps = .{.mem}, |
| | 3689 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 3690 | .each = .{ .once = &.{ |
| | 3691 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 3692 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 3693 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 3694 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 3695 | .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 3696 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 3697 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| | 3698 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 3699 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| | 3700 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 3701 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 3702 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 3703 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3518 | } }, | 3704 | } }, |
| 3519 | }, .{ | 3705 | }, .{ |
| 3520 | .required_features = .{ .avx, null, null, null }, | 3706 | .required_features = .{ .avx, null, null, null }, |
| 3521 | .src_constraints = .{ | 3707 | .src_constraints = .{ |
| 3522 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 3708 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 3523 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 3709 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 3710 | .any, |
| 3524 | }, | 3711 | }, |
| 3525 | .patterns = &.{ | 3712 | .patterns = &.{ |
| 3526 | .{ .src = .{ .to_sse, .mem } }, | 3713 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 3527 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 3714 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 3528 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 3529 | }, | 3715 | }, |
| 3530 | .dst_temps = .{.{ .rc = .sse }}, | 3716 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 3531 | .each = .{ .once = &.{ | 3717 | .each = .{ .once = &.{ |
| 3532 | .{ ._, .vp_b, .maxu, .dst0x, .src0x, .src1x, ._ }, | 3718 | .{ ._, .v_ss, .sub, .dst0x, .src0x, .src1d, ._ }, |
| 3533 | } }, | 3719 | } }, |
| 3534 | }, .{ | 3720 | }, .{ |
| 3535 | .required_features = .{ .sse2, null, null, null }, | 3721 | .required_features = .{ .sse, null, null, null }, |
| 3536 | .src_constraints = .{ | 3722 | .src_constraints = .{ |
| 3537 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 3723 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 3538 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 3724 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 3725 | .any, |
| 3539 | }, | 3726 | }, |
| 3540 | .patterns = &.{ | 3727 | .patterns = &.{ |
| 3541 | .{ .src = .{ .to_mut_sse, .mem } }, | 3728 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 3542 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 3729 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 3543 | .{ .src = .{ .to_mut_sse, .to_sse } }, | | |
| 3544 | }, | 3730 | }, |
| 3545 | .dst_temps = .{.{ .ref = .src0 }}, | 3731 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3546 | .each = .{ .once = &.{ | 3732 | .each = .{ .once = &.{ |
| 3547 | .{ ._, .p_b, .maxu, .dst0x, .src1x, ._, ._ }, | 3733 | .{ ._, ._ss, .sub, .dst0x, .src1d, ._, ._ }, |
| 3548 | } }, | 3734 | } }, |
| 3549 | }, .{ | 3735 | }, .{ |
| 3550 | .required_features = .{ .avx2, null, null, null }, | 3736 | .required_features = .{ .avx, null, null, null }, |
| 3551 | .src_constraints = .{ | 3737 | .src_constraints = .{ |
| 3552 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, | 3738 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 3553 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, | 3739 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 3740 | .any, |
| 3554 | }, | 3741 | }, |
| 3555 | .patterns = &.{ | 3742 | .patterns = &.{ |
| 3556 | .{ .src = .{ .to_sse, .mem } }, | 3743 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 3557 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 3744 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 3558 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 3559 | }, | 3745 | }, |
| 3560 | .dst_temps = .{.{ .rc = .sse }}, | 3746 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 3561 | .each = .{ .once = &.{ | 3747 | .each = .{ .once = &.{ |
| 3562 | .{ ._, .vp_b, .maxu, .dst0y, .src0y, .src1y, ._ }, | 3748 | .{ ._, .v_ps, .sub, .dst0x, .src0x, .src1x, ._ }, |
| 3563 | } }, | 3749 | } }, |
| 3564 | }, .{ | 3750 | }, .{ |
| 3565 | .required_features = .{ .avx2, null, null, null }, | 3751 | .required_features = .{ .sse, null, null, null }, |
| 3566 | .src_constraints = .{ | 3752 | .src_constraints = .{ |
| 3567 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, | 3753 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 3568 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, | 3754 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 3755 | .any, |
| 3569 | }, | 3756 | }, |
| 3570 | .patterns = &.{ | 3757 | .patterns = &.{ |
| 3571 | .{ .src = .{ .to_mem, .to_mem } }, | 3758 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 3572 | }, | 3759 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 3573 | .extra_temps = .{ | | |
| 3574 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 3575 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, | | |
| 3576 | .unused, | | |
| 3577 | .unused, | | |
| 3578 | .unused, | | |
| 3579 | .unused, | | |
| 3580 | .unused, | | |
| 3581 | .unused, | | |
| 3582 | .unused, | | |
| 3583 | }, | 3760 | }, |
| 3584 | .dst_temps = .{.mem}, | 3761 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3585 | .clobbers = .{ .eflags = true }, | | |
| 3586 | .each = .{ .once = &.{ | 3762 | .each = .{ .once = &.{ |
| 3587 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3763 | .{ ._, ._ps, .sub, .dst0x, .src1x, ._, ._ }, |
| 3588 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | | |
| 3589 | .{ ._, .vp_b, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ }, | | |
| 3590 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | | |
| 3591 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | | |
| 3592 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 3593 | } }, | 3764 | } }, |
| 3594 | }, .{ | 3765 | }, .{ |
| 3595 | .required_features = .{ .avx, null, null, null }, | 3766 | .required_features = .{ .avx, null, null, null }, |
| 3596 | .src_constraints = .{ | 3767 | .src_constraints = .{ |
| 3597 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 3768 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 3598 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 3769 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 3770 | .any, |
| 3599 | }, | 3771 | }, |
| 3600 | .patterns = &.{ | 3772 | .patterns = &.{ |
| 3601 | .{ .src = .{ .to_mem, .to_mem } }, | 3773 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 3602 | }, | 3774 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 3603 | .extra_temps = .{ | | |
| 3604 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 3605 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | | |
| 3606 | .unused, | | |
| 3607 | .unused, | | |
| 3608 | .unused, | | |
| 3609 | .unused, | | |
| 3610 | .unused, | | |
| 3611 | .unused, | | |
| 3612 | .unused, | | |
| 3613 | }, | 3775 | }, |
| 3614 | .dst_temps = .{.mem}, | 3776 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 3615 | .clobbers = .{ .eflags = true }, | | |
| 3616 | .each = .{ .once = &.{ | 3777 | .each = .{ .once = &.{ |
| 3617 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3778 | .{ ._, .v_ps, .sub, .dst0y, .src0y, .src1y, ._ }, |
| 3618 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | | |
| 3619 | .{ ._, .vp_b, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ }, | | |
| 3620 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 3621 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 3622 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 3623 | } }, | 3779 | } }, |
| 3624 | }, .{ | 3780 | }, .{ |
| 3625 | .required_features = .{ .sse2, null, null, null }, | 3781 | .required_features = .{ .avx, null, null, null }, |
| 3626 | .src_constraints = .{ | 3782 | .src_constraints = .{ |
| 3627 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 3783 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 3628 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 3784 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 3785 | .any, |
| 3629 | }, | 3786 | }, |
| 3630 | .patterns = &.{ | 3787 | .patterns = &.{ |
| 3631 | .{ .src = .{ .to_mem, .to_mem } }, | 3788 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3632 | }, | 3789 | }, |
| 3633 | .extra_temps = .{ | 3790 | .extra_temps = .{ |
| 3634 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3791 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3635 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 3792 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 3636 | .unused, | 3793 | .unused, |
| 3637 | .unused, | 3794 | .unused, |
| 3638 | .unused, | 3795 | .unused, |
| ... | @@ -3644,26 +3801,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3644,26 +3801,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3644 | .dst_temps = .{.mem}, | 3801 | .dst_temps = .{.mem}, |
| 3645 | .clobbers = .{ .eflags = true }, | 3802 | .clobbers = .{ .eflags = true }, |
| 3646 | .each = .{ .once = &.{ | 3803 | .each = .{ .once = &.{ |
| 3647 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3804 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3648 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 3805 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 3649 | .{ ._, .p_b, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 3806 | .{ ._, .v_ps, .sub, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, |
| 3650 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 3807 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| 3651 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 3808 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 3652 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 3809 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3653 | } }, | 3810 | } }, |
| 3654 | }, .{ | 3811 | }, .{ |
| 3655 | .required_features = .{ .cmov, .slow_incdec, null, null }, | 3812 | .required_features = .{ .sse, null, null, null }, |
| 3656 | .src_constraints = .{ | 3813 | .src_constraints = .{ |
| 3657 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 3814 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| 3658 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 3815 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 3816 | .any, |
| 3659 | }, | 3817 | }, |
| 3660 | .patterns = &.{ | 3818 | .patterns = &.{ |
| 3661 | .{ .src = .{ .to_mem, .to_mem } }, | 3819 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3662 | }, | 3820 | }, |
| 3663 | .extra_temps = .{ | 3821 | .extra_temps = .{ |
| 3664 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3822 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3665 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 3823 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| 3666 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 3824 | .unused, |
| 3667 | .unused, | 3825 | .unused, |
| 3668 | .unused, | 3826 | .unused, |
| 3669 | .unused, | 3827 | .unused, |
| ... | @@ -3674,90 +3832,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3674,90 +3832,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3674 | .dst_temps = .{.mem}, | 3832 | .dst_temps = .{.mem}, |
| 3675 | .clobbers = .{ .eflags = true }, | 3833 | .clobbers = .{ .eflags = true }, |
| 3676 | .each = .{ .once = &.{ | 3834 | .each = .{ .once = &.{ |
| 3677 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3835 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3678 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, | 3836 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 3679 | .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ }, | 3837 | .{ ._, ._ps, .sub, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 3680 | .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ }, | 3838 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 3681 | .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ }, | 3839 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 3682 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, | | |
| 3683 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | | |
| 3684 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 3840 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3685 | } }, | 3841 | } }, |
| 3686 | }, .{ | 3842 | }, .{ |
| 3687 | .required_features = .{ .cmov, null, null, null }, | 3843 | .required_features = .{ .avx, null, null, null }, |
| 3688 | .src_constraints = .{ | 3844 | .src_constraints = .{ |
| 3689 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 3845 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 3690 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 3846 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 3847 | .any, |
| 3691 | }, | 3848 | }, |
| 3692 | .patterns = &.{ | 3849 | .patterns = &.{ |
| 3693 | .{ .src = .{ .to_mem, .to_mem } }, | 3850 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 3694 | }, | 3851 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 3695 | .extra_temps = .{ | | |
| 3696 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 3697 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | | |
| 3698 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | | |
| 3699 | .unused, | | |
| 3700 | .unused, | | |
| 3701 | .unused, | | |
| 3702 | .unused, | | |
| 3703 | .unused, | | |
| 3704 | .unused, | | |
| 3705 | }, | 3852 | }, |
| 3706 | .dst_temps = .{.mem}, | 3853 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 3707 | .clobbers = .{ .eflags = true }, | | |
| 3708 | .each = .{ .once = &.{ | 3854 | .each = .{ .once = &.{ |
| 3709 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3855 | .{ ._, .v_sd, .sub, .dst0x, .src0x, .src1q, ._ }, |
| 3710 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, | | |
| 3711 | .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ }, | | |
| 3712 | .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ }, | | |
| 3713 | .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ }, | | |
| 3714 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, | | |
| 3715 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | | |
| 3716 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 3717 | } }, | 3856 | } }, |
| 3718 | }, .{ | 3857 | }, .{ |
| 3719 | .required_features = .{ .slow_incdec, null, null, null }, | 3858 | .required_features = .{ .sse2, null, null, null }, |
| 3720 | .src_constraints = .{ | 3859 | .src_constraints = .{ |
| 3721 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 3860 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 3722 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 3861 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 3862 | .any, |
| 3723 | }, | 3863 | }, |
| 3724 | .patterns = &.{ | 3864 | .patterns = &.{ |
| 3725 | .{ .src = .{ .to_mem, .to_mem } }, | 3865 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 3726 | }, | 3866 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 3727 | .extra_temps = .{ | | |
| 3728 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 3729 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | | |
| 3730 | .unused, | | |
| 3731 | .unused, | | |
| 3732 | .unused, | | |
| 3733 | .unused, | | |
| 3734 | .unused, | | |
| 3735 | .unused, | | |
| 3736 | .unused, | | |
| 3737 | }, | 3867 | }, |
| 3738 | .dst_temps = .{.mem}, | 3868 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3739 | .clobbers = .{ .eflags = true }, | | |
| 3740 | .each = .{ .once = &.{ | 3869 | .each = .{ .once = &.{ |
| 3741 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3870 | .{ ._, ._sd, .sub, .dst0x, .src1q, ._, ._ }, |
| 3742 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, | | |
| 3743 | .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, | | |
| 3744 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, | | |
| 3745 | .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, | | |
| 3746 | .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, | | |
| 3747 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | | |
| 3748 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 3749 | } }, | 3871 | } }, |
| 3750 | }, .{ | 3872 | }, .{ |
| | 3873 | .required_features = .{ .x87, null, null, null }, |
| 3751 | .src_constraints = .{ | 3874 | .src_constraints = .{ |
| 3752 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 3875 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 3753 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 3876 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 3877 | .any, |
| 3754 | }, | 3878 | }, |
| 3755 | .patterns = &.{ | 3879 | .patterns = &.{ |
| 3756 | .{ .src = .{ .to_mem, .to_mem } }, | 3880 | .{ .src = .{ .mem, .mem, .none } }, |
| 3757 | }, | 3881 | }, |
| 3758 | .extra_temps = .{ | 3882 | .extra_temps = .{ |
| 3759 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3883 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 3760 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 3884 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 3761 | .unused, | 3885 | .unused, |
| 3762 | .unused, | 3886 | .unused, |
| 3763 | .unused, | 3887 | .unused, |
| ... | @@ -3767,89 +3891,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3767,89 +3891,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3767 | .unused, | 3891 | .unused, |
| 3768 | }, | 3892 | }, |
| 3769 | .dst_temps = .{.mem}, | 3893 | .dst_temps = .{.mem}, |
| 3770 | .clobbers = .{ .eflags = true }, | | |
| 3771 | .each = .{ .once = &.{ | | |
| 3772 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 3773 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, | | |
| 3774 | .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, | | |
| 3775 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, | | |
| 3776 | .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, | | |
| 3777 | .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, | | |
| 3778 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | | |
| 3779 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 3780 | } }, | | |
| 3781 | }, .{ | | |
| 3782 | .required_features = .{ .sse, .mmx, null, null }, | | |
| 3783 | .src_constraints = .{ | | |
| 3784 | .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, | | |
| 3785 | .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, | | |
| 3786 | }, | | |
| 3787 | .patterns = &.{ | | |
| 3788 | .{ .src = .{ .to_mut_mmx, .mem } }, | | |
| 3789 | .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } }, | | |
| 3790 | .{ .src = .{ .to_mut_mmx, .to_mmx } }, | | |
| 3791 | }, | | |
| 3792 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 3793 | .each = .{ .once = &.{ | 3894 | .each = .{ .once = &.{ |
| 3794 | .{ ._, .p_w, .maxs, .dst0q, .src1q, ._, ._ }, | 3895 | .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, |
| | 3896 | .{ ._, .f_, .ld, .src1q, ._, ._, ._ }, |
| | 3897 | .{ ._, .f_p, .sub, ._, ._, ._, ._ }, |
| | 3898 | .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, |
| 3795 | } }, | 3899 | } }, |
| 3796 | }, .{ | 3900 | }, .{ |
| 3797 | .required_features = .{ .avx, null, null, null }, | 3901 | .required_features = .{ .avx, null, null, null }, |
| 3798 | .src_constraints = .{ | 3902 | .src_constraints = .{ |
| 3799 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, | 3903 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 3800 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, | 3904 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 3905 | .any, |
| 3801 | }, | 3906 | }, |
| 3802 | .patterns = &.{ | 3907 | .patterns = &.{ |
| 3803 | .{ .src = .{ .to_sse, .mem } }, | 3908 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 3804 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 3909 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 3805 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 3806 | }, | 3910 | }, |
| 3807 | .dst_temps = .{.{ .rc = .sse }}, | 3911 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 3808 | .each = .{ .once = &.{ | 3912 | .each = .{ .once = &.{ |
| 3809 | .{ ._, .vp_w, .maxs, .dst0x, .src0x, .src1x, ._ }, | 3913 | .{ ._, .v_pd, .sub, .dst0x, .src0x, .src1x, ._ }, |
| 3810 | } }, | 3914 | } }, |
| 3811 | }, .{ | 3915 | }, .{ |
| 3812 | .required_features = .{ .sse2, null, null, null }, | 3916 | .required_features = .{ .sse2, null, null, null }, |
| 3813 | .src_constraints = .{ | 3917 | .src_constraints = .{ |
| 3814 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, | 3918 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 3815 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, | 3919 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 3920 | .any, |
| 3816 | }, | 3921 | }, |
| 3817 | .patterns = &.{ | 3922 | .patterns = &.{ |
| 3818 | .{ .src = .{ .to_mut_sse, .mem } }, | 3923 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 3819 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 3924 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 3820 | .{ .src = .{ .to_mut_sse, .to_sse } }, | | |
| 3821 | }, | 3925 | }, |
| 3822 | .dst_temps = .{.{ .ref = .src0 }}, | 3926 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3823 | .each = .{ .once = &.{ | 3927 | .each = .{ .once = &.{ |
| 3824 | .{ ._, .p_w, .maxs, .dst0x, .src1x, ._, ._ }, | 3928 | .{ ._, ._pd, .sub, .dst0x, .src1x, ._, ._ }, |
| 3825 | } }, | 3929 | } }, |
| 3826 | }, .{ | 3930 | }, .{ |
| 3827 | .required_features = .{ .avx2, null, null, null }, | 3931 | .required_features = .{ .avx, null, null, null }, |
| 3828 | .src_constraints = .{ | 3932 | .src_constraints = .{ |
| 3829 | .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, | 3933 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| 3830 | .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, | 3934 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 3935 | .any, |
| 3831 | }, | 3936 | }, |
| 3832 | .patterns = &.{ | 3937 | .patterns = &.{ |
| 3833 | .{ .src = .{ .to_sse, .mem } }, | 3938 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 3834 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 3939 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 3835 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 3836 | }, | 3940 | }, |
| 3837 | .dst_temps = .{.{ .rc = .sse }}, | 3941 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 3838 | .each = .{ .once = &.{ | 3942 | .each = .{ .once = &.{ |
| 3839 | .{ ._, .vp_w, .maxs, .dst0y, .src0y, .src1y, ._ }, | 3943 | .{ ._, .v_pd, .sub, .dst0y, .src0y, .src1y, ._ }, |
| 3840 | } }, | 3944 | } }, |
| 3841 | }, .{ | 3945 | }, .{ |
| 3842 | .required_features = .{ .avx2, null, null, null }, | 3946 | .required_features = .{ .avx, null, null, null }, |
| 3843 | .src_constraints = .{ | 3947 | .src_constraints = .{ |
| 3844 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, | 3948 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| 3845 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, | 3949 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 3950 | .any, |
| 3846 | }, | 3951 | }, |
| 3847 | .patterns = &.{ | 3952 | .patterns = &.{ |
| 3848 | .{ .src = .{ .to_mem, .to_mem } }, | 3953 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3849 | }, | 3954 | }, |
| 3850 | .extra_temps = .{ | 3955 | .extra_temps = .{ |
| 3851 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3956 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3852 | .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, | 3957 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| 3853 | .unused, | 3958 | .unused, |
| 3854 | .unused, | 3959 | .unused, |
| 3855 | .unused, | 3960 | .unused, |
| ... | @@ -3861,25 +3966,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3861,25 +3966,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3861 | .dst_temps = .{.mem}, | 3966 | .dst_temps = .{.mem}, |
| 3862 | .clobbers = .{ .eflags = true }, | 3967 | .clobbers = .{ .eflags = true }, |
| 3863 | .each = .{ .once = &.{ | 3968 | .each = .{ .once = &.{ |
| 3864 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3969 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3865 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | 3970 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 3866 | .{ ._, .vp_w, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ }, | 3971 | .{ ._, .v_pd, .sub, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, |
| 3867 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | 3972 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| 3868 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 3973 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 3869 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 3974 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3870 | } }, | 3975 | } }, |
| 3871 | }, .{ | 3976 | }, .{ |
| 3872 | .required_features = .{ .avx, null, null, null }, | 3977 | .required_features = .{ .sse2, null, null, null }, |
| 3873 | .src_constraints = .{ | 3978 | .src_constraints = .{ |
| 3874 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, | 3979 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| 3875 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, | 3980 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 3981 | .any, |
| 3876 | }, | 3982 | }, |
| 3877 | .patterns = &.{ | 3983 | .patterns = &.{ |
| 3878 | .{ .src = .{ .to_mem, .to_mem } }, | 3984 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3879 | }, | 3985 | }, |
| 3880 | .extra_temps = .{ | 3986 | .extra_temps = .{ |
| 3881 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 3987 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3882 | .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, | 3988 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| 3883 | .unused, | 3989 | .unused, |
| 3884 | .unused, | 3990 | .unused, |
| 3885 | .unused, | 3991 | .unused, |
| ... | @@ -3891,26 +3997,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3891,26 +3997,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3891 | .dst_temps = .{.mem}, | 3997 | .dst_temps = .{.mem}, |
| 3892 | .clobbers = .{ .eflags = true }, | 3998 | .clobbers = .{ .eflags = true }, |
| 3893 | .each = .{ .once = &.{ | 3999 | .each = .{ .once = &.{ |
| 3894 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4000 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3895 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 4001 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 3896 | .{ ._, .vp_w, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ }, | 4002 | .{ ._, ._pd, .sub, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 3897 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 4003 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 3898 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 4004 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 3899 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4005 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3900 | } }, | 4006 | } }, |
| 3901 | }, .{ | 4007 | }, .{ |
| 3902 | .required_features = .{ .sse2, null, null, null }, | 4008 | .required_features = .{ .x87, null, null, null }, |
| 3903 | .src_constraints = .{ | 4009 | .src_constraints = .{ |
| 3904 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, | 4010 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 3905 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, | 4011 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 4012 | .any, |
| 3906 | }, | 4013 | }, |
| 3907 | .patterns = &.{ | 4014 | .patterns = &.{ |
| 3908 | .{ .src = .{ .to_mem, .to_mem } }, | 4015 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 3909 | }, | 4016 | }, |
| 3910 | .extra_temps = .{ | 4017 | .extra_temps = .{ |
| 3911 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4018 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 3912 | .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, | 4019 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 3913 | .unused, | 4020 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 3914 | .unused, | 4021 | .unused, |
| 3915 | .unused, | 4022 | .unused, |
| 3916 | .unused, | 4023 | .unused, |
| ... | @@ -3919,27 +4026,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3919,27 +4026,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3919 | .unused, | 4026 | .unused, |
| 3920 | }, | 4027 | }, |
| 3921 | .dst_temps = .{.mem}, | 4028 | .dst_temps = .{.mem}, |
| 3922 | .clobbers = .{ .eflags = true }, | | |
| 3923 | .each = .{ .once = &.{ | 4029 | .each = .{ .once = &.{ |
| 3924 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4030 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3925 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 4031 | .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 3926 | .{ ._, .p_w, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 4032 | .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 3927 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 4033 | .{ ._, .f_p, .sub, ._, ._, ._, ._ }, |
| 3928 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 4034 | .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 4035 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 3929 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4036 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 3930 | } }, | 4037 | } }, |
| 3931 | }, .{ | 4038 | }, .{ |
| 3932 | .required_features = .{ .cmov, null, null, null }, | 4039 | .required_features = .{ .x87, null, null, null }, |
| 3933 | .src_constraints = .{ | 4040 | .src_constraints = .{ |
| 3934 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, | 4041 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 3935 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, | 4042 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 4043 | .any, |
| 3936 | }, | 4044 | }, |
| 3937 | .patterns = &.{ | 4045 | .patterns = &.{ |
| 3938 | .{ .src = .{ .to_mem, .to_mem } }, | 4046 | .{ .src = .{ .mem, .mem, .none } }, |
| 3939 | }, | 4047 | }, |
| 3940 | .extra_temps = .{ | 4048 | .extra_temps = .{ |
| 3941 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4049 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 3942 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, | 4050 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 3943 | .unused, | 4051 | .unused, |
| 3944 | .unused, | 4052 | .unused, |
| 3945 | .unused, | 4053 | .unused, |
| ... | @@ -3948,28 +4056,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3948,28 +4056,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3948 | .unused, | 4056 | .unused, |
| 3949 | .unused, | 4057 | .unused, |
| 3950 | }, | 4058 | }, |
| 3951 | .dst_temps = .{.mem}, | 4059 | .dst_temps = .{.{ .rc = .x87 }}, |
| 3952 | .clobbers = .{ .eflags = true }, | | |
| 3953 | .each = .{ .once = &.{ | 4060 | .each = .{ .once = &.{ |
| 3954 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4061 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 3955 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 4062 | .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, |
| 3956 | .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, | 4063 | .{ ._, .f_p, .sub, ._, ._, ._, ._ }, |
| 3957 | .{ ._, ._l, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, | 4064 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 3958 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, | | |
| 3959 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 3960 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 3961 | } }, | 4065 | } }, |
| 3962 | }, .{ | 4066 | }, .{ |
| | 4067 | .required_features = .{ .x87, null, null, null }, |
| 3963 | .src_constraints = .{ | 4068 | .src_constraints = .{ |
| 3964 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, | 4069 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 3965 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, | 4070 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 4071 | .any, |
| 3966 | }, | 4072 | }, |
| 3967 | .patterns = &.{ | 4073 | .patterns = &.{ |
| 3968 | .{ .src = .{ .to_mem, .to_mem } }, | 4074 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| 3969 | }, | 4075 | }, |
| 3970 | .extra_temps = .{ | 4076 | .extra_temps = .{ |
| 3971 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4077 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 3972 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, | 4078 | .unused, |
| 3973 | .unused, | 4079 | .unused, |
| 3974 | .unused, | 4080 | .unused, |
| 3975 | .unused, | 4081 | .unused, |
| ... | @@ -3978,91 +4084,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3978,91 +4084,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3978 | .unused, | 4084 | .unused, |
| 3979 | .unused, | 4085 | .unused, |
| 3980 | }, | 4086 | }, |
| 3981 | .dst_temps = .{.mem}, | 4087 | .dst_temps = .{.{ .rc = .x87 }}, |
| 3982 | .clobbers = .{ .eflags = true }, | | |
| 3983 | .each = .{ .once = &.{ | | |
| 3984 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 3985 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | | |
| 3986 | .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, | | |
| 3987 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, | | |
| 3988 | .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, | | |
| 3989 | .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, | | |
| 3990 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 3991 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 3992 | } }, | | |
| 3993 | }, .{ | | |
| 3994 | .required_features = .{ .avx, null, null, null }, | | |
| 3995 | .src_constraints = .{ | | |
| 3996 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | | |
| 3997 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | | |
| 3998 | }, | | |
| 3999 | .patterns = &.{ | | |
| 4000 | .{ .src = .{ .to_sse, .mem } }, | | |
| 4001 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | | |
| 4002 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 4003 | }, | | |
| 4004 | .dst_temps = .{.{ .rc = .sse }}, | | |
| 4005 | .each = .{ .once = &.{ | | |
| 4006 | .{ ._, .vp_w, .maxu, .dst0x, .src0x, .src1x, ._ }, | | |
| 4007 | } }, | | |
| 4008 | }, .{ | | |
| 4009 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 4010 | .src_constraints = .{ | | |
| 4011 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | | |
| 4012 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | | |
| 4013 | }, | | |
| 4014 | .patterns = &.{ | | |
| 4015 | .{ .src = .{ .to_mut_sse, .mem } }, | | |
| 4016 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | | |
| 4017 | .{ .src = .{ .to_mut_sse, .to_sse } }, | | |
| 4018 | }, | | |
| 4019 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 4020 | .each = .{ .once = &.{ | | |
| 4021 | .{ ._, .p_w, .maxu, .dst0x, .src1x, ._, ._ }, | | |
| 4022 | } }, | | |
| 4023 | }, .{ | | |
| 4024 | .required_features = .{ .sse2, null, null, null }, | | |
| 4025 | .src_constraints = .{ | | |
| 4026 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | | |
| 4027 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | | |
| 4028 | }, | | |
| 4029 | .patterns = &.{ | | |
| 4030 | .{ .src = .{ .to_mut_sse, .mem } }, | | |
| 4031 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | | |
| 4032 | .{ .src = .{ .to_mut_sse, .to_sse } }, | | |
| 4033 | }, | | |
| 4034 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 4035 | .each = .{ .once = &.{ | | |
| 4036 | .{ ._, .p_w, .subus, .dst0x, .src1x, ._, ._ }, | | |
| 4037 | .{ ._, .p_w, .add, .dst0x, .src1x, ._, ._ }, | | |
| 4038 | } }, | | |
| 4039 | }, .{ | | |
| 4040 | .required_features = .{ .avx2, null, null, null }, | | |
| 4041 | .src_constraints = .{ | | |
| 4042 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, | | |
| 4043 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, | | |
| 4044 | }, | | |
| 4045 | .patterns = &.{ | | |
| 4046 | .{ .src = .{ .to_sse, .mem } }, | | |
| 4047 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | | |
| 4048 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 4049 | }, | | |
| 4050 | .dst_temps = .{.{ .rc = .sse }}, | | |
| 4051 | .each = .{ .once = &.{ | 4088 | .each = .{ .once = &.{ |
| 4052 | .{ ._, .vp_w, .maxu, .dst0y, .src0y, .src1y, ._ }, | 4089 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| | 4090 | .{ ._, .f_, .subr, .tmp0t, .src1t, ._, ._ }, |
| | 4091 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 4053 | } }, | 4092 | } }, |
| 4054 | }, .{ | 4093 | }, .{ |
| 4055 | .required_features = .{ .avx2, null, null, null }, | 4094 | .required_features = .{ .x87, null, null, null }, |
| 4056 | .src_constraints = .{ | 4095 | .src_constraints = .{ |
| 4057 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, | 4096 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 4058 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, | 4097 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 4098 | .any, |
| 4059 | }, | 4099 | }, |
| 4060 | .patterns = &.{ | 4100 | .patterns = &.{ |
| 4061 | .{ .src = .{ .to_mem, .to_mem } }, | 4101 | .{ .src = .{ .mem, .to_x87, .none } }, |
| | 4102 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| 4062 | }, | 4103 | }, |
| 4063 | .extra_temps = .{ | 4104 | .extra_temps = .{ |
| 4064 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4105 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 4065 | .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, | 4106 | .unused, |
| 4066 | .unused, | 4107 | .unused, |
| 4067 | .unused, | 4108 | .unused, |
| 4068 | .unused, | 4109 | .unused, |
| ... | @@ -4071,29 +4112,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4071,29 +4112,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4071 | .unused, | 4112 | .unused, |
| 4072 | .unused, | 4113 | .unused, |
| 4073 | }, | 4114 | }, |
| 4074 | .dst_temps = .{.mem}, | 4115 | .dst_temps = .{.{ .rc = .x87 }}, |
| 4075 | .clobbers = .{ .eflags = true }, | | |
| 4076 | .each = .{ .once = &.{ | 4116 | .each = .{ .once = &.{ |
| 4077 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4117 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 4078 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | 4118 | .{ ._, .f_, .sub, .tmp0t, .src1t, ._, ._ }, |
| 4079 | .{ ._, .vp_w, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ }, | 4119 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 4080 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | | |
| 4081 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | | |
| 4082 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 4083 | } }, | 4120 | } }, |
| 4084 | }, .{ | 4121 | }, .{ |
| 4085 | .required_features = .{ .avx, null, null, null }, | 4122 | .required_features = .{ .x87, null, null, null }, |
| 4086 | .src_constraints = .{ | 4123 | .src_constraints = .{ |
| 4087 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 4124 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 4088 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 4125 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 4126 | .any, |
| 4089 | }, | 4127 | }, |
| 4090 | .patterns = &.{ | 4128 | .patterns = &.{ |
| 4091 | .{ .src = .{ .to_mem, .to_mem } }, | 4129 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4092 | }, | 4130 | }, |
| 4093 | .extra_temps = .{ | 4131 | .extra_temps = .{ |
| 4094 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4132 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4095 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, | 4133 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 4096 | .unused, | 4134 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 4097 | .unused, | 4135 | .unused, |
| 4098 | .unused, | 4136 | .unused, |
| 4099 | .unused, | 4137 | .unused, |
| ... | @@ -4102,27 +4140,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4102,27 +4140,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4102 | .unused, | 4140 | .unused, |
| 4103 | }, | 4141 | }, |
| 4104 | .dst_temps = .{.mem}, | 4142 | .dst_temps = .{.mem}, |
| 4105 | .clobbers = .{ .eflags = true }, | | |
| 4106 | .each = .{ .once = &.{ | 4143 | .each = .{ .once = &.{ |
| 4107 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4144 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4108 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 4145 | .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 4109 | .{ ._, .vp_w, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ }, | 4146 | .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 4110 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 4147 | .{ ._, .f_p, .sub, ._, ._, ._, ._ }, |
| | 4148 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 4111 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 4149 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 4112 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4150 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4113 | } }, | 4151 | } }, |
| 4114 | }, .{ | 4152 | }, .{ |
| 4115 | .required_features = .{ .sse4_1, null, null, null }, | 4153 | .required_features = .{ .sse, null, null, null }, |
| 4116 | .src_constraints = .{ | 4154 | .src_constraints = .{ |
| 4117 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 4155 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| 4118 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 4156 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 4157 | .any, |
| 4119 | }, | 4158 | }, |
| 4120 | .patterns = &.{ | 4159 | .patterns = &.{ |
| 4121 | .{ .src = .{ .to_mem, .to_mem } }, | 4160 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 4122 | }, | 4161 | }, |
| | 4162 | .call_frame = .{ .alignment = .@"16" }, |
| 4123 | .extra_temps = .{ | 4163 | .extra_temps = .{ |
| 4124 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4164 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } }, |
| 4125 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, | 4165 | .unused, |
| 4126 | .unused, | 4166 | .unused, |
| 4127 | .unused, | 4167 | .unused, |
| 4128 | .unused, | 4168 | .unused, |
| ... | @@ -4131,30 +4171,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4131,30 +4171,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4131 | .unused, | 4171 | .unused, |
| 4132 | .unused, | 4172 | .unused, |
| 4133 | }, | 4173 | }, |
| 4134 | .dst_temps = .{.mem}, | 4174 | .dst_temps = .{.{ .ref = .src0 }}, |
| 4135 | .clobbers = .{ .eflags = true }, | 4175 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4136 | .each = .{ .once = &.{ | 4176 | .each = .{ .once = &.{ |
| 4137 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4177 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 4138 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | | |
| 4139 | .{ ._, .p_w, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | | |
| 4140 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 4141 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 4142 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 4143 | } }, | 4178 | } }, |
| 4144 | }, .{ | 4179 | }, .{ |
| 4145 | .required_features = .{ .sse2, null, null, null }, | 4180 | .required_features = .{ .avx, null, null, null }, |
| 4146 | .src_constraints = .{ | 4181 | .src_constraints = .{ |
| 4147 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 4182 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 4148 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 4183 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 4184 | .any, |
| 4149 | }, | 4185 | }, |
| 4150 | .patterns = &.{ | 4186 | .patterns = &.{ |
| 4151 | .{ .src = .{ .to_mem, .to_mem } }, | 4187 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4152 | }, | 4188 | }, |
| | 4189 | .call_frame = .{ .alignment = .@"16" }, |
| 4153 | .extra_temps = .{ | 4190 | .extra_temps = .{ |
| 4154 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4191 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4155 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, | 4192 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 4156 | .unused, | 4193 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 4157 | .unused, | 4194 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } }, |
| 4158 | .unused, | 4195 | .unused, |
| 4159 | .unused, | 4196 | .unused, |
| 4160 | .unused, | 4197 | .unused, |
| ... | @@ -4162,30 +4199,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4162,30 +4199,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4162 | .unused, | 4199 | .unused, |
| 4163 | }, | 4200 | }, |
| 4164 | .dst_temps = .{.mem}, | 4201 | .dst_temps = .{.mem}, |
| 4165 | .clobbers = .{ .eflags = true }, | 4202 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4166 | .each = .{ .once = &.{ | 4203 | .each = .{ .once = &.{ |
| 4167 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4204 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4168 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 4205 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4169 | .{ ._, .p_w, .subus, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 4206 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4170 | .{ ._, .p_w, .add, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 4207 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 4171 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 4208 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 4172 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 4209 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 4173 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4210 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4174 | } }, | 4211 | } }, |
| 4175 | }, .{ | 4212 | }, .{ |
| 4176 | .required_features = .{ .cmov, null, null, null }, | 4213 | .required_features = .{ .sse2, null, null, null }, |
| 4177 | .src_constraints = .{ | 4214 | .src_constraints = .{ |
| 4178 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, | 4215 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 4179 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, | 4216 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 4217 | .any, |
| 4180 | }, | 4218 | }, |
| 4181 | .patterns = &.{ | 4219 | .patterns = &.{ |
| 4182 | .{ .src = .{ .to_mem, .to_mem } }, | 4220 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4183 | }, | 4221 | }, |
| | 4222 | .call_frame = .{ .alignment = .@"16" }, |
| 4184 | .extra_temps = .{ | 4223 | .extra_temps = .{ |
| 4185 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4224 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4186 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, | 4225 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 4187 | .unused, | 4226 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 4188 | .unused, | 4227 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } }, |
| 4189 | .unused, | 4228 | .unused, |
| 4190 | .unused, | 4229 | .unused, |
| 4191 | .unused, | 4230 | .unused, |
| ... | @@ -4193,29 +4232,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4193,29 +4232,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4193 | .unused, | 4232 | .unused, |
| 4194 | }, | 4233 | }, |
| 4195 | .dst_temps = .{.mem}, | 4234 | .dst_temps = .{.mem}, |
| 4196 | .clobbers = .{ .eflags = true }, | 4235 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4197 | .each = .{ .once = &.{ | 4236 | .each = .{ .once = &.{ |
| 4198 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4237 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4199 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 4238 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4200 | .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, | 4239 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4201 | .{ ._, ._b, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, | 4240 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 4202 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, | 4241 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 4203 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 4242 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 4204 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4243 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4205 | } }, | 4244 | } }, |
| 4206 | }, .{ | 4245 | }, .{ |
| | 4246 | .required_features = .{ .sse, null, null, null }, |
| 4207 | .src_constraints = .{ | 4247 | .src_constraints = .{ |
| 4208 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, | 4248 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 4209 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, | 4249 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 4250 | .any, |
| 4210 | }, | 4251 | }, |
| 4211 | .patterns = &.{ | 4252 | .patterns = &.{ |
| 4212 | .{ .src = .{ .to_mem, .to_mem } }, | 4253 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4213 | }, | 4254 | }, |
| | 4255 | .call_frame = .{ .alignment = .@"16" }, |
| 4214 | .extra_temps = .{ | 4256 | .extra_temps = .{ |
| 4215 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4257 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4216 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, | 4258 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 4217 | .unused, | 4259 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 4218 | .unused, | 4260 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } }, |
| 4219 | .unused, | 4261 | .unused, |
| 4220 | .unused, | 4262 | .unused, |
| 4221 | .unused, | 4263 | .unused, |
| ... | @@ -4223,94 +4265,163 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4223,94 +4265,163 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4223 | .unused, | 4265 | .unused, |
| 4224 | }, | 4266 | }, |
| 4225 | .dst_temps = .{.mem}, | 4267 | .dst_temps = .{.mem}, |
| 4226 | .clobbers = .{ .eflags = true }, | 4268 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4227 | .each = .{ .once = &.{ | 4269 | .each = .{ .once = &.{ |
| 4228 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4270 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4229 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 4271 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4230 | .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, | 4272 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4231 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, | 4273 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 4232 | .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, | 4274 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 4233 | .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, | 4275 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 4234 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 4235 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4276 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4236 | } }, | 4277 | } }, |
| 4237 | }, .{ | 4278 | } }) catch |err| switch (err) { |
| 4238 | .required_features = .{ .avx, null, null, null }, | 4279 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 4280 | @tagName(air_tag), |
| | 4281 | cg.typeOf(bin_op.lhs).fmt(pt), |
| | 4282 | ops[0].tracking(cg), |
| | 4283 | ops[1].tracking(cg), |
| | 4284 | }), |
| | 4285 | else => |e| return e, |
| | 4286 | }; |
| | 4287 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 4288 | }, |
| | 4289 | .mul, .mul_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mul) else fallback: { |
| | 4290 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| | 4291 | if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .mul); |
| | 4292 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 4293 | var res: [1]Temp = undefined; |
| | 4294 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ |
| | 4295 | .required_features = .{ .f16c, null, null, null }, |
| 4239 | .src_constraints = .{ | 4296 | .src_constraints = .{ |
| 4240 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 4297 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 4241 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 4298 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 4299 | .any, |
| 4242 | }, | 4300 | }, |
| 4243 | .patterns = &.{ | 4301 | .patterns = &.{ |
| 4244 | .{ .src = .{ .to_sse, .mem } }, | 4302 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 4245 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | | |
| 4246 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 4247 | }, | 4303 | }, |
| 4248 | .dst_temps = .{.{ .rc = .sse }}, | 4304 | .extra_temps = .{ |
| | 4305 | .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| | 4306 | .unused, |
| | 4307 | .unused, |
| | 4308 | .unused, |
| | 4309 | .unused, |
| | 4310 | .unused, |
| | 4311 | .unused, |
| | 4312 | .unused, |
| | 4313 | .unused, |
| | 4314 | }, |
| | 4315 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 4249 | .each = .{ .once = &.{ | 4316 | .each = .{ .once = &.{ |
| 4250 | .{ ._, .vp_d, .maxs, .dst0x, .src0x, .src1x, ._ }, | 4317 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 4318 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| | 4319 | .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp0d, ._ }, |
| | 4320 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 4251 | } }, | 4321 | } }, |
| 4252 | }, .{ | 4322 | }, .{ |
| 4253 | .required_features = .{ .sse4_1, null, null, null }, | 4323 | .required_features = .{ .sse, null, null, null }, |
| 4254 | .src_constraints = .{ | 4324 | .src_constraints = .{ |
| 4255 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 4325 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 4256 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 4326 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 4327 | .any, |
| 4257 | }, | 4328 | }, |
| 4258 | .patterns = &.{ | 4329 | .patterns = &.{ |
| 4259 | .{ .src = .{ .to_mut_sse, .mem } }, | 4330 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 4260 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 4331 | }, |
| 4261 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 4332 | .call_frame = .{ .alignment = .@"16" }, |
| | 4333 | .extra_temps = .{ |
| | 4334 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } }, |
| | 4335 | .unused, |
| | 4336 | .unused, |
| | 4337 | .unused, |
| | 4338 | .unused, |
| | 4339 | .unused, |
| | 4340 | .unused, |
| | 4341 | .unused, |
| | 4342 | .unused, |
| 4262 | }, | 4343 | }, |
| 4263 | .dst_temps = .{.{ .ref = .src0 }}, | 4344 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 4345 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4264 | .each = .{ .once = &.{ | 4346 | .each = .{ .once = &.{ |
| 4265 | .{ ._, .p_d, .maxs, .dst0x, .src1x, ._, ._ }, | 4347 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 4266 | } }, | 4348 | } }, |
| 4267 | }, .{ | 4349 | }, .{ |
| 4268 | .required_features = .{ .sse2, null, null, null }, | 4350 | .required_features = .{ .f16c, null, null, null }, |
| 4269 | .src_constraints = .{ | 4351 | .src_constraints = .{ |
| 4270 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 4352 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| 4271 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 4353 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 4354 | .any, |
| 4272 | }, | 4355 | }, |
| 4273 | .patterns = &.{ | 4356 | .patterns = &.{ |
| 4274 | .{ .src = .{ .to_mut_sse, .mem } }, | 4357 | .{ .src = .{ .mem, .mem, .none } }, |
| 4275 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 4358 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 4276 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 4359 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 4360 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 4277 | }, | 4361 | }, |
| 4278 | .dst_temps = .{.{ .rc = .sse }}, | 4362 | .extra_temps = .{ |
| | 4363 | .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| | 4364 | .unused, |
| | 4365 | .unused, |
| | 4366 | .unused, |
| | 4367 | .unused, |
| | 4368 | .unused, |
| | 4369 | .unused, |
| | 4370 | .unused, |
| | 4371 | .unused, |
| | 4372 | }, |
| | 4373 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 4279 | .each = .{ .once = &.{ | 4374 | .each = .{ .once = &.{ |
| 4280 | .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ }, | 4375 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 4281 | .{ ._, .p_d, .cmpgt, .dst0x, .src1x, ._, ._ }, | 4376 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| 4282 | .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ }, | 4377 | .{ ._, .v_ps, .mul, .dst0x, .dst0x, .tmp0x, ._ }, |
| 4283 | .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ }, | 4378 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 4284 | .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ }, | | |
| 4285 | } }, | 4379 | } }, |
| 4286 | }, .{ | 4380 | }, .{ |
| 4287 | .required_features = .{ .avx2, null, null, null }, | 4381 | .required_features = .{ .f16c, null, null, null }, |
| 4288 | .src_constraints = .{ | 4382 | .src_constraints = .{ |
| 4289 | .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, | 4383 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| 4290 | .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, | 4384 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 4385 | .any, |
| 4291 | }, | 4386 | }, |
| 4292 | .patterns = &.{ | 4387 | .patterns = &.{ |
| 4293 | .{ .src = .{ .to_sse, .mem } }, | 4388 | .{ .src = .{ .mem, .mem, .none } }, |
| 4294 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 4389 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 4295 | .{ .src = .{ .to_sse, .to_sse } }, | 4390 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 4391 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 4296 | }, | 4392 | }, |
| 4297 | .dst_temps = .{.{ .rc = .sse }}, | 4393 | .extra_temps = .{ |
| | 4394 | .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| | 4395 | .unused, |
| | 4396 | .unused, |
| | 4397 | .unused, |
| | 4398 | .unused, |
| | 4399 | .unused, |
| | 4400 | .unused, |
| | 4401 | .unused, |
| | 4402 | .unused, |
| | 4403 | }, |
| | 4404 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 4298 | .each = .{ .once = &.{ | 4405 | .each = .{ .once = &.{ |
| 4299 | .{ ._, .vp_d, .maxs, .dst0y, .src0y, .src1y, ._ }, | 4406 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| | 4407 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, |
| | 4408 | .{ ._, .v_ps, .mul, .dst0y, .dst0y, .tmp0y, ._ }, |
| | 4409 | .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, |
| 4300 | } }, | 4410 | } }, |
| 4301 | }, .{ | 4411 | }, .{ |
| 4302 | .required_features = .{ .avx2, null, null, null }, | 4412 | .required_features = .{ .f16c, null, null, null }, |
| 4303 | .src_constraints = .{ | 4413 | .src_constraints = .{ |
| 4304 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, | 4414 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| 4305 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, | 4415 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 4416 | .any, |
| 4306 | }, | 4417 | }, |
| 4307 | .patterns = &.{ | 4418 | .patterns = &.{ |
| 4308 | .{ .src = .{ .to_mem, .to_mem } }, | 4419 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4309 | }, | 4420 | }, |
| 4310 | .extra_temps = .{ | 4421 | .extra_temps = .{ |
| 4311 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4422 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4312 | .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, | 4423 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 4313 | .unused, | 4424 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 4314 | .unused, | 4425 | .unused, |
| 4315 | .unused, | 4426 | .unused, |
| 4316 | .unused, | 4427 | .unused, |
| ... | @@ -4321,27 +4432,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4321,27 +4432,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4321 | .dst_temps = .{.mem}, | 4432 | .dst_temps = .{.mem}, |
| 4322 | .clobbers = .{ .eflags = true }, | 4433 | .clobbers = .{ .eflags = true }, |
| 4323 | .each = .{ .once = &.{ | 4434 | .each = .{ .once = &.{ |
| 4324 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4435 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4325 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | 4436 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4326 | .{ ._, .vp_d, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ }, | 4437 | .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4327 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | 4438 | .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .tmp2y, ._ }, |
| 4328 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 4439 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, |
| | 4440 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 4329 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4441 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4330 | } }, | 4442 | } }, |
| 4331 | }, .{ | 4443 | }, .{ |
| 4332 | .required_features = .{ .avx, null, null, null }, | 4444 | .required_features = .{ .avx, null, null, null }, |
| 4333 | .src_constraints = .{ | 4445 | .src_constraints = .{ |
| 4334 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 4446 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 4335 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 4447 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 4448 | .any, |
| 4336 | }, | 4449 | }, |
| 4337 | .patterns = &.{ | 4450 | .patterns = &.{ |
| 4338 | .{ .src = .{ .to_mem, .to_mem } }, | 4451 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4339 | }, | 4452 | }, |
| | 4453 | .call_frame = .{ .alignment = .@"16" }, |
| 4340 | .extra_temps = .{ | 4454 | .extra_temps = .{ |
| 4341 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4455 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4342 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, | 4456 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 4343 | .unused, | 4457 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 4344 | .unused, | 4458 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } }, |
| 4345 | .unused, | 4459 | .unused, |
| 4346 | .unused, | 4460 | .unused, |
| 4347 | .unused, | 4461 | .unused, |
| ... | @@ -4349,29 +4463,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4349,29 +4463,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4349 | .unused, | 4463 | .unused, |
| 4350 | }, | 4464 | }, |
| 4351 | .dst_temps = .{.mem}, | 4465 | .dst_temps = .{.mem}, |
| 4352 | .clobbers = .{ .eflags = true }, | 4466 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4353 | .each = .{ .once = &.{ | 4467 | .each = .{ .once = &.{ |
| 4354 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4468 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4355 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 4469 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| 4356 | .{ ._, .vp_d, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ }, | 4470 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| 4357 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 4471 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, |
| 4358 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 4472 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 4473 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 4474 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 4359 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4475 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4360 | } }, | 4476 | } }, |
| 4361 | }, .{ | 4477 | }, .{ |
| 4362 | .required_features = .{ .sse4_1, null, null, null }, | 4478 | .required_features = .{ .sse4_1, null, null, null }, |
| 4363 | .src_constraints = .{ | 4479 | .src_constraints = .{ |
| 4364 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 4480 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 4365 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 4481 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 4482 | .any, |
| 4366 | }, | 4483 | }, |
| 4367 | .patterns = &.{ | 4484 | .patterns = &.{ |
| 4368 | .{ .src = .{ .to_mem, .to_mem } }, | 4485 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4369 | }, | 4486 | }, |
| | 4487 | .call_frame = .{ .alignment = .@"16" }, |
| 4370 | .extra_temps = .{ | 4488 | .extra_temps = .{ |
| 4371 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4489 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4372 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, | 4490 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 4373 | .unused, | 4491 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 4374 | .unused, | 4492 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } }, |
| 4375 | .unused, | 4493 | .unused, |
| 4376 | .unused, | 4494 | .unused, |
| 4377 | .unused, | 4495 | .unused, |
| ... | @@ -4379,61 +4497,186 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4379,61 +4497,186 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4379 | .unused, | 4497 | .unused, |
| 4380 | }, | 4498 | }, |
| 4381 | .dst_temps = .{.mem}, | 4499 | .dst_temps = .{.mem}, |
| 4382 | .clobbers = .{ .eflags = true }, | 4500 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4383 | .each = .{ .once = &.{ | 4501 | .each = .{ .once = &.{ |
| 4384 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4502 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4385 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 4503 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 4386 | .{ ._, .p_d, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 4504 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 4387 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 4505 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| 4388 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 4506 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 4507 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 4508 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 4509 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 4389 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4510 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4390 | } }, | 4511 | } }, |
| 4391 | }, .{ | 4512 | }, .{ |
| 4392 | .required_features = .{ .sse2, null, null, null }, | 4513 | .required_features = .{ .sse2, null, null, null }, |
| 4393 | .src_constraints = .{ | 4514 | .src_constraints = .{ |
| 4394 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 4515 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 4395 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 4516 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 4517 | .any, |
| 4396 | }, | 4518 | }, |
| 4397 | .patterns = &.{ | 4519 | .patterns = &.{ |
| 4398 | .{ .src = .{ .to_mem, .to_mem } }, | 4520 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4399 | }, | 4521 | }, |
| | 4522 | .call_frame = .{ .alignment = .@"16" }, |
| 4400 | .extra_temps = .{ | 4523 | .extra_temps = .{ |
| 4401 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4524 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4402 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, | 4525 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 4403 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, | 4526 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 4527 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } }, |
| | 4528 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 4529 | .unused, |
| 4404 | .unused, | 4530 | .unused, |
| 4405 | .unused, | 4531 | .unused, |
| 4406 | .unused, | 4532 | .unused, |
| | 4533 | }, |
| | 4534 | .dst_temps = .{.mem}, |
| | 4535 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 4536 | .each = .{ .once = &.{ |
| | 4537 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 4538 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 4539 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 4540 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 4541 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 4542 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 4543 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, |
| | 4544 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 4545 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 4546 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 4547 | } }, |
| | 4548 | }, .{ |
| | 4549 | .required_features = .{ .sse, null, null, null }, |
| | 4550 | .src_constraints = .{ |
| | 4551 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 4552 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 4553 | .any, |
| | 4554 | }, |
| | 4555 | .patterns = &.{ |
| | 4556 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 4557 | }, |
| | 4558 | .call_frame = .{ .alignment = .@"16" }, |
| | 4559 | .extra_temps = .{ |
| | 4560 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 4561 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 4562 | .{ .type = .f32, .kind = .mem }, |
| | 4563 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 4564 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 4565 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } }, |
| 4407 | .unused, | 4566 | .unused, |
| 4408 | .unused, | 4567 | .unused, |
| 4409 | .unused, | 4568 | .unused, |
| 4410 | }, | 4569 | }, |
| 4411 | .dst_temps = .{.mem}, | 4570 | .dst_temps = .{.mem}, |
| 4412 | .clobbers = .{ .eflags = true }, | 4571 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4413 | .each = .{ .once = &.{ | 4572 | .each = .{ .once = &.{ |
| 4414 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4573 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4415 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 4574 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4416 | .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, | 4575 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| 4417 | .{ ._, .p_d, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 4576 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| 4418 | .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ }, | 4577 | .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4419 | .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 4578 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| 4420 | .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ }, | 4579 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| 4421 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 4580 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| 4422 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 4581 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| | 4582 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 4583 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 4584 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 4423 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4585 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4424 | } }, | 4586 | } }, |
| 4425 | }, .{ | 4587 | }, .{ |
| 4426 | .required_features = .{ .cmov, null, null, null }, | 4588 | .required_features = .{ .avx, null, null, null }, |
| 4427 | .src_constraints = .{ | 4589 | .src_constraints = .{ |
| 4428 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, | 4590 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 4429 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, | 4591 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 4592 | .any, |
| | 4593 | }, |
| | 4594 | .patterns = &.{ |
| | 4595 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 4596 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 4597 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 4598 | }, |
| | 4599 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 4600 | .each = .{ .once = &.{ |
| | 4601 | .{ ._, .v_ss, .mul, .dst0x, .src0x, .src1d, ._ }, |
| | 4602 | } }, |
| | 4603 | }, .{ |
| | 4604 | .required_features = .{ .sse, null, null, null }, |
| | 4605 | .src_constraints = .{ |
| | 4606 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 4607 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 4608 | .any, |
| | 4609 | }, |
| | 4610 | .patterns = &.{ |
| | 4611 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 4612 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 4613 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 4614 | }, |
| | 4615 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 4616 | .each = .{ .once = &.{ |
| | 4617 | .{ ._, ._ss, .mul, .dst0x, .src1d, ._, ._ }, |
| | 4618 | } }, |
| | 4619 | }, .{ |
| | 4620 | .required_features = .{ .avx, null, null, null }, |
| | 4621 | .src_constraints = .{ |
| | 4622 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 4623 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 4624 | .any, |
| | 4625 | }, |
| | 4626 | .patterns = &.{ |
| | 4627 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 4628 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 4629 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 4630 | }, |
| | 4631 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 4632 | .each = .{ .once = &.{ |
| | 4633 | .{ ._, .v_ps, .mul, .dst0x, .src0x, .src1x, ._ }, |
| | 4634 | } }, |
| | 4635 | }, .{ |
| | 4636 | .required_features = .{ .sse, null, null, null }, |
| | 4637 | .src_constraints = .{ |
| | 4638 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 4639 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 4640 | .any, |
| | 4641 | }, |
| | 4642 | .patterns = &.{ |
| | 4643 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 4644 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 4645 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 4646 | }, |
| | 4647 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 4648 | .each = .{ .once = &.{ |
| | 4649 | .{ ._, ._ps, .mul, .dst0x, .src1x, ._, ._ }, |
| | 4650 | } }, |
| | 4651 | }, .{ |
| | 4652 | .required_features = .{ .avx, null, null, null }, |
| | 4653 | .src_constraints = .{ |
| | 4654 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 4655 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 4656 | .any, |
| | 4657 | }, |
| | 4658 | .patterns = &.{ |
| | 4659 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 4660 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 4661 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 4662 | }, |
| | 4663 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 4664 | .each = .{ .once = &.{ |
| | 4665 | .{ ._, .v_ps, .mul, .dst0y, .src0y, .src1y, ._ }, |
| | 4666 | } }, |
| | 4667 | }, .{ |
| | 4668 | .required_features = .{ .avx, null, null, null }, |
| | 4669 | .src_constraints = .{ |
| | 4670 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 4671 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 4672 | .any, |
| 4430 | }, | 4673 | }, |
| 4431 | .patterns = &.{ | 4674 | .patterns = &.{ |
| 4432 | .{ .src = .{ .to_mem, .to_mem } }, | 4675 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4433 | }, | 4676 | }, |
| 4434 | .extra_temps = .{ | 4677 | .extra_temps = .{ |
| 4435 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4678 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4436 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, | 4679 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 4437 | .unused, | 4680 | .unused, |
| 4438 | .unused, | 4681 | .unused, |
| 4439 | .unused, | 4682 | .unused, |
| ... | @@ -4445,25 +4688,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4445,25 +4688,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4445 | .dst_temps = .{.mem}, | 4688 | .dst_temps = .{.mem}, |
| 4446 | .clobbers = .{ .eflags = true }, | 4689 | .clobbers = .{ .eflags = true }, |
| 4447 | .each = .{ .once = &.{ | 4690 | .each = .{ .once = &.{ |
| 4448 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4691 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4449 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 4692 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4450 | .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, | 4693 | .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, |
| 4451 | .{ ._, ._l, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, | 4694 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| 4452 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ }, | 4695 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 4453 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 4454 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4696 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4455 | } }, | 4697 | } }, |
| 4456 | }, .{ | 4698 | }, .{ |
| | 4699 | .required_features = .{ .sse, null, null, null }, |
| 4457 | .src_constraints = .{ | 4700 | .src_constraints = .{ |
| 4458 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, | 4701 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| 4459 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, | 4702 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 4703 | .any, |
| 4460 | }, | 4704 | }, |
| 4461 | .patterns = &.{ | 4705 | .patterns = &.{ |
| 4462 | .{ .src = .{ .to_mem, .to_mem } }, | 4706 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4463 | }, | 4707 | }, |
| 4464 | .extra_temps = .{ | 4708 | .extra_temps = .{ |
| 4465 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4709 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4466 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, | 4710 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| 4467 | .unused, | 4711 | .unused, |
| 4468 | .unused, | 4712 | .unused, |
| 4469 | .unused, | 4713 | .unused, |
| ... | @@ -4475,60 +4719,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4475,60 +4719,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4475 | .dst_temps = .{.mem}, | 4719 | .dst_temps = .{.mem}, |
| 4476 | .clobbers = .{ .eflags = true }, | 4720 | .clobbers = .{ .eflags = true }, |
| 4477 | .each = .{ .once = &.{ | 4721 | .each = .{ .once = &.{ |
| 4478 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4722 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4479 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 4723 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4480 | .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, | 4724 | .{ ._, ._ps, .mul, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4481 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, | 4725 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 4482 | .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, | 4726 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 4483 | .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ }, | | |
| 4484 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 4485 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4727 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4486 | } }, | 4728 | } }, |
| 4487 | }, .{ | 4729 | }, .{ |
| 4488 | .required_features = .{ .avx, null, null, null }, | 4730 | .required_features = .{ .avx, null, null, null }, |
| 4489 | .src_constraints = .{ | 4731 | .src_constraints = .{ |
| 4490 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 4732 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 4491 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 4733 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 4734 | .any, |
| 4492 | }, | 4735 | }, |
| 4493 | .patterns = &.{ | 4736 | .patterns = &.{ |
| 4494 | .{ .src = .{ .to_sse, .mem } }, | 4737 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 4495 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 4738 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 4496 | .{ .src = .{ .to_sse, .to_sse } }, | 4739 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 4497 | }, | 4740 | }, |
| 4498 | .dst_temps = .{.{ .rc = .sse }}, | 4741 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 4499 | .each = .{ .once = &.{ | 4742 | .each = .{ .once = &.{ |
| 4500 | .{ ._, .vp_d, .maxu, .dst0x, .src0x, .src1x, ._ }, | 4743 | .{ ._, .v_sd, .mul, .dst0x, .src0x, .src1q, ._ }, |
| 4501 | } }, | 4744 | } }, |
| 4502 | }, .{ | 4745 | }, .{ |
| 4503 | .required_features = .{ .sse4_1, null, null, null }, | 4746 | .required_features = .{ .sse2, null, null, null }, |
| 4504 | .src_constraints = .{ | 4747 | .src_constraints = .{ |
| 4505 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 4748 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 4506 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 4749 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 4750 | .any, |
| 4507 | }, | 4751 | }, |
| 4508 | .patterns = &.{ | 4752 | .patterns = &.{ |
| 4509 | .{ .src = .{ .to_mut_sse, .mem } }, | 4753 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 4510 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 4754 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 4511 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 4755 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 4512 | }, | 4756 | }, |
| 4513 | .dst_temps = .{.{ .ref = .src0 }}, | 4757 | .dst_temps = .{.{ .ref = .src0 }}, |
| 4514 | .each = .{ .once = &.{ | 4758 | .each = .{ .once = &.{ |
| 4515 | .{ ._, .p_d, .maxu, .dst0x, .src1x, ._, ._ }, | 4759 | .{ ._, ._sd, .mul, .dst0x, .src1q, ._, ._ }, |
| 4516 | } }, | 4760 | } }, |
| 4517 | }, .{ | 4761 | }, .{ |
| 4518 | .required_features = .{ .sse2, null, null, null }, | 4762 | .required_features = .{ .x87, null, null, null }, |
| 4519 | .src_constraints = .{ | 4763 | .src_constraints = .{ |
| 4520 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 4764 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 4521 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 4765 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 4766 | .any, |
| 4522 | }, | 4767 | }, |
| 4523 | .patterns = &.{ | 4768 | .patterns = &.{ |
| 4524 | .{ .src = .{ .to_mut_sse, .mem } }, | 4769 | .{ .src = .{ .mem, .mem, .none } }, |
| 4525 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | | |
| 4526 | .{ .src = .{ .to_mut_sse, .to_sse } }, | | |
| 4527 | }, | 4770 | }, |
| 4528 | .extra_temps = .{ | 4771 | .extra_temps = .{ |
| 4529 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 4772 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 4530 | .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 4773 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 4531 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | 4774 | .unused, |
| 4532 | .unused, | 4775 | .unused, |
| 4533 | .unused, | 4776 | .unused, |
| 4534 | .unused, | 4777 | .unused, |
| ... | @@ -4536,45 +4779,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4536,45 +4779,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4536 | .unused, | 4779 | .unused, |
| 4537 | .unused, | 4780 | .unused, |
| 4538 | }, | 4781 | }, |
| 4539 | .dst_temps = .{.{ .rc = .sse }}, | 4782 | .dst_temps = .{.mem}, |
| 4540 | .each = .{ .once = &.{ | 4783 | .each = .{ .once = &.{ |
| 4541 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 4784 | .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, |
| 4542 | .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, | 4785 | .{ ._, .f_, .ld, .src1q, ._, ._, ._ }, |
| 4543 | .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, | 4786 | .{ ._, .f_p, .mul, ._, ._, ._, ._ }, |
| 4544 | .{ ._, .p_, .xor, .dst0x, .src0x, ._, ._ }, | 4787 | .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, |
| 4545 | .{ ._, .p_, .xor, .tmp2x, .src1x, ._, ._ }, | | |
| 4546 | .{ ._, .p_d, .cmpgt, .dst0x, .tmp2x, ._, ._ }, | | |
| 4547 | .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ }, | | |
| 4548 | .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ }, | | |
| 4549 | .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ }, | | |
| 4550 | } }, | 4788 | } }, |
| 4551 | }, .{ | 4789 | }, .{ |
| 4552 | .required_features = .{ .avx2, null, null, null }, | 4790 | .required_features = .{ .avx, null, null, null }, |
| 4553 | .src_constraints = .{ | 4791 | .src_constraints = .{ |
| 4554 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, | 4792 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 4555 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, | 4793 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 4794 | .any, |
| 4556 | }, | 4795 | }, |
| 4557 | .patterns = &.{ | 4796 | .patterns = &.{ |
| 4558 | .{ .src = .{ .to_sse, .mem } }, | 4797 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 4559 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 4798 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 4560 | .{ .src = .{ .to_sse, .to_sse } }, | 4799 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 4561 | }, | 4800 | }, |
| 4562 | .dst_temps = .{.{ .rc = .sse }}, | 4801 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 4563 | .each = .{ .once = &.{ | 4802 | .each = .{ .once = &.{ |
| 4564 | .{ ._, .vp_d, .maxu, .dst0y, .src0y, .src1y, ._ }, | 4803 | .{ ._, .v_pd, .mul, .dst0x, .src0x, .src1x, ._ }, |
| 4565 | } }, | 4804 | } }, |
| 4566 | }, .{ | 4805 | }, .{ |
| 4567 | .required_features = .{ .avx2, null, null, null }, | 4806 | .required_features = .{ .sse2, null, null, null }, |
| 4568 | .src_constraints = .{ | 4807 | .src_constraints = .{ |
| 4569 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, | 4808 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 4570 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, | 4809 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 4810 | .any, |
| | 4811 | }, |
| | 4812 | .patterns = &.{ |
| | 4813 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 4814 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 4815 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 4816 | }, |
| | 4817 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 4818 | .each = .{ .once = &.{ |
| | 4819 | .{ ._, ._pd, .mul, .dst0x, .src1x, ._, ._ }, |
| | 4820 | } }, |
| | 4821 | }, .{ |
| | 4822 | .required_features = .{ .avx, null, null, null }, |
| | 4823 | .src_constraints = .{ |
| | 4824 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 4825 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 4826 | .any, |
| | 4827 | }, |
| | 4828 | .patterns = &.{ |
| | 4829 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 4830 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 4831 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 4832 | }, |
| | 4833 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 4834 | .each = .{ .once = &.{ |
| | 4835 | .{ ._, .v_pd, .mul, .dst0y, .src0y, .src1y, ._ }, |
| | 4836 | } }, |
| | 4837 | }, .{ |
| | 4838 | .required_features = .{ .avx, null, null, null }, |
| | 4839 | .src_constraints = .{ |
| | 4840 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 4841 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 4842 | .any, |
| 4571 | }, | 4843 | }, |
| 4572 | .patterns = &.{ | 4844 | .patterns = &.{ |
| 4573 | .{ .src = .{ .to_mem, .to_mem } }, | 4845 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4574 | }, | 4846 | }, |
| 4575 | .extra_temps = .{ | 4847 | .extra_temps = .{ |
| 4576 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4848 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4577 | .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, | 4849 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| 4578 | .unused, | 4850 | .unused, |
| 4579 | .unused, | 4851 | .unused, |
| 4580 | .unused, | 4852 | .unused, |
| ... | @@ -4586,25 +4858,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4586,25 +4858,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4586 | .dst_temps = .{.mem}, | 4858 | .dst_temps = .{.mem}, |
| 4587 | .clobbers = .{ .eflags = true }, | 4859 | .clobbers = .{ .eflags = true }, |
| 4588 | .each = .{ .once = &.{ | 4860 | .each = .{ .once = &.{ |
| 4589 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4861 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4590 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | 4862 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4591 | .{ ._, .vp_d, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ }, | 4863 | .{ ._, .v_pd, .mul, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, |
| 4592 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | 4864 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| 4593 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 4865 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 4594 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4866 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4595 | } }, | 4867 | } }, |
| 4596 | }, .{ | 4868 | }, .{ |
| 4597 | .required_features = .{ .avx, null, null, null }, | 4869 | .required_features = .{ .sse2, null, null, null }, |
| 4598 | .src_constraints = .{ | 4870 | .src_constraints = .{ |
| 4599 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 4871 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| 4600 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 4872 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 4873 | .any, |
| 4601 | }, | 4874 | }, |
| 4602 | .patterns = &.{ | 4875 | .patterns = &.{ |
| 4603 | .{ .src = .{ .to_mem, .to_mem } }, | 4876 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4604 | }, | 4877 | }, |
| 4605 | .extra_temps = .{ | 4878 | .extra_temps = .{ |
| 4606 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4879 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4607 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | 4880 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| 4608 | .unused, | 4881 | .unused, |
| 4609 | .unused, | 4882 | .unused, |
| 4610 | .unused, | 4883 | .unused, |
| ... | @@ -4616,26 +4889,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4616,26 +4889,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4616 | .dst_temps = .{.mem}, | 4889 | .dst_temps = .{.mem}, |
| 4617 | .clobbers = .{ .eflags = true }, | 4890 | .clobbers = .{ .eflags = true }, |
| 4618 | .each = .{ .once = &.{ | 4891 | .each = .{ .once = &.{ |
| 4619 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4892 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4620 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 4893 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4621 | .{ ._, .vp_d, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ }, | 4894 | .{ ._, ._pd, .mul, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4622 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 4895 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 4623 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 4896 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 4624 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4897 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4625 | } }, | 4898 | } }, |
| 4626 | }, .{ | 4899 | }, .{ |
| 4627 | .required_features = .{ .sse4_1, null, null, null }, | 4900 | .required_features = .{ .x87, null, null, null }, |
| 4628 | .src_constraints = .{ | 4901 | .src_constraints = .{ |
| 4629 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 4902 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 4630 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 4903 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 4904 | .any, |
| 4631 | }, | 4905 | }, |
| 4632 | .patterns = &.{ | 4906 | .patterns = &.{ |
| 4633 | .{ .src = .{ .to_mem, .to_mem } }, | 4907 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4634 | }, | 4908 | }, |
| 4635 | .extra_temps = .{ | 4909 | .extra_temps = .{ |
| 4636 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4910 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4637 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | 4911 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 4638 | .unused, | 4912 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 4639 | .unused, | 4913 | .unused, |
| 4640 | .unused, | 4914 | .unused, |
| 4641 | .unused, | 4915 | .unused, |
| ... | @@ -4644,67 +4918,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4644,67 +4918,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4644 | .unused, | 4918 | .unused, |
| 4645 | }, | 4919 | }, |
| 4646 | .dst_temps = .{.mem}, | 4920 | .dst_temps = .{.mem}, |
| 4647 | .clobbers = .{ .eflags = true }, | | |
| 4648 | .each = .{ .once = &.{ | 4921 | .each = .{ .once = &.{ |
| 4649 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4922 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4650 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 4923 | .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 4651 | .{ ._, .p_d, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 4924 | .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 4652 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 4925 | .{ ._, .f_p, .mul, ._, ._, ._, ._ }, |
| 4653 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 4926 | .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 4927 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 4654 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 4928 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4655 | } }, | 4929 | } }, |
| 4656 | }, .{ | 4930 | }, .{ |
| 4657 | .required_features = .{ .sse2, null, null, null }, | 4931 | .required_features = .{ .x87, null, null, null }, |
| 4658 | .src_constraints = .{ | 4932 | .src_constraints = .{ |
| 4659 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 4933 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 4660 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 4934 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 4935 | .any, |
| 4661 | }, | 4936 | }, |
| 4662 | .patterns = &.{ | 4937 | .patterns = &.{ |
| 4663 | .{ .src = .{ .to_mem, .to_mem } }, | 4938 | .{ .src = .{ .mem, .mem, .none } }, |
| 4664 | }, | 4939 | }, |
| 4665 | .extra_temps = .{ | 4940 | .extra_temps = .{ |
| 4666 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4941 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 4667 | .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 4942 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 4668 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | | |
| 4669 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | | |
| 4670 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | | |
| 4671 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | | |
| 4672 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | | |
| 4673 | .unused, | 4943 | .unused, |
| 4674 | .unused, | 4944 | .unused, |
| 4675 | }, | 4945 | .unused, |
| 4676 | .dst_temps = .{.mem}, | 4946 | .unused, |
| 4677 | .clobbers = .{ .eflags = true }, | 4947 | .unused, |
| | 4948 | .unused, |
| | 4949 | .unused, |
| | 4950 | }, |
| | 4951 | .dst_temps = .{.{ .rc = .x87 }}, |
| 4678 | .each = .{ .once = &.{ | 4952 | .each = .{ .once = &.{ |
| 4679 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 4953 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 4680 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, | 4954 | .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, |
| 4681 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4955 | .{ ._, .f_p, .mul, ._, ._, ._, ._ }, |
| 4682 | .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 4956 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 4683 | .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | | |
| 4684 | .{ ._, ._dqa, .mov, .tmp5x, .tmp3x, ._, ._ }, | | |
| 4685 | .{ ._, ._dqa, .mov, .tmp6x, .tmp4x, ._, ._ }, | | |
| 4686 | .{ ._, .p_, .xor, .tmp5x, .tmp2x, ._, ._ }, | | |
| 4687 | .{ ._, .p_, .xor, .tmp6x, .tmp2x, ._, ._ }, | | |
| 4688 | .{ ._, .p_d, .cmpgt, .tmp5x, .tmp6x, ._, ._ }, | | |
| 4689 | .{ ._, .p_, .@"and", .tmp3x, .tmp5x, ._, ._ }, | | |
| 4690 | .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ }, | | |
| 4691 | .{ ._, .p_, .@"or", .tmp3x, .tmp5x, ._, ._ }, | | |
| 4692 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | | |
| 4693 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 4694 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 4695 | } }, | 4957 | } }, |
| 4696 | }, .{ | 4958 | }, .{ |
| 4697 | .required_features = .{ .cmov, null, null, null }, | 4959 | .required_features = .{ .x87, null, null, null }, |
| 4698 | .src_constraints = .{ | 4960 | .src_constraints = .{ |
| 4699 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, | 4961 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 4700 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, | 4962 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 4963 | .any, |
| 4701 | }, | 4964 | }, |
| 4702 | .patterns = &.{ | 4965 | .patterns = &.{ |
| 4703 | .{ .src = .{ .to_mem, .to_mem } }, | 4966 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 4967 | .{ .src = .{ .mem, .to_x87, .none } }, |
| | 4968 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| 4704 | }, | 4969 | }, |
| 4705 | .extra_temps = .{ | 4970 | .extra_temps = .{ |
| 4706 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4971 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 4707 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 4972 | .unused, |
| 4708 | .unused, | 4973 | .unused, |
| 4709 | .unused, | 4974 | .unused, |
| 4710 | .unused, | 4975 | .unused, |
| ... | @@ -4713,29 +4978,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4713,29 +4978,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4713 | .unused, | 4978 | .unused, |
| 4714 | .unused, | 4979 | .unused, |
| 4715 | }, | 4980 | }, |
| 4716 | .dst_temps = .{.mem}, | 4981 | .dst_temps = .{.{ .rc = .x87 }}, |
| 4717 | .clobbers = .{ .eflags = true }, | | |
| 4718 | .each = .{ .once = &.{ | 4982 | .each = .{ .once = &.{ |
| 4719 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 4983 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 4720 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 4984 | .{ ._, .f_, .mul, .tmp0t, .src1t, ._, ._ }, |
| 4721 | .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, | 4985 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 4722 | .{ ._, ._b, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, | | |
| 4723 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ }, | | |
| 4724 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 4725 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 4726 | } }, | 4986 | } }, |
| 4727 | }, .{ | 4987 | }, .{ |
| | 4988 | .required_features = .{ .x87, null, null, null }, |
| 4728 | .src_constraints = .{ | 4989 | .src_constraints = .{ |
| 4729 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, | 4990 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 4730 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, | 4991 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 4992 | .any, |
| 4731 | }, | 4993 | }, |
| 4732 | .patterns = &.{ | 4994 | .patterns = &.{ |
| 4733 | .{ .src = .{ .to_mem, .to_mem } }, | 4995 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4734 | }, | 4996 | }, |
| 4735 | .extra_temps = .{ | 4997 | .extra_temps = .{ |
| 4736 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 4998 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4737 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 4999 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 4738 | .unused, | 5000 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 4739 | .unused, | 5001 | .unused, |
| 4740 | .unused, | 5002 | .unused, |
| 4741 | .unused, | 5003 | .unused, |
| ... | @@ -4744,44 +5006,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4744,44 +5006,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4744 | .unused, | 5006 | .unused, |
| 4745 | }, | 5007 | }, |
| 4746 | .dst_temps = .{.mem}, | 5008 | .dst_temps = .{.mem}, |
| 4747 | .clobbers = .{ .eflags = true }, | | |
| 4748 | .each = .{ .once = &.{ | 5009 | .each = .{ .once = &.{ |
| 4749 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5010 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4750 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 5011 | .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 4751 | .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, | 5012 | .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 4752 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, | 5013 | .{ ._, .f_p, .mul, ._, ._, ._, ._ }, |
| 4753 | .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, | 5014 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 4754 | .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ }, | 5015 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 4755 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 4756 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5016 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4757 | } }, | 5017 | } }, |
| 4758 | }, .{ | 5018 | }, .{ |
| 4759 | .required_features = .{ .avx, null, null, null }, | 5019 | .required_features = .{ .sse, null, null, null }, |
| 4760 | .src_constraints = .{ | | |
| 4761 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | | |
| 4762 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | | |
| 4763 | }, | | |
| 4764 | .patterns = &.{ | | |
| 4765 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 4766 | }, | | |
| 4767 | .dst_temps = .{.{ .rc = .sse }}, | | |
| 4768 | .each = .{ .once = &.{ | | |
| 4769 | .{ ._, .vp_q, .cmpgt, .dst0x, .src1x, .src0x, ._ }, | | |
| 4770 | .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x }, | | |
| 4771 | } }, | | |
| 4772 | }, .{ | | |
| 4773 | .required_features = .{ .sse4_2, null, null, null }, | | |
| 4774 | .src_constraints = .{ | 5020 | .src_constraints = .{ |
| 4775 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 5021 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| 4776 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 5022 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 5023 | .any, |
| 4777 | }, | 5024 | }, |
| 4778 | .patterns = &.{ | 5025 | .patterns = &.{ |
| 4779 | .{ .src = .{ .to_mut_sse, .mem } }, | 5026 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 4780 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | | |
| 4781 | .{ .src = .{ .to_mut_sse, .to_sse } }, | | |
| 4782 | }, | 5027 | }, |
| | 5028 | .call_frame = .{ .alignment = .@"16" }, |
| 4783 | .extra_temps = .{ | 5029 | .extra_temps = .{ |
| 4784 | .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, | 5030 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } }, |
| 4785 | .unused, | 5031 | .unused, |
| 4786 | .unused, | 5032 | .unused, |
| 4787 | .unused, | 5033 | .unused, |
| ... | @@ -4792,39 +5038,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4792,39 +5038,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4792 | .unused, | 5038 | .unused, |
| 4793 | }, | 5039 | }, |
| 4794 | .dst_temps = .{.{ .ref = .src0 }}, | 5040 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 5041 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4795 | .each = .{ .once = &.{ | 5042 | .each = .{ .once = &.{ |
| 4796 | .{ ._, ._dqa, .mov, .tmp0x, .src1x, ._, ._ }, | 5043 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 4797 | .{ ._, .p_q, .cmpgt, .tmp0x, .src0x, ._, ._ }, | | |
| 4798 | .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp0x, ._ }, | | |
| 4799 | } }, | | |
| 4800 | }, .{ | | |
| 4801 | .required_features = .{ .avx2, null, null, null }, | | |
| 4802 | .src_constraints = .{ | | |
| 4803 | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, | | |
| 4804 | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, | | |
| 4805 | }, | | |
| 4806 | .patterns = &.{ | | |
| 4807 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 4808 | }, | | |
| 4809 | .dst_temps = .{.{ .rc = .sse }}, | | |
| 4810 | .each = .{ .once = &.{ | | |
| 4811 | .{ ._, .vp_q, .cmpgt, .dst0y, .src1y, .src0y, ._ }, | | |
| 4812 | .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y }, | | |
| 4813 | } }, | 5044 | } }, |
| 4814 | }, .{ | 5045 | }, .{ |
| 4815 | .required_features = .{ .avx2, null, null, null }, | 5046 | .required_features = .{ .avx, null, null, null }, |
| 4816 | .src_constraints = .{ | 5047 | .src_constraints = .{ |
| 4817 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 5048 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 4818 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 5049 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 5050 | .any, |
| 4819 | }, | 5051 | }, |
| 4820 | .patterns = &.{ | 5052 | .patterns = &.{ |
| 4821 | .{ .src = .{ .to_mem, .to_mem } }, | 5053 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4822 | }, | 5054 | }, |
| | 5055 | .call_frame = .{ .alignment = .@"16" }, |
| 4823 | .extra_temps = .{ | 5056 | .extra_temps = .{ |
| 4824 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5057 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4825 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, | 5058 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 4826 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, | 5059 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 4827 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, | 5060 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } }, |
| 4828 | .unused, | 5061 | .unused, |
| 4829 | .unused, | 5062 | .unused, |
| 4830 | .unused, | 5063 | .unused, |
| ... | @@ -4832,31 +5065,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4832,31 +5065,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4832 | .unused, | 5065 | .unused, |
| 4833 | }, | 5066 | }, |
| 4834 | .dst_temps = .{.mem}, | 5067 | .dst_temps = .{.mem}, |
| 4835 | .clobbers = .{ .eflags = true }, | 5068 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4836 | .each = .{ .once = &.{ | 5069 | .each = .{ .once = &.{ |
| 4837 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5070 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4838 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | 5071 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4839 | .{ ._, .v_dqa, .mov, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, | 5072 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4840 | .{ ._, .vp_q, .cmpgt, .tmp3y, .tmp2y, .tmp1y, ._ }, | 5073 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 4841 | .{ ._, .vp_b, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, | 5074 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 4842 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | 5075 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 4843 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | | |
| 4844 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5076 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4845 | } }, | 5077 | } }, |
| 4846 | }, .{ | 5078 | }, .{ |
| 4847 | .required_features = .{ .avx, null, null, null }, | 5079 | .required_features = .{ .sse2, null, null, null }, |
| 4848 | .src_constraints = .{ | 5080 | .src_constraints = .{ |
| 4849 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 5081 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 4850 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 5082 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 5083 | .any, |
| 4851 | }, | 5084 | }, |
| 4852 | .patterns = &.{ | 5085 | .patterns = &.{ |
| 4853 | .{ .src = .{ .to_mem, .to_mem } }, | 5086 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4854 | }, | 5087 | }, |
| | 5088 | .call_frame = .{ .alignment = .@"16" }, |
| 4855 | .extra_temps = .{ | 5089 | .extra_temps = .{ |
| 4856 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5090 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4857 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, | 5091 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 4858 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, | 5092 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 4859 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, | 5093 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } }, |
| 4860 | .unused, | 5094 | .unused, |
| 4861 | .unused, | 5095 | .unused, |
| 4862 | .unused, | 5096 | .unused, |
| ... | @@ -4864,31 +5098,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4864,31 +5098,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4864 | .unused, | 5098 | .unused, |
| 4865 | }, | 5099 | }, |
| 4866 | .dst_temps = .{.mem}, | 5100 | .dst_temps = .{.mem}, |
| 4867 | .clobbers = .{ .eflags = true }, | 5101 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4868 | .each = .{ .once = &.{ | 5102 | .each = .{ .once = &.{ |
| 4869 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5103 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4870 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 5104 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4871 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 5105 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4872 | .{ ._, .vp_q, .cmpgt, .tmp3x, .tmp2x, .tmp1x, ._ }, | 5106 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 4873 | .{ ._, .vp_b, .blendv, .tmp1x, .tmp1x, .tmp2x, .tmp3x }, | 5107 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 4874 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 4875 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 5108 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 4876 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5109 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4877 | } }, | 5110 | } }, |
| 4878 | }, .{ | 5111 | }, .{ |
| 4879 | .required_features = .{ .sse4_2, null, null, null }, | 5112 | .required_features = .{ .sse, null, null, null }, |
| 4880 | .src_constraints = .{ | 5113 | .src_constraints = .{ |
| 4881 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 5114 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 4882 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 5115 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 5116 | .any, |
| 4883 | }, | 5117 | }, |
| 4884 | .patterns = &.{ | 5118 | .patterns = &.{ |
| 4885 | .{ .src = .{ .to_mem, .to_mem } }, | 5119 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 4886 | }, | 5120 | }, |
| | 5121 | .call_frame = .{ .alignment = .@"16" }, |
| 4887 | .extra_temps = .{ | 5122 | .extra_temps = .{ |
| 4888 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5123 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 4889 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, | 5124 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 4890 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, | 5125 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 4891 | .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, | 5126 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } }, |
| 4892 | .unused, | 5127 | .unused, |
| 4893 | .unused, | 5128 | .unused, |
| 4894 | .unused, | 5129 | .unused, |
| ... | @@ -4896,30 +5131,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4896,30 +5131,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4896 | .unused, | 5131 | .unused, |
| 4897 | }, | 5132 | }, |
| 4898 | .dst_temps = .{.mem}, | 5133 | .dst_temps = .{.mem}, |
| 4899 | .clobbers = .{ .eflags = true }, | 5134 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4900 | .each = .{ .once = &.{ | 5135 | .each = .{ .once = &.{ |
| 4901 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5136 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 4902 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 5137 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4903 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 5138 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 4904 | .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, | 5139 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 4905 | .{ ._, .p_q, .cmpgt, .tmp3x, .tmp1x, ._, ._ }, | 5140 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 4906 | .{ ._, .p_b, .blendv, .tmp1x, .tmp2x, .tmp3x, ._ }, | | |
| 4907 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 4908 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 5141 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 4909 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5142 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 4910 | } }, | 5143 | } }, |
| 4911 | }, .{ | 5144 | } }) catch |err| switch (err) { |
| 4912 | .required_features = .{ .@"64bit", .cmov, null, null }, | 5145 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 5146 | @tagName(air_tag), |
| | 5147 | cg.typeOf(bin_op.lhs).fmt(pt), |
| | 5148 | ops[0].tracking(cg), |
| | 5149 | ops[1].tracking(cg), |
| | 5150 | }), |
| | 5151 | else => |e| return e, |
| | 5152 | }; |
| | 5153 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 5154 | }, |
| | 5155 | .div_float, .div_float_optimized, .div_exact, .div_exact_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) { |
| | 5156 | else => unreachable, |
| | 5157 | .div_float, .div_float_optimized => .div_float, |
| | 5158 | .div_exact, .div_exact_optimized => .div_exact, |
| | 5159 | }) else fallback: { |
| | 5160 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| | 5161 | if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .div_exact); |
| | 5162 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 5163 | var res: [1]Temp = undefined; |
| | 5164 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ |
| | 5165 | .required_features = .{ .f16c, null, null, null }, |
| 4913 | .src_constraints = .{ | 5166 | .src_constraints = .{ |
| 4914 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, | 5167 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 4915 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, | 5168 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 5169 | .any, |
| 4916 | }, | 5170 | }, |
| 4917 | .patterns = &.{ | 5171 | .patterns = &.{ |
| 4918 | .{ .src = .{ .to_mem, .to_mem } }, | 5172 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 4919 | }, | 5173 | }, |
| 4920 | .extra_temps = .{ | 5174 | .extra_temps = .{ |
| 4921 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5175 | .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 4922 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, | 5176 | .unused, |
| 4923 | .unused, | 5177 | .unused, |
| 4924 | .unused, | 5178 | .unused, |
| 4925 | .unused, | 5179 | .unused, |
| ... | @@ -4928,29 +5182,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4928,29 +5182,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4928 | .unused, | 5182 | .unused, |
| 4929 | .unused, | 5183 | .unused, |
| 4930 | }, | 5184 | }, |
| 4931 | .dst_temps = .{.mem}, | 5185 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 4932 | .clobbers = .{ .eflags = true }, | | |
| 4933 | .each = .{ .once = &.{ | 5186 | .each = .{ .once = &.{ |
| 4934 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5187 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 4935 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 5188 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| 4936 | .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 5189 | .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ }, |
| 4937 | .{ ._, ._l, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 5190 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 4938 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, | | |
| 4939 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 4940 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 4941 | } }, | 5191 | } }, |
| 4942 | }, .{ | 5192 | }, .{ |
| 4943 | .required_features = .{ .@"64bit", null, null, null }, | 5193 | .required_features = .{ .sse, null, null, null }, |
| 4944 | .src_constraints = .{ | 5194 | .src_constraints = .{ |
| 4945 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, | 5195 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 4946 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, | 5196 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 5197 | .any, |
| 4947 | }, | 5198 | }, |
| 4948 | .patterns = &.{ | 5199 | .patterns = &.{ |
| 4949 | .{ .src = .{ .to_mem, .to_mem } }, | 5200 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 4950 | }, | 5201 | }, |
| | 5202 | .call_frame = .{ .alignment = .@"16" }, |
| 4951 | .extra_temps = .{ | 5203 | .extra_temps = .{ |
| 4952 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5204 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| 4953 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, | 5205 | .unused, |
| 4954 | .unused, | 5206 | .unused, |
| 4955 | .unused, | 5207 | .unused, |
| 4956 | .unused, | 5208 | .unused, |
| ... | @@ -4959,33 +5211,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4959,33 +5211,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4959 | .unused, | 5211 | .unused, |
| 4960 | .unused, | 5212 | .unused, |
| 4961 | }, | 5213 | }, |
| 4962 | .dst_temps = .{.mem}, | 5214 | .dst_temps = .{.{ .ref = .src0 }}, |
| 4963 | .clobbers = .{ .eflags = true }, | 5215 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 4964 | .each = .{ .once = &.{ | 5216 | .each = .{ .once = &.{ |
| 4965 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5217 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 4966 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | | |
| 4967 | .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | | |
| 4968 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, | | |
| 4969 | .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | | |
| 4970 | .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, | | |
| 4971 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 4972 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 4973 | } }, | 5218 | } }, |
| 4974 | }, .{ | 5219 | }, .{ |
| 4975 | .required_features = .{ .avx, null, null, null }, | 5220 | .required_features = .{ .f16c, null, null, null }, |
| 4976 | .src_constraints = .{ | 5221 | .src_constraints = .{ |
| 4977 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 5222 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| 4978 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 5223 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 5224 | .any, |
| 4979 | }, | 5225 | }, |
| 4980 | .patterns = &.{ | 5226 | .patterns = &.{ |
| 4981 | .{ .src = .{ .to_sse, .mem } }, | 5227 | .{ .src = .{ .mem, .mem, .none } }, |
| 4982 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 5228 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 4983 | .{ .src = .{ .to_sse, .to_sse } }, | 5229 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 5230 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 4984 | }, | 5231 | }, |
| 4985 | .extra_temps = .{ | 5232 | .extra_temps = .{ |
| 4986 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 5233 | .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 4987 | .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } }, | 5234 | .unused, |
| 4988 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 5235 | .unused, |
| 4989 | .unused, | 5236 | .unused, |
| 4990 | .unused, | 5237 | .unused, |
| 4991 | .unused, | 5238 | .unused, |
| ... | @@ -4993,62 +5240,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4993,62 +5240,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4993 | .unused, | 5240 | .unused, |
| 4994 | .unused, | 5241 | .unused, |
| 4995 | }, | 5242 | }, |
| 4996 | .dst_temps = .{.{ .rc = .sse }}, | 5243 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 4997 | .each = .{ .once = &.{ | 5244 | .each = .{ .once = &.{ |
| 4998 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 5245 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 4999 | .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, | 5246 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| 5000 | .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ }, | 5247 | .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ }, |
| 5001 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ }, | 5248 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 5002 | .{ ._, .vp_q, .cmpgt, .dst0x, .tmp2x, .dst0x, ._ }, | | |
| 5003 | .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x }, | | |
| 5004 | } }, | 5249 | } }, |
| 5005 | }, .{ | 5250 | }, .{ |
| 5006 | .required_features = .{ .sse4_2, null, null, null }, | 5251 | .required_features = .{ .f16c, null, null, null }, |
| 5007 | .src_constraints = .{ | 5252 | .src_constraints = .{ |
| 5008 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 5253 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| 5009 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 5254 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 5255 | .any, |
| 5010 | }, | 5256 | }, |
| 5011 | .patterns = &.{ | 5257 | .patterns = &.{ |
| 5012 | .{ .src = .{ .to_mut_sse, .mem } }, | 5258 | .{ .src = .{ .mem, .mem, .none } }, |
| 5013 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 5259 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 5014 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 5260 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 5261 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 5015 | }, | 5262 | }, |
| 5016 | .extra_temps = .{ | 5263 | .extra_temps = .{ |
| 5017 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 5264 | .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 5018 | .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } }, | 5265 | .unused, |
| 5019 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 5266 | .unused, |
| 5020 | .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } }, | 5267 | .unused, |
| 5021 | .unused, | 5268 | .unused, |
| 5022 | .unused, | 5269 | .unused, |
| 5023 | .unused, | 5270 | .unused, |
| 5024 | .unused, | 5271 | .unused, |
| 5025 | .unused, | 5272 | .unused, |
| 5026 | }, | 5273 | }, |
| 5027 | .dst_temps = .{.{ .ref = .src0 }}, | 5274 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 5028 | .each = .{ .once = &.{ | 5275 | .each = .{ .once = &.{ |
| 5029 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 5276 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| 5030 | .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, | 5277 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, |
| 5031 | .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, | 5278 | .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ }, |
| 5032 | .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ }, | 5279 | .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, |
| 5033 | .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ }, | | |
| 5034 | .{ ._, .p_q, .cmpgt, .tmp3x, .tmp2x, ._, ._ }, | | |
| 5035 | .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp3x, ._ }, | | |
| 5036 | } }, | 5280 | } }, |
| 5037 | }, .{ | 5281 | }, .{ |
| 5038 | .required_features = .{ .avx2, null, null, null }, | 5282 | .required_features = .{ .f16c, null, null, null }, |
| 5039 | .src_constraints = .{ | 5283 | .src_constraints = .{ |
| 5040 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 5284 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| 5041 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 5285 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 5286 | .any, |
| 5042 | }, | 5287 | }, |
| 5043 | .patterns = &.{ | 5288 | .patterns = &.{ |
| 5044 | .{ .src = .{ .to_sse, .mem } }, | 5289 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5045 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | | |
| 5046 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 5047 | }, | 5290 | }, |
| 5048 | .extra_temps = .{ | 5291 | .extra_temps = .{ |
| 5049 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 5292 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5050 | .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } }, | 5293 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 5051 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, | 5294 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 5052 | .unused, | 5295 | .unused, |
| 5053 | .unused, | 5296 | .unused, |
| 5054 | .unused, | 5297 | .unused, |
| ... | @@ -5056,277 +5299,251 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5056,277 +5299,251 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5056 | .unused, | 5299 | .unused, |
| 5057 | .unused, | 5300 | .unused, |
| 5058 | }, | 5301 | }, |
| 5059 | .dst_temps = .{.{ .rc = .sse }}, | 5302 | .dst_temps = .{.mem}, |
| | 5303 | .clobbers = .{ .eflags = true }, |
| 5060 | .each = .{ .once = &.{ | 5304 | .each = .{ .once = &.{ |
| 5061 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 5305 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5062 | .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, | 5306 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5063 | .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ }, | 5307 | .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5064 | .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ }, | 5308 | .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ }, |
| 5065 | .{ ._, .vp_q, .cmpgt, .dst0y, .tmp2y, .dst0y, ._ }, | 5309 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, |
| 5066 | .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y }, | 5310 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 5311 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5067 | } }, | 5312 | } }, |
| 5068 | }, .{ | 5313 | }, .{ |
| 5069 | .required_features = .{ .avx2, null, null, null }, | 5314 | .required_features = .{ .avx, null, null, null }, |
| 5070 | .src_constraints = .{ | 5315 | .src_constraints = .{ |
| 5071 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 5316 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 5072 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 5317 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 5318 | .any, |
| 5073 | }, | 5319 | }, |
| 5074 | .patterns = &.{ | 5320 | .patterns = &.{ |
| 5075 | .{ .src = .{ .to_mem, .to_mem } }, | 5321 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5076 | }, | 5322 | }, |
| | 5323 | .call_frame = .{ .alignment = .@"16" }, |
| 5077 | .extra_temps = .{ | 5324 | .extra_temps = .{ |
| 5078 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5325 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5079 | .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } }, | 5326 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 5080 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, | 5327 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 5081 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, | 5328 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| 5082 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, | 5329 | .unused, |
| 5083 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, | 5330 | .unused, |
| 5084 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, | 5331 | .unused, |
| 5085 | .unused, | 5332 | .unused, |
| 5086 | .unused, | 5333 | .unused, |
| 5087 | }, | 5334 | }, |
| 5088 | .dst_temps = .{.mem}, | 5335 | .dst_temps = .{.mem}, |
| 5089 | .clobbers = .{ .eflags = true }, | 5336 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5090 | .each = .{ .once = &.{ | 5337 | .each = .{ .once = &.{ |
| 5091 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 5338 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5092 | .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, | 5339 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| 5093 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5340 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| 5094 | .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | 5341 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, |
| 5095 | .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, | 5342 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 5096 | .{ ._, .vp_, .xor, .tmp5y, .tmp3y, .tmp2y, ._ }, | 5343 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| 5097 | .{ ._, .vp_, .xor, .tmp6y, .tmp4y, .tmp2y, ._ }, | 5344 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 5098 | .{ ._, .vp_q, .cmpgt, .tmp5y, .tmp6y, .tmp5y, ._ }, | | |
| 5099 | .{ ._, .vp_b, .blendv, .tmp3y, .tmp3y, .tmp4y, .tmp5y }, | | |
| 5100 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, | | |
| 5101 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | | |
| 5102 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5345 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5103 | } }, | 5346 | } }, |
| 5104 | }, .{ | 5347 | }, .{ |
| 5105 | .required_features = .{ .avx, null, null, null }, | 5348 | .required_features = .{ .sse4_1, null, null, null }, |
| 5106 | .src_constraints = .{ | 5349 | .src_constraints = .{ |
| 5107 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 5350 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 5108 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 5351 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 5352 | .any, |
| 5109 | }, | 5353 | }, |
| 5110 | .patterns = &.{ | 5354 | .patterns = &.{ |
| 5111 | .{ .src = .{ .to_mem, .to_mem } }, | 5355 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5112 | }, | 5356 | }, |
| | 5357 | .call_frame = .{ .alignment = .@"16" }, |
| 5113 | .extra_temps = .{ | 5358 | .extra_temps = .{ |
| 5114 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5359 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5115 | .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } }, | 5360 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 5116 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 5361 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 5117 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 5362 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| 5118 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 5363 | .unused, |
| 5119 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 5364 | .unused, |
| 5120 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 5365 | .unused, |
| 5121 | .unused, | 5366 | .unused, |
| 5122 | .unused, | 5367 | .unused, |
| 5123 | }, | 5368 | }, |
| 5124 | .dst_temps = .{.mem}, | 5369 | .dst_temps = .{.mem}, |
| 5125 | .clobbers = .{ .eflags = true }, | 5370 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5126 | .each = .{ .once = &.{ | 5371 | .each = .{ .once = &.{ |
| 5127 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 5372 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5128 | .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, | 5373 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 5129 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5374 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 5130 | .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 5375 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| 5131 | .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 5376 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| 5132 | .{ ._, .vp_, .xor, .tmp5x, .tmp3x, .tmp2x, ._ }, | 5377 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 5133 | .{ ._, .vp_, .xor, .tmp6x, .tmp4x, .tmp2x, ._ }, | 5378 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| 5134 | .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp6x, .tmp5x, ._ }, | 5379 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 5135 | .{ ._, .vp_b, .blendv, .tmp3x, .tmp3x, .tmp4x, .tmp5x }, | | |
| 5136 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | | |
| 5137 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 5138 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5380 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5139 | } }, | 5381 | } }, |
| 5140 | }, .{ | 5382 | }, .{ |
| 5141 | .required_features = .{ .sse4_2, null, null, null }, | 5383 | .required_features = .{ .sse2, null, null, null }, |
| 5142 | .src_constraints = .{ | 5384 | .src_constraints = .{ |
| 5143 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 5385 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 5144 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 5386 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 5387 | .any, |
| 5145 | }, | 5388 | }, |
| 5146 | .patterns = &.{ | 5389 | .patterns = &.{ |
| 5147 | .{ .src = .{ .to_mem, .to_mem } }, | 5390 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5148 | }, | 5391 | }, |
| | 5392 | .call_frame = .{ .alignment = .@"16" }, |
| 5149 | .extra_temps = .{ | 5393 | .extra_temps = .{ |
| 5150 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5394 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5151 | .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } }, | 5395 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 5152 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 5396 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 5153 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 5397 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| 5154 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 5398 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| 5155 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 5399 | .unused, |
| 5156 | .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } }, | 5400 | .unused, |
| 5157 | .unused, | 5401 | .unused, |
| 5158 | .unused, | 5402 | .unused, |
| 5159 | }, | 5403 | }, |
| 5160 | .dst_temps = .{.mem}, | 5404 | .dst_temps = .{.mem}, |
| 5161 | .clobbers = .{ .eflags = true }, | 5405 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5162 | .each = .{ .once = &.{ | 5406 | .each = .{ .once = &.{ |
| 5163 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 5407 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5164 | .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, | 5408 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 5165 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5409 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 5166 | .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ }, | 5410 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| 5167 | .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ }, | 5411 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| 5168 | .{ ._, ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 5412 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 5169 | .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 5413 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, |
| 5170 | .{ ._, .p_, .xor, .tmp5x, .tmp3x, ._, ._ }, | 5414 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| 5171 | .{ ._, .p_, .xor, .tmp6x, .tmp4x, ._, ._ }, | 5415 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 5172 | .{ ._, .p_q, .cmpgt, .tmp6x, .tmp5x, ._, ._ }, | | |
| 5173 | .{ ._, .p_b, .blendv, .tmp3x, .tmp4x, .tmp6x, ._ }, | | |
| 5174 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | | |
| 5175 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 5176 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5416 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5177 | } }, | 5417 | } }, |
| 5178 | }, .{ | 5418 | }, .{ |
| 5179 | .required_features = .{ .@"64bit", .cmov, null, null }, | 5419 | .required_features = .{ .sse, null, null, null }, |
| 5180 | .src_constraints = .{ | 5420 | .src_constraints = .{ |
| 5181 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, | 5421 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 5182 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, | 5422 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 5423 | .any, |
| 5183 | }, | 5424 | }, |
| 5184 | .patterns = &.{ | 5425 | .patterns = &.{ |
| 5185 | .{ .src = .{ .to_mem, .to_mem } }, | 5426 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5186 | }, | 5427 | }, |
| | 5428 | .call_frame = .{ .alignment = .@"16" }, |
| 5187 | .extra_temps = .{ | 5429 | .extra_temps = .{ |
| 5188 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5430 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5189 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 5431 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| 5190 | .unused, | 5432 | .{ .type = .f32, .kind = .mem }, |
| 5191 | .unused, | 5433 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 5192 | .unused, | 5434 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 5193 | .unused, | 5435 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| 5194 | .unused, | 5436 | .unused, |
| 5195 | .unused, | 5437 | .unused, |
| 5196 | .unused, | 5438 | .unused, |
| 5197 | }, | 5439 | }, |
| 5198 | .dst_temps = .{.mem}, | 5440 | .dst_temps = .{.mem}, |
| 5199 | .clobbers = .{ .eflags = true }, | 5441 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5200 | .each = .{ .once = &.{ | 5442 | .each = .{ .once = &.{ |
| 5201 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5443 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5202 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 5444 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5203 | .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 5445 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| 5204 | .{ ._, ._b, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 5446 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| 5205 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, | 5447 | .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5206 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 5448 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 5449 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| | 5450 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 5451 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| | 5452 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 5453 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 5454 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 5207 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5455 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5208 | } }, | 5456 | } }, |
| 5209 | }, .{ | 5457 | }, .{ |
| 5210 | .required_features = .{ .@"64bit", null, null, null }, | 5458 | .required_features = .{ .avx, null, null, null }, |
| 5211 | .src_constraints = .{ | 5459 | .src_constraints = .{ |
| 5212 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, | 5460 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 5213 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, | 5461 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 5462 | .any, |
| 5214 | }, | 5463 | }, |
| 5215 | .patterns = &.{ | 5464 | .patterns = &.{ |
| 5216 | .{ .src = .{ .to_mem, .to_mem } }, | 5465 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 5466 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 5217 | }, | 5467 | }, |
| 5218 | .extra_temps = .{ | 5468 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 5219 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5469 | .each = .{ .once = &.{ |
| 5220 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 5470 | .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ }, |
| 5221 | .unused, | 5471 | } }, |
| 5222 | .unused, | 5472 | }, .{ |
| 5223 | .unused, | 5473 | .required_features = .{ .sse, null, null, null }, |
| 5224 | .unused, | 5474 | .src_constraints = .{ |
| 5225 | .unused, | 5475 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 5226 | .unused, | 5476 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 5227 | .unused, | 5477 | .any, |
| 5228 | }, | 5478 | }, |
| 5229 | .dst_temps = .{.mem}, | 5479 | .patterns = &.{ |
| 5230 | .clobbers = .{ .eflags = true }, | 5480 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 5481 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 5482 | }, |
| | 5483 | .dst_temps = .{.{ .ref = .src0 }}, |
| 5231 | .each = .{ .once = &.{ | 5484 | .each = .{ .once = &.{ |
| 5232 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5485 | .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ }, |
| 5233 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | | |
| 5234 | .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | | |
| 5235 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, | | |
| 5236 | .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | | |
| 5237 | .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, | | |
| 5238 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 5239 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 5240 | } }, | 5486 | } }, |
| 5241 | }, .{ | 5487 | }, .{ |
| 5242 | .required_features = .{ .@"64bit", .cmov, null, null }, | 5488 | .required_features = .{ .avx, null, null, null }, |
| 5243 | .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int }, | 5489 | .src_constraints = .{ |
| | 5490 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 5491 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 5492 | .any, |
| | 5493 | }, |
| 5244 | .patterns = &.{ | 5494 | .patterns = &.{ |
| 5245 | .{ .src = .{ .to_mem, .to_mem } }, | 5495 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 5496 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 5246 | }, | 5497 | }, |
| 5247 | .extra_temps = .{ | 5498 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 5248 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 5249 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, | | |
| 5250 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, | | |
| 5251 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, | | |
| 5252 | .unused, | | |
| 5253 | .unused, | | |
| 5254 | .unused, | | |
| 5255 | .unused, | | |
| 5256 | .unused, | | |
| 5257 | }, | | |
| 5258 | .dst_temps = .{.mem}, | | |
| 5259 | .clobbers = .{ .eflags = true }, | | |
| 5260 | .each = .{ .once = &.{ | 5499 | .each = .{ .once = &.{ |
| 5261 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5500 | .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ }, |
| 5262 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, | | |
| 5263 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | | |
| 5264 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | | |
| 5265 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | | |
| 5266 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, | | |
| 5267 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, | | |
| 5268 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, | | |
| 5269 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | | |
| 5270 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | | |
| 5271 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | | |
| 5272 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | | |
| 5273 | .{ ._, ._l, .cmov, .tmp1p, .tmp2p, ._, ._ }, | | |
| 5274 | .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | | |
| 5275 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | | |
| 5276 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | | |
| 5277 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 5278 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 5279 | } }, | 5501 | } }, |
| 5280 | }, .{ | 5502 | }, .{ |
| 5281 | .required_features = .{ .@"64bit", null, null, null }, | 5503 | .required_features = .{ .sse, null, null, null }, |
| 5282 | .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int }, | 5504 | .src_constraints = .{ |
| | 5505 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 5506 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 5507 | .any, |
| | 5508 | }, |
| 5283 | .patterns = &.{ | 5509 | .patterns = &.{ |
| 5284 | .{ .src = .{ .to_mem, .to_mem } }, | 5510 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 5511 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 5285 | }, | 5512 | }, |
| 5286 | .extra_temps = .{ | 5513 | .dst_temps = .{.{ .ref = .src0 }}, |
| 5287 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5514 | .each = .{ .once = &.{ |
| 5288 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, | 5515 | .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ }, |
| 5289 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, | 5516 | } }, |
| 5290 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, | 5517 | }, .{ |
| 5291 | .unused, | 5518 | .required_features = .{ .avx, null, null, null }, |
| 5292 | .unused, | 5519 | .src_constraints = .{ |
| 5293 | .unused, | 5520 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 5294 | .unused, | 5521 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 5295 | .unused, | 5522 | .any, |
| 5296 | }, | 5523 | }, |
| 5297 | .dst_temps = .{.mem}, | 5524 | .patterns = &.{ |
| 5298 | .clobbers = .{ .eflags = true }, | 5525 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 5526 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 5527 | }, |
| | 5528 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 5299 | .each = .{ .once = &.{ | 5529 | .each = .{ .once = &.{ |
| 5300 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5530 | .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ }, |
| 5301 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, | | |
| 5302 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | | |
| 5303 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | | |
| 5304 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | | |
| 5305 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, | | |
| 5306 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, | | |
| 5307 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, | | |
| 5308 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | | |
| 5309 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | | |
| 5310 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | | |
| 5311 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, | | |
| 5312 | .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | | |
| 5313 | .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | | |
| 5314 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | | |
| 5315 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | | |
| 5316 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 5317 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 5318 | } }, | 5531 | } }, |
| 5319 | }, .{ | 5532 | }, .{ |
| 5320 | .required_features = .{ .@"64bit", .cmov, null, null }, | 5533 | .required_features = .{ .avx, null, null, null }, |
| 5321 | .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int }, | 5534 | .src_constraints = .{ |
| | 5535 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 5536 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 5537 | .any, |
| | 5538 | }, |
| 5322 | .patterns = &.{ | 5539 | .patterns = &.{ |
| 5323 | .{ .src = .{ .to_mem, .to_mem } }, | 5540 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5324 | }, | 5541 | }, |
| 5325 | .extra_temps = .{ | 5542 | .extra_temps = .{ |
| 5326 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5543 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5327 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, | 5544 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 5328 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, | 5545 | .unused, |
| 5329 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, | 5546 | .unused, |
| 5330 | .unused, | 5547 | .unused, |
| 5331 | .unused, | 5548 | .unused, |
| 5332 | .unused, | 5549 | .unused, |
| ... | @@ -5336,34 +5553,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5336,34 +5553,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5336 | .dst_temps = .{.mem}, | 5553 | .dst_temps = .{.mem}, |
| 5337 | .clobbers = .{ .eflags = true }, | 5554 | .clobbers = .{ .eflags = true }, |
| 5338 | .each = .{ .once = &.{ | 5555 | .each = .{ .once = &.{ |
| 5339 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5556 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5340 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 5557 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5341 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 5558 | .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, |
| 5342 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 5559 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| 5343 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 5560 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 5344 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, | 5561 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5345 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, | | |
| 5346 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, | | |
| 5347 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ }, | | |
| 5348 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ }, | | |
| 5349 | .{ ._, ._b, .cmov, .tmp1p, .tmp2p, ._, ._ }, | | |
| 5350 | .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ }, | | |
| 5351 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | | |
| 5352 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | | |
| 5353 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, | | |
| 5354 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 5355 | } }, | 5562 | } }, |
| 5356 | }, .{ | 5563 | }, .{ |
| 5357 | .required_features = .{ .@"64bit", null, null, null }, | 5564 | .required_features = .{ .sse, null, null, null }, |
| 5358 | .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int }, | 5565 | .src_constraints = .{ |
| | 5566 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 5567 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 5568 | .any, |
| | 5569 | }, |
| 5359 | .patterns = &.{ | 5570 | .patterns = &.{ |
| 5360 | .{ .src = .{ .to_mem, .to_mem } }, | 5571 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5361 | }, | 5572 | }, |
| 5362 | .extra_temps = .{ | 5573 | .extra_temps = .{ |
| 5363 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5574 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5364 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, | 5575 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| 5365 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, | 5576 | .unused, |
| 5366 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, | 5577 | .unused, |
| 5367 | .unused, | 5578 | .unused, |
| 5368 | .unused, | 5579 | .unused, |
| 5369 | .unused, | 5580 | .unused, |
| ... | @@ -5373,93 +5584,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5373,93 +5584,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5373 | .dst_temps = .{.mem}, | 5584 | .dst_temps = .{.mem}, |
| 5374 | .clobbers = .{ .eflags = true }, | 5585 | .clobbers = .{ .eflags = true }, |
| 5375 | .each = .{ .once = &.{ | 5586 | .each = .{ .once = &.{ |
| 5376 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5587 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5377 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 5588 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5378 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 5589 | .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5379 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 5590 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 5380 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 5591 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 5381 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, | 5592 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5382 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, | | |
| 5383 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, | | |
| 5384 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ }, | | |
| 5385 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, | | |
| 5386 | .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ }, | | |
| 5387 | .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ }, | | |
| 5388 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | | |
| 5389 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | | |
| 5390 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, | | |
| 5391 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 5392 | } }, | 5593 | } }, |
| 5393 | }, .{ | 5594 | }, .{ |
| 5394 | .required_features = .{ .f16c, null, null, null }, | 5595 | .required_features = .{ .avx, null, null, null }, |
| 5395 | .src_constraints = .{ | 5596 | .src_constraints = .{ |
| 5396 | .{ .scalar_float = .{ .of = .word, .is = .word } }, | 5597 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 5397 | .{ .scalar_float = .{ .of = .word, .is = .word } }, | 5598 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 5599 | .any, |
| 5398 | }, | 5600 | }, |
| 5399 | .patterns = &.{ | 5601 | .patterns = &.{ |
| 5400 | .{ .src = .{ .to_sse, .to_sse } }, | 5602 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 5401 | }, | 5603 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 5402 | .extra_temps = .{ | | |
| 5403 | .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, | | |
| 5404 | .{ .type = .f16, .kind = .{ .rc = .sse } }, | | |
| 5405 | .unused, | | |
| 5406 | .unused, | | |
| 5407 | .unused, | | |
| 5408 | .unused, | | |
| 5409 | .unused, | | |
| 5410 | .unused, | | |
| 5411 | .unused, | | |
| 5412 | }, | 5604 | }, |
| 5413 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 5605 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 5414 | .each = .{ .once = &.{ | 5606 | .each = .{ .once = &.{ |
| 5415 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 5607 | .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ }, |
| 5416 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, | | |
| 5417 | .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) }, | | |
| 5418 | .{ ._, .v_ss, .max, .dst0x, .tmp0x, .dst0x, ._ }, | | |
| 5419 | .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x }, | | |
| 5420 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, | | |
| 5421 | } }, | 5608 | } }, |
| 5422 | }, .{ | 5609 | }, .{ |
| 5423 | .required_features = .{ .sse, null, null, null }, | 5610 | .required_features = .{ .sse2, null, null, null }, |
| 5424 | .src_constraints = .{ | 5611 | .src_constraints = .{ |
| 5425 | .{ .scalar_float = .{ .of = .word, .is = .word } }, | 5612 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 5426 | .{ .scalar_float = .{ .of = .word, .is = .word } }, | 5613 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 5614 | .any, |
| 5427 | }, | 5615 | }, |
| 5428 | .patterns = &.{ | 5616 | .patterns = &.{ |
| 5429 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | 5617 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 5430 | }, | 5618 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 5431 | .call_frame = .{ .alignment = .@"16" }, | | |
| 5432 | .extra_temps = .{ | | |
| 5433 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } }, | | |
| 5434 | .unused, | | |
| 5435 | .unused, | | |
| 5436 | .unused, | | |
| 5437 | .unused, | | |
| 5438 | .unused, | | |
| 5439 | .unused, | | |
| 5440 | .unused, | | |
| 5441 | .unused, | | |
| 5442 | }, | 5619 | }, |
| 5443 | .dst_temps = .{.{ .ref = .src0 }}, | 5620 | .dst_temps = .{.{ .ref = .src0 }}, |
| 5444 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 5445 | .each = .{ .once = &.{ | 5621 | .each = .{ .once = &.{ |
| 5446 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 5622 | .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ }, |
| 5447 | } }, | 5623 | } }, |
| 5448 | }, .{ | 5624 | }, .{ |
| 5449 | .required_features = .{ .f16c, null, null, null }, | 5625 | .required_features = .{ .x87, null, null, null }, |
| 5450 | .src_constraints = .{ | 5626 | .src_constraints = .{ |
| 5451 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, | 5627 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 5452 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, | 5628 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 5629 | .any, |
| 5453 | }, | 5630 | }, |
| 5454 | .patterns = &.{ | 5631 | .patterns = &.{ |
| 5455 | .{ .src = .{ .mem, .mem } }, | 5632 | .{ .src = .{ .mem, .mem, .none } }, |
| 5456 | .{ .src = .{ .to_sse, .mem } }, | | |
| 5457 | .{ .src = .{ .mem, .to_sse } }, | | |
| 5458 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 5459 | }, | 5633 | }, |
| 5460 | .extra_temps = .{ | 5634 | .extra_temps = .{ |
| 5461 | .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, | 5635 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 5462 | .{ .type = .vector_4_f16, .kind = .{ .rc = .sse } }, | 5636 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 5463 | .unused, | 5637 | .unused, |
| 5464 | .unused, | 5638 | .unused, |
| 5465 | .unused, | 5639 | .unused, |
| ... | @@ -5468,128 +5642,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5468,128 +5642,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5468 | .unused, | 5642 | .unused, |
| 5469 | .unused, | 5643 | .unused, |
| 5470 | }, | 5644 | }, |
| 5471 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 5645 | .dst_temps = .{.mem}, |
| 5472 | .each = .{ .once = &.{ | 5646 | .each = .{ .once = &.{ |
| 5473 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 5647 | .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, |
| 5474 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, | 5648 | .{ ._, .f_, .ld, .src1q, ._, ._, ._ }, |
| 5475 | .{ ._, .v_ps, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) }, | 5649 | .{ ._, .f_p, .div, ._, ._, ._, ._ }, |
| 5476 | .{ ._, .v_ps, .max, .dst0x, .tmp0x, .dst0x, ._ }, | 5650 | .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, |
| 5477 | .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x }, | | |
| 5478 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, | | |
| 5479 | } }, | 5651 | } }, |
| 5480 | }, .{ | 5652 | }, .{ |
| 5481 | .required_features = .{ .f16c, null, null, null }, | 5653 | .required_features = .{ .avx, null, null, null }, |
| 5482 | .src_constraints = .{ | 5654 | .src_constraints = .{ |
| 5483 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, | 5655 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 5484 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, | 5656 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 5657 | .any, |
| 5485 | }, | 5658 | }, |
| 5486 | .patterns = &.{ | 5659 | .patterns = &.{ |
| 5487 | .{ .src = .{ .mem, .mem } }, | 5660 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 5488 | .{ .src = .{ .to_sse, .mem } }, | 5661 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 5489 | .{ .src = .{ .mem, .to_sse } }, | | |
| 5490 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 5491 | }, | | |
| 5492 | .extra_temps = .{ | | |
| 5493 | .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, | | |
| 5494 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, | | |
| 5495 | .unused, | | |
| 5496 | .unused, | | |
| 5497 | .unused, | | |
| 5498 | .unused, | | |
| 5499 | .unused, | | |
| 5500 | .unused, | | |
| 5501 | .unused, | | |
| 5502 | }, | 5662 | }, |
| 5503 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 5663 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 5504 | .each = .{ .once = &.{ | 5664 | .each = .{ .once = &.{ |
| 5505 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, | 5665 | .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ }, |
| 5506 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, | | |
| 5507 | .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) }, | | |
| 5508 | .{ ._, .v_ps, .max, .dst0y, .tmp0y, .dst0y, ._ }, | | |
| 5509 | .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y }, | | |
| 5510 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0y, .rm(.{}), ._ }, | | |
| 5511 | } }, | 5666 | } }, |
| 5512 | }, .{ | 5667 | }, .{ |
| 5513 | .required_features = .{ .f16c, null, null, null }, | 5668 | .required_features = .{ .sse2, null, null, null }, |
| 5514 | .src_constraints = .{ | 5669 | .src_constraints = .{ |
| 5515 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, | 5670 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 5516 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, | 5671 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 5672 | .any, |
| 5517 | }, | 5673 | }, |
| 5518 | .patterns = &.{ | 5674 | .patterns = &.{ |
| 5519 | .{ .src = .{ .to_mem, .to_mem } }, | 5675 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 5676 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 5520 | }, | 5677 | }, |
| 5521 | .extra_temps = .{ | 5678 | .dst_temps = .{.{ .ref = .src0 }}, |
| 5522 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 5523 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, | | |
| 5524 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, | | |
| 5525 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, | | |
| 5526 | .unused, | | |
| 5527 | .unused, | | |
| 5528 | .unused, | | |
| 5529 | .unused, | | |
| 5530 | .unused, | | |
| 5531 | }, | | |
| 5532 | .dst_temps = .{.mem}, | | |
| 5533 | .clobbers = .{ .eflags = true }, | | |
| 5534 | .each = .{ .once = &.{ | 5679 | .each = .{ .once = &.{ |
| 5535 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5680 | .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ }, |
| 5536 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | | |
| 5537 | .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | | |
| 5538 | .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, | | |
| 5539 | .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ }, | | |
| 5540 | .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, | | |
| 5541 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_size), .tmp1y, .rm(.{}), ._ }, | | |
| 5542 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 5543 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 5544 | } }, | 5681 | } }, |
| 5545 | }, .{ | 5682 | }, .{ |
| 5546 | .required_features = .{ .avx, null, null, null }, | 5683 | .required_features = .{ .avx, null, null, null }, |
| 5547 | .src_constraints = .{ | 5684 | .src_constraints = .{ |
| 5548 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 5685 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| 5549 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 5686 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 5687 | .any, |
| 5550 | }, | 5688 | }, |
| 5551 | .patterns = &.{ | 5689 | .patterns = &.{ |
| 5552 | .{ .src = .{ .to_mem, .to_mem } }, | 5690 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 5553 | }, | 5691 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 5554 | .call_frame = .{ .alignment = .@"16" }, | | |
| 5555 | .extra_temps = .{ | | |
| 5556 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 5557 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | | |
| 5558 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | | |
| 5559 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } }, | | |
| 5560 | .unused, | | |
| 5561 | .unused, | | |
| 5562 | .unused, | | |
| 5563 | .unused, | | |
| 5564 | .unused, | | |
| 5565 | }, | 5692 | }, |
| 5566 | .dst_temps = .{.mem}, | 5693 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 5567 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 5568 | .each = .{ .once = &.{ | 5694 | .each = .{ .once = &.{ |
| 5569 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5695 | .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ }, |
| 5570 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, | | |
| 5571 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) }, | | |
| 5572 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) }, | | |
| 5573 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | | |
| 5574 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, | | |
| 5575 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 5576 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 5577 | } }, | 5696 | } }, |
| 5578 | }, .{ | 5697 | }, .{ |
| 5579 | .required_features = .{ .sse4_1, null, null, null }, | 5698 | .required_features = .{ .avx, null, null, null }, |
| 5580 | .src_constraints = .{ | 5699 | .src_constraints = .{ |
| 5581 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 5700 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| 5582 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 5701 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 5702 | .any, |
| 5583 | }, | 5703 | }, |
| 5584 | .patterns = &.{ | 5704 | .patterns = &.{ |
| 5585 | .{ .src = .{ .to_mem, .to_mem } }, | 5705 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5586 | }, | 5706 | }, |
| 5587 | .call_frame = .{ .alignment = .@"16" }, | | |
| 5588 | .extra_temps = .{ | 5707 | .extra_temps = .{ |
| 5589 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5708 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5590 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 5709 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| 5591 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 5710 | .unused, |
| 5592 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } }, | 5711 | .unused, |
| 5593 | .unused, | 5712 | .unused, |
| 5594 | .unused, | 5713 | .unused, |
| 5595 | .unused, | 5714 | .unused, |
| ... | @@ -5597,103 +5716,90 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5597,103 +5716,90 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5597 | .unused, | 5716 | .unused, |
| 5598 | }, | 5717 | }, |
| 5599 | .dst_temps = .{.mem}, | 5718 | .dst_temps = .{.mem}, |
| 5600 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 5719 | .clobbers = .{ .eflags = true }, |
| 5601 | .each = .{ .once = &.{ | 5720 | .each = .{ .once = &.{ |
| 5602 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5721 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5603 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, | 5722 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5604 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, | 5723 | .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, |
| 5605 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, | 5724 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| 5606 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ }, | 5725 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 5607 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | | |
| 5608 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, | | |
| 5609 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 5610 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5726 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5611 | } }, | 5727 | } }, |
| 5612 | }, .{ | 5728 | }, .{ |
| 5613 | .required_features = .{ .sse2, null, null, null }, | 5729 | .required_features = .{ .sse2, null, null, null }, |
| 5614 | .src_constraints = .{ | 5730 | .src_constraints = .{ |
| 5615 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 5731 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| 5616 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 5732 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 5733 | .any, |
| 5617 | }, | 5734 | }, |
| 5618 | .patterns = &.{ | 5735 | .patterns = &.{ |
| 5619 | .{ .src = .{ .to_mem, .to_mem } }, | 5736 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5620 | }, | 5737 | }, |
| 5621 | .call_frame = .{ .alignment = .@"16" }, | | |
| 5622 | .extra_temps = .{ | 5738 | .extra_temps = .{ |
| 5623 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5739 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5624 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 5740 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| 5625 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 5741 | .unused, |
| 5626 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } }, | 5742 | .unused, |
| 5627 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 5743 | .unused, |
| 5628 | .unused, | 5744 | .unused, |
| 5629 | .unused, | 5745 | .unused, |
| 5630 | .unused, | 5746 | .unused, |
| 5631 | .unused, | 5747 | .unused, |
| 5632 | }, | 5748 | }, |
| 5633 | .dst_temps = .{.mem}, | 5749 | .dst_temps = .{.mem}, |
| 5634 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 5750 | .clobbers = .{ .eflags = true }, |
| 5635 | .each = .{ .once = &.{ | 5751 | .each = .{ .once = &.{ |
| 5636 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5752 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5637 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, | 5753 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5638 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, | 5754 | .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5639 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, | 5755 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 5640 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ }, | 5756 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 5641 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | | |
| 5642 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, | | |
| 5643 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ }, | | |
| 5644 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 5645 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5757 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5646 | } }, | 5758 | } }, |
| 5647 | }, .{ | 5759 | }, .{ |
| 5648 | .required_features = .{ .sse, null, null, null }, | 5760 | .required_features = .{ .x87, null, null, null }, |
| 5649 | .src_constraints = .{ | 5761 | .src_constraints = .{ |
| 5650 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 5762 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 5651 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 5763 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 5764 | .any, |
| 5652 | }, | 5765 | }, |
| 5653 | .patterns = &.{ | 5766 | .patterns = &.{ |
| 5654 | .{ .src = .{ .to_mem, .to_mem } }, | 5767 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5655 | }, | 5768 | }, |
| 5656 | .call_frame = .{ .alignment = .@"16" }, | | |
| 5657 | .extra_temps = .{ | 5769 | .extra_temps = .{ |
| 5658 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5770 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5659 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 5771 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 5660 | .{ .type = .f32, .kind = .mem }, | 5772 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 5661 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 5773 | .unused, |
| 5662 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 5774 | .unused, |
| 5663 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } }, | 5775 | .unused, |
| 5664 | .unused, | 5776 | .unused, |
| 5665 | .unused, | 5777 | .unused, |
| 5666 | .unused, | 5778 | .unused, |
| 5667 | }, | 5779 | }, |
| 5668 | .dst_temps = .{.mem}, | 5780 | .dst_temps = .{.mem}, |
| 5669 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 5670 | .each = .{ .once = &.{ | 5781 | .each = .{ .once = &.{ |
| 5671 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5782 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5672 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 5783 | .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 5673 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, | 5784 | .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 5674 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, | 5785 | .{ ._, .f_p, .div, ._, ._, ._, ._ }, |
| 5675 | .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_size), ._, ._ }, | 5786 | .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 5676 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, | 5787 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 5677 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, | | |
| 5678 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, | | |
| 5679 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, | | |
| 5680 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, | | |
| 5681 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, | | |
| 5682 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 5683 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5788 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5684 | } }, | 5789 | } }, |
| 5685 | }, .{ | 5790 | }, .{ |
| 5686 | .required_features = .{ .avx, null, null, null }, | 5791 | .required_features = .{ .x87, null, null, null }, |
| 5687 | .src_constraints = .{ | 5792 | .src_constraints = .{ |
| 5688 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 5793 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 5689 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 5794 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 5795 | .any, |
| 5690 | }, | 5796 | }, |
| 5691 | .patterns = &.{ | 5797 | .patterns = &.{ |
| 5692 | .{ .src = .{ .to_sse, .to_sse } }, | 5798 | .{ .src = .{ .mem, .mem, .none } }, |
| 5693 | }, | 5799 | }, |
| 5694 | .extra_temps = .{ | 5800 | .extra_temps = .{ |
| 5695 | .{ .type = .f32, .kind = .{ .rc = .sse } }, | 5801 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 5696 | .unused, | 5802 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 5697 | .unused, | 5803 | .unused, |
| 5698 | .unused, | 5804 | .unused, |
| 5699 | .unused, | 5805 | .unused, |
| ... | @@ -5702,39 +5808,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5702,39 +5808,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5702 | .unused, | 5808 | .unused, |
| 5703 | .unused, | 5809 | .unused, |
| 5704 | }, | 5810 | }, |
| 5705 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 5811 | .dst_temps = .{.{ .rc = .x87 }}, |
| 5706 | .each = .{ .once = &.{ | | |
| 5707 | .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) }, | | |
| 5708 | .{ ._, .v_ss, .max, .dst0x, .src1x, .src0x, ._ }, | | |
| 5709 | .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, | | |
| 5710 | } }, | | |
| 5711 | }, .{ | | |
| 5712 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 5713 | .src_constraints = .{ | | |
| 5714 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | | |
| 5715 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | | |
| 5716 | }, | | |
| 5717 | .patterns = &.{ | | |
| 5718 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, | | |
| 5719 | }, | | |
| 5720 | .dst_temps = .{.{ .rc = .sse }}, | | |
| 5721 | .each = .{ .once = &.{ | 5812 | .each = .{ .once = &.{ |
| 5722 | .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ }, | 5813 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 5723 | .{ ._, ._ss, .max, .dst0x, .src0x, ._, ._ }, | 5814 | .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, |
| 5724 | .{ ._, ._ss, .cmp, .src0x, .src0x, .vp(.unord), ._ }, | 5815 | .{ ._, .f_p, .div, ._, ._, ._, ._ }, |
| 5725 | .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ }, | 5816 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 5726 | } }, | 5817 | } }, |
| 5727 | }, .{ | 5818 | }, .{ |
| 5728 | .required_features = .{ .sse, null, null, null }, | 5819 | .required_features = .{ .x87, null, null, null }, |
| 5729 | .src_constraints = .{ | 5820 | .src_constraints = .{ |
| 5730 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 5821 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 5731 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 5822 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 5823 | .any, |
| 5732 | }, | 5824 | }, |
| 5733 | .patterns = &.{ | 5825 | .patterns = &.{ |
| 5734 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 5826 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| 5735 | }, | 5827 | }, |
| 5736 | .extra_temps = .{ | 5828 | .extra_temps = .{ |
| 5737 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, | 5829 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 5738 | .unused, | 5830 | .unused, |
| 5739 | .unused, | 5831 | .unused, |
| 5740 | .unused, | 5832 | .unused, |
| ... | @@ -5744,26 +5836,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5744,26 +5836,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5744 | .unused, | 5836 | .unused, |
| 5745 | .unused, | 5837 | .unused, |
| 5746 | }, | 5838 | }, |
| 5747 | .dst_temps = .{.{ .ref = .src0 }}, | 5839 | .dst_temps = .{.{ .rc = .x87 }}, |
| 5748 | .each = .{ .once = &.{ | 5840 | .each = .{ .once = &.{ |
| 5749 | .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ }, | 5841 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 5750 | .{ ._, ._ss, .max, .tmp0x, .src0x, ._, ._ }, | 5842 | .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ }, |
| 5751 | .{ ._, ._ss, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, | 5843 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 5752 | .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ }, | | |
| 5753 | .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ }, | | |
| 5754 | .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, | | |
| 5755 | } }, | 5844 | } }, |
| 5756 | }, .{ | 5845 | }, .{ |
| 5757 | .required_features = .{ .avx, null, null, null }, | 5846 | .required_features = .{ .x87, null, null, null }, |
| 5758 | .src_constraints = .{ | 5847 | .src_constraints = .{ |
| 5759 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 5848 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 5760 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 5849 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 5850 | .any, |
| 5761 | }, | 5851 | }, |
| 5762 | .patterns = &.{ | 5852 | .patterns = &.{ |
| 5763 | .{ .src = .{ .to_sse, .to_sse } }, | 5853 | .{ .src = .{ .mem, .to_x87, .none } }, |
| | 5854 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| 5764 | }, | 5855 | }, |
| 5765 | .extra_temps = .{ | 5856 | .extra_temps = .{ |
| 5766 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, | 5857 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 5767 | .unused, | 5858 | .unused, |
| 5768 | .unused, | 5859 | .unused, |
| 5769 | .unused, | 5860 | .unused, |
| ... | @@ -5773,45 +5864,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5773,45 +5864,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5773 | .unused, | 5864 | .unused, |
| 5774 | .unused, | 5865 | .unused, |
| 5775 | }, | 5866 | }, |
| 5776 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 5867 | .dst_temps = .{.{ .rc = .x87 }}, |
| 5777 | .each = .{ .once = &.{ | | |
| 5778 | .{ ._, .v_ps, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) }, | | |
| 5779 | .{ ._, .v_ps, .max, .dst0x, .src1x, .src0x, ._ }, | | |
| 5780 | .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, | | |
| 5781 | } }, | | |
| 5782 | }, .{ | | |
| 5783 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 5784 | .src_constraints = .{ | | |
| 5785 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | | |
| 5786 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | | |
| 5787 | }, | | |
| 5788 | .patterns = &.{ | | |
| 5789 | .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } }, | | |
| 5790 | .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } }, | | |
| 5791 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, | | |
| 5792 | }, | | |
| 5793 | .dst_temps = .{.{ .rc = .sse }}, | | |
| 5794 | .each = .{ .once = &.{ | 5868 | .each = .{ .once = &.{ |
| 5795 | .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ }, | 5869 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 5796 | .{ ._, ._ps, .max, .dst0x, .src0x, ._, ._ }, | 5870 | .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ }, |
| 5797 | .{ ._, ._ps, .cmp, .src0x, .src0x, .vp(.unord), ._ }, | 5871 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 5798 | .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ }, | | |
| 5799 | } }, | 5872 | } }, |
| 5800 | }, .{ | 5873 | }, .{ |
| 5801 | .required_features = .{ .sse, null, null, null }, | 5874 | .required_features = .{ .x87, null, null, null }, |
| 5802 | .src_constraints = .{ | 5875 | .src_constraints = .{ |
| 5803 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 5876 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 5804 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 5877 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 5878 | .any, |
| 5805 | }, | 5879 | }, |
| 5806 | .patterns = &.{ | 5880 | .patterns = &.{ |
| 5807 | .{ .src = .{ .to_mut_sse, .mem } }, | 5881 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5808 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | | |
| 5809 | .{ .src = .{ .to_mut_sse, .to_sse } }, | | |
| 5810 | }, | 5882 | }, |
| 5811 | .extra_temps = .{ | 5883 | .extra_temps = .{ |
| 5812 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, | 5884 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5813 | .unused, | 5885 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 5814 | .unused, | 5886 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 5815 | .unused, | 5887 | .unused, |
| 5816 | .unused, | 5888 | .unused, |
| 5817 | .unused, | 5889 | .unused, |
| ... | @@ -5819,26 +5891,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5819,26 +5891,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5819 | .unused, | 5891 | .unused, |
| 5820 | .unused, | 5892 | .unused, |
| 5821 | }, | 5893 | }, |
| 5822 | .dst_temps = .{.{ .ref = .src0 }}, | 5894 | .dst_temps = .{.mem}, |
| 5823 | .each = .{ .once = &.{ | 5895 | .each = .{ .once = &.{ |
| 5824 | .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ }, | 5896 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5825 | .{ ._, ._ps, .max, .tmp0x, .src0x, ._, ._ }, | 5897 | .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 5826 | .{ ._, ._ps, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, | 5898 | .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 5827 | .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ }, | 5899 | .{ ._, .f_p, .div, ._, ._, ._, ._ }, |
| 5828 | .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ }, | 5900 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 5829 | .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, | 5901 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 5902 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5830 | } }, | 5903 | } }, |
| 5831 | }, .{ | 5904 | }, .{ |
| 5832 | .required_features = .{ .avx, null, null, null }, | 5905 | .required_features = .{ .sse, null, null, null }, |
| 5833 | .src_constraints = .{ | 5906 | .src_constraints = .{ |
| 5834 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, | 5907 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| 5835 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, | 5908 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 5909 | .any, |
| 5836 | }, | 5910 | }, |
| 5837 | .patterns = &.{ | 5911 | .patterns = &.{ |
| 5838 | .{ .src = .{ .to_sse, .to_sse } }, | 5912 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 5839 | }, | 5913 | }, |
| | 5914 | .call_frame = .{ .alignment = .@"16" }, |
| 5840 | .extra_temps = .{ | 5915 | .extra_temps = .{ |
| 5841 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, | 5916 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, |
| 5842 | .unused, | 5917 | .unused, |
| 5843 | .unused, | 5918 | .unused, |
| 5844 | .unused, | 5919 | .unused, |
| ... | @@ -5848,26 +5923,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5848,26 +5923,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5848 | .unused, | 5923 | .unused, |
| 5849 | .unused, | 5924 | .unused, |
| 5850 | }, | 5925 | }, |
| 5851 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 5926 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 5927 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5852 | .each = .{ .once = &.{ | 5928 | .each = .{ .once = &.{ |
| 5853 | .{ ._, .v_ps, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) }, | 5929 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 5854 | .{ ._, .v_ps, .max, .dst0y, .src1y, .src0y, ._ }, | | |
| 5855 | .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .src1y, .tmp0y }, | | |
| 5856 | } }, | 5930 | } }, |
| 5857 | }, .{ | 5931 | }, .{ |
| 5858 | .required_features = .{ .avx, null, null, null }, | 5932 | .required_features = .{ .avx, null, null, null }, |
| 5859 | .src_constraints = .{ | 5933 | .src_constraints = .{ |
| 5860 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, | 5934 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 5861 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, | 5935 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 5936 | .any, |
| 5862 | }, | 5937 | }, |
| 5863 | .patterns = &.{ | 5938 | .patterns = &.{ |
| 5864 | .{ .src = .{ .to_mem, .to_mem } }, | 5939 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5865 | }, | 5940 | }, |
| | 5941 | .call_frame = .{ .alignment = .@"16" }, |
| 5866 | .extra_temps = .{ | 5942 | .extra_temps = .{ |
| 5867 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5943 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5868 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, | 5944 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 5869 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, | 5945 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 5870 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, | 5946 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, |
| 5871 | .unused, | 5947 | .unused, |
| 5872 | .unused, | 5948 | .unused, |
| 5873 | .unused, | 5949 | .unused, |
| ... | @@ -5875,32 +5951,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5875,32 +5951,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5875 | .unused, | 5951 | .unused, |
| 5876 | }, | 5952 | }, |
| 5877 | .dst_temps = .{.mem}, | 5953 | .dst_temps = .{.mem}, |
| 5878 | .clobbers = .{ .eflags = true }, | 5954 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5879 | .each = .{ .once = &.{ | 5955 | .each = .{ .once = &.{ |
| 5880 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5956 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5881 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | 5957 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5882 | .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, | 5958 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5883 | .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, | 5959 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 5884 | .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ }, | 5960 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 5885 | .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, | 5961 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 5886 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | | |
| 5887 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | | |
| 5888 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5962 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5889 | } }, | 5963 | } }, |
| 5890 | }, .{ | 5964 | }, .{ |
| 5891 | .required_features = .{ .sse4_1, null, null, null }, | 5965 | .required_features = .{ .sse2, null, null, null }, |
| 5892 | .src_constraints = .{ | 5966 | .src_constraints = .{ |
| 5893 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, | 5967 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 5894 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, | 5968 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 5969 | .any, |
| 5895 | }, | 5970 | }, |
| 5896 | .patterns = &.{ | 5971 | .patterns = &.{ |
| 5897 | .{ .src = .{ .to_mem, .to_mem } }, | 5972 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 5898 | }, | 5973 | }, |
| | 5974 | .call_frame = .{ .alignment = .@"16" }, |
| 5899 | .extra_temps = .{ | 5975 | .extra_temps = .{ |
| 5900 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5976 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5901 | .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } }, | 5977 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 5902 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, | 5978 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 5903 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, | 5979 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, |
| 5904 | .unused, | 5980 | .unused, |
| 5905 | .unused, | 5981 | .unused, |
| 5906 | .unused, | 5982 | .unused, |
| ... | @@ -5908,371 +5984,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5908,371 +5984,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5908 | .unused, | 5984 | .unused, |
| 5909 | }, | 5985 | }, |
| 5910 | .dst_temps = .{.mem}, | 5986 | .dst_temps = .{.mem}, |
| 5911 | .clobbers = .{ .eflags = true }, | 5987 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5912 | .each = .{ .once = &.{ | 5988 | .each = .{ .once = &.{ |
| 5913 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5989 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5914 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 5990 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5915 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 5991 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 5916 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, | 5992 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 5917 | .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ }, | 5993 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 5918 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, | | |
| 5919 | .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, | | |
| 5920 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | | |
| 5921 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 5922 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 5923 | } }, | | |
| 5924 | }, .{ | | |
| 5925 | .required_features = .{ .sse, null, null, null }, | | |
| 5926 | .src_constraints = .{ | | |
| 5927 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, | | |
| 5928 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, | | |
| 5929 | }, | | |
| 5930 | .patterns = &.{ | | |
| 5931 | .{ .src = .{ .to_mem, .to_mem } }, | | |
| 5932 | }, | | |
| 5933 | .extra_temps = .{ | | |
| 5934 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 5935 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, | | |
| 5936 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, | | |
| 5937 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, | | |
| 5938 | .unused, | | |
| 5939 | .unused, | | |
| 5940 | .unused, | | |
| 5941 | .unused, | | |
| 5942 | .unused, | | |
| 5943 | }, | | |
| 5944 | .dst_temps = .{.mem}, | | |
| 5945 | .clobbers = .{ .eflags = true }, | | |
| 5946 | .each = .{ .once = &.{ | | |
| 5947 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 5948 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | | |
| 5949 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | | |
| 5950 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, | | |
| 5951 | .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ }, | | |
| 5952 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ }, | | |
| 5953 | .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ }, | | |
| 5954 | .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, | | |
| 5955 | .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ }, | | |
| 5956 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 5957 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 5958 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 5959 | } }, | | |
| 5960 | }, .{ | | |
| 5961 | .required_features = .{ .avx, null, null, null }, | | |
| 5962 | .src_constraints = .{ | | |
| 5963 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | | |
| 5964 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | | |
| 5965 | }, | | |
| 5966 | .patterns = &.{ | | |
| 5967 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 5968 | }, | | |
| 5969 | .extra_temps = .{ | | |
| 5970 | .{ .type = .f64, .kind = .{ .rc = .sse } }, | | |
| 5971 | .unused, | | |
| 5972 | .unused, | | |
| 5973 | .unused, | | |
| 5974 | .unused, | | |
| 5975 | .unused, | | |
| 5976 | .unused, | | |
| 5977 | .unused, | | |
| 5978 | .unused, | | |
| 5979 | }, | | |
| 5980 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 5981 | .each = .{ .once = &.{ | | |
| 5982 | .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) }, | | |
| 5983 | .{ ._, .v_sd, .max, .dst0x, .src1x, .src0x, ._ }, | | |
| 5984 | .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, | | |
| 5985 | } }, | | |
| 5986 | }, .{ | | |
| 5987 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 5988 | .src_constraints = .{ | | |
| 5989 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | | |
| 5990 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | | |
| 5991 | }, | | |
| 5992 | .patterns = &.{ | | |
| 5993 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, | | |
| 5994 | }, | | |
| 5995 | .dst_temps = .{.{ .rc = .sse }}, | | |
| 5996 | .each = .{ .once = &.{ | | |
| 5997 | .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ }, | | |
| 5998 | .{ ._, ._sd, .max, .dst0x, .src0x, ._, ._ }, | | |
| 5999 | .{ ._, ._sd, .cmp, .src0x, .src0x, .vp(.unord), ._ }, | | |
| 6000 | .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ }, | | |
| 6001 | } }, | | |
| 6002 | }, .{ | | |
| 6003 | .required_features = .{ .sse2, null, null, null }, | | |
| 6004 | .src_constraints = .{ | | |
| 6005 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | | |
| 6006 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | | |
| 6007 | }, | | |
| 6008 | .patterns = &.{ | | |
| 6009 | .{ .src = .{ .to_mut_sse, .to_sse } }, | | |
| 6010 | }, | | |
| 6011 | .extra_temps = .{ | | |
| 6012 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, | | |
| 6013 | .unused, | | |
| 6014 | .unused, | | |
| 6015 | .unused, | | |
| 6016 | .unused, | | |
| 6017 | .unused, | | |
| 6018 | .unused, | | |
| 6019 | .unused, | | |
| 6020 | .unused, | | |
| 6021 | }, | | |
| 6022 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 6023 | .each = .{ .once = &.{ | | |
| 6024 | .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ }, | | |
| 6025 | .{ ._, ._sd, .max, .tmp0x, .src0x, ._, ._ }, | | |
| 6026 | .{ ._, ._sd, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, | | |
| 6027 | .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ }, | | |
| 6028 | .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ }, | | |
| 6029 | .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, | | |
| 6030 | } }, | | |
| 6031 | }, .{ | | |
| 6032 | .required_features = .{ .sse, null, null, null }, | | |
| 6033 | .src_constraints = .{ | | |
| 6034 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | | |
| 6035 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | | |
| 6036 | }, | | |
| 6037 | .patterns = &.{ | | |
| 6038 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | | |
| 6039 | }, | | |
| 6040 | .call_frame = .{ .alignment = .@"16" }, | | |
| 6041 | .extra_temps = .{ | | |
| 6042 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } }, | | |
| 6043 | .unused, | | |
| 6044 | .unused, | | |
| 6045 | .unused, | | |
| 6046 | .unused, | | |
| 6047 | .unused, | | |
| 6048 | .unused, | | |
| 6049 | .unused, | | |
| 6050 | .unused, | | |
| 6051 | }, | | |
| 6052 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 6053 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 6054 | .each = .{ .once = &.{ | | |
| 6055 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | | |
| 6056 | } }, | | |
| 6057 | }, .{ | | |
| 6058 | .required_features = .{ .avx, null, null, null }, | | |
| 6059 | .src_constraints = .{ | | |
| 6060 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | | |
| 6061 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | | |
| 6062 | }, | | |
| 6063 | .patterns = &.{ | | |
| 6064 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 6065 | }, | | |
| 6066 | .extra_temps = .{ | | |
| 6067 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, | | |
| 6068 | .unused, | | |
| 6069 | .unused, | | |
| 6070 | .unused, | | |
| 6071 | .unused, | | |
| 6072 | .unused, | | |
| 6073 | .unused, | | |
| 6074 | .unused, | | |
| 6075 | .unused, | | |
| 6076 | }, | | |
| 6077 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 6078 | .each = .{ .once = &.{ | | |
| 6079 | .{ ._, .v_pd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) }, | | |
| 6080 | .{ ._, .v_pd, .max, .dst0x, .src1x, .src0x, ._ }, | | |
| 6081 | .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, | | |
| 6082 | } }, | | |
| 6083 | }, .{ | | |
| 6084 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 6085 | .src_constraints = .{ | | |
| 6086 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | | |
| 6087 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | | |
| 6088 | }, | | |
| 6089 | .patterns = &.{ | | |
| 6090 | .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } }, | | |
| 6091 | .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } }, | | |
| 6092 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, | | |
| 6093 | }, | | |
| 6094 | .dst_temps = .{.{ .rc = .sse }}, | | |
| 6095 | .each = .{ .once = &.{ | | |
| 6096 | .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ }, | | |
| 6097 | .{ ._, ._pd, .max, .dst0x, .src0x, ._, ._ }, | | |
| 6098 | .{ ._, ._pd, .cmp, .src0x, .src0x, .vp(.unord), ._ }, | | |
| 6099 | .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ }, | | |
| 6100 | } }, | | |
| 6101 | }, .{ | | |
| 6102 | .required_features = .{ .sse2, null, null, null }, | | |
| 6103 | .src_constraints = .{ | | |
| 6104 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | | |
| 6105 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | | |
| 6106 | }, | | |
| 6107 | .patterns = &.{ | | |
| 6108 | .{ .src = .{ .to_mut_sse, .mem } }, | | |
| 6109 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | | |
| 6110 | .{ .src = .{ .to_mut_sse, .to_sse } }, | | |
| 6111 | }, | | |
| 6112 | .extra_temps = .{ | | |
| 6113 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, | | |
| 6114 | .unused, | | |
| 6115 | .unused, | | |
| 6116 | .unused, | | |
| 6117 | .unused, | | |
| 6118 | .unused, | | |
| 6119 | .unused, | | |
| 6120 | .unused, | | |
| 6121 | .unused, | | |
| 6122 | }, | | |
| 6123 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 6124 | .each = .{ .once = &.{ | | |
| 6125 | .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ }, | | |
| 6126 | .{ ._, ._pd, .max, .tmp0x, .src0x, ._, ._ }, | | |
| 6127 | .{ ._, ._pd, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, | | |
| 6128 | .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ }, | | |
| 6129 | .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ }, | | |
| 6130 | .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, | | |
| 6131 | } }, | | |
| 6132 | }, .{ | | |
| 6133 | .required_features = .{ .avx, null, null, null }, | | |
| 6134 | .src_constraints = .{ | | |
| 6135 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, | | |
| 6136 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, | | |
| 6137 | }, | | |
| 6138 | .patterns = &.{ | | |
| 6139 | .{ .src = .{ .to_sse, .to_sse } }, | | |
| 6140 | }, | | |
| 6141 | .extra_temps = .{ | | |
| 6142 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, | | |
| 6143 | .unused, | | |
| 6144 | .unused, | | |
| 6145 | .unused, | | |
| 6146 | .unused, | | |
| 6147 | .unused, | | |
| 6148 | .unused, | | |
| 6149 | .unused, | | |
| 6150 | .unused, | | |
| 6151 | }, | | |
| 6152 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 6153 | .each = .{ .once = &.{ | | |
| 6154 | .{ ._, .v_pd, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) }, | | |
| 6155 | .{ ._, .v_pd, .max, .dst0y, .src1y, .src0y, ._ }, | | |
| 6156 | .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .src1y, .tmp0y }, | | |
| 6157 | } }, | | |
| 6158 | }, .{ | | |
| 6159 | .required_features = .{ .avx, null, null, null }, | | |
| 6160 | .src_constraints = .{ | | |
| 6161 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, | | |
| 6162 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, | | |
| 6163 | }, | | |
| 6164 | .patterns = &.{ | | |
| 6165 | .{ .src = .{ .to_mem, .to_mem } }, | | |
| 6166 | }, | | |
| 6167 | .extra_temps = .{ | | |
| 6168 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 6169 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, | | |
| 6170 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, | | |
| 6171 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, | | |
| 6172 | .unused, | | |
| 6173 | .unused, | | |
| 6174 | .unused, | | |
| 6175 | .unused, | | |
| 6176 | .unused, | | |
| 6177 | }, | | |
| 6178 | .dst_temps = .{.mem}, | | |
| 6179 | .clobbers = .{ .eflags = true }, | | |
| 6180 | .each = .{ .once = &.{ | | |
| 6181 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 6182 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | | |
| 6183 | .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, | | |
| 6184 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, | | |
| 6185 | .{ ._, .v_pd, .max, .tmp1y, .tmp2y, .tmp1y, ._ }, | | |
| 6186 | .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, | | |
| 6187 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | | |
| 6188 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | | |
| 6189 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 6190 | } }, | | |
| 6191 | }, .{ | | |
| 6192 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 6193 | .src_constraints = .{ | | |
| 6194 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, | | |
| 6195 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, | | |
| 6196 | }, | | |
| 6197 | .patterns = &.{ | | |
| 6198 | .{ .src = .{ .to_mem, .to_mem } }, | | |
| 6199 | }, | | |
| 6200 | .extra_temps = .{ | | |
| 6201 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 6202 | .{ .type = .vector_2_f64, .kind = .{ .reg = .xmm0 } }, | | |
| 6203 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, | | |
| 6204 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, | | |
| 6205 | .unused, | | |
| 6206 | .unused, | | |
| 6207 | .unused, | | |
| 6208 | .unused, | | |
| 6209 | .unused, | | |
| 6210 | }, | | |
| 6211 | .dst_temps = .{.mem}, | | |
| 6212 | .clobbers = .{ .eflags = true }, | | |
| 6213 | .each = .{ .once = &.{ | | |
| 6214 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 6215 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | | |
| 6216 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | | |
| 6217 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, | | |
| 6218 | .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ }, | | |
| 6219 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, | | |
| 6220 | .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, | | |
| 6221 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | | |
| 6222 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 6223 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 6224 | } }, | | |
| 6225 | }, .{ | | |
| 6226 | .required_features = .{ .sse2, null, null, null }, | | |
| 6227 | .src_constraints = .{ | | |
| 6228 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, | | |
| 6229 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, | | |
| 6230 | }, | | |
| 6231 | .patterns = &.{ | | |
| 6232 | .{ .src = .{ .to_mem, .to_mem } }, | | |
| 6233 | }, | | |
| 6234 | .extra_temps = .{ | | |
| 6235 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 6236 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, | | |
| 6237 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, | | |
| 6238 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, | | |
| 6239 | .unused, | | |
| 6240 | .unused, | | |
| 6241 | .unused, | | |
| 6242 | .unused, | | |
| 6243 | .unused, | | |
| 6244 | }, | | |
| 6245 | .dst_temps = .{.mem}, | | |
| 6246 | .clobbers = .{ .eflags = true }, | | |
| 6247 | .each = .{ .once = &.{ | | |
| 6248 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 6249 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | | |
| 6250 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | | |
| 6251 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, | | |
| 6252 | .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ }, | | |
| 6253 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ }, | | |
| 6254 | .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ }, | | |
| 6255 | .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, | | |
| 6256 | .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ }, | | |
| 6257 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 6258 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 5994 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6259 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5995 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6260 | } }, | 5996 | } }, |
| 6261 | }, .{ | 5997 | }, .{ |
| 6262 | .required_features = .{ .sse, null, null, null }, | 5998 | .required_features = .{ .sse, null, null, null }, |
| 6263 | .src_constraints = .{ | 5999 | .src_constraints = .{ |
| 6264 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, | 6000 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 6265 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, | 6001 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 6002 | .any, |
| 6266 | }, | 6003 | }, |
| 6267 | .patterns = &.{ | 6004 | .patterns = &.{ |
| 6268 | .{ .src = .{ .to_mem, .to_mem } }, | 6005 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 6269 | }, | 6006 | }, |
| 6270 | .call_frame = .{ .alignment = .@"16" }, | 6007 | .call_frame = .{ .alignment = .@"16" }, |
| 6271 | .extra_temps = .{ | 6008 | .extra_temps = .{ |
| 6272 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 6009 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 6273 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, | 6010 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 6274 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, | 6011 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 6275 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } }, | 6012 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, |
| 6276 | .unused, | 6013 | .unused, |
| 6277 | .unused, | 6014 | .unused, |
| 6278 | .unused, | 6015 | .unused, |
| ... | @@ -6282,372 +6019,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6282,372 +6019,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6282 | .dst_temps = .{.mem}, | 6019 | .dst_temps = .{.mem}, |
| 6283 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 6020 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6284 | .each = .{ .once = &.{ | 6021 | .each = .{ .once = &.{ |
| 6285 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 6022 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 6286 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, | 6023 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 6287 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, | 6024 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 6288 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | | |
| 6289 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | | |
| 6290 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 6025 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 6291 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, | 6026 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 6292 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 6293 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 6294 | } }, | | |
| 6295 | }, .{ | | |
| 6296 | .required_features = .{ .x87, .cmov, null, null }, | | |
| 6297 | .src_constraints = .{ | | |
| 6298 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, | | |
| 6299 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, | | |
| 6300 | }, | | |
| 6301 | .patterns = &.{ | | |
| 6302 | .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, | | |
| 6303 | .{ .src = .{ .mem, .to_x87 } }, | | |
| 6304 | .{ .src = .{ .to_x87, .to_x87 } }, | | |
| 6305 | }, | | |
| 6306 | .extra_temps = .{ | | |
| 6307 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | | |
| 6308 | .unused, | | |
| 6309 | .unused, | | |
| 6310 | .unused, | | |
| 6311 | .unused, | | |
| 6312 | .unused, | | |
| 6313 | .unused, | | |
| 6314 | .unused, | | |
| 6315 | .unused, | | |
| 6316 | }, | | |
| 6317 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }}, | | |
| 6318 | .clobbers = .{ .eflags = true }, | | |
| 6319 | .each = .{ .once = &.{ | | |
| 6320 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, | | |
| 6321 | .{ ._, .f_, .ucomi, .tmp0t, .tmp0t, ._, ._ }, | | |
| 6322 | .{ ._, .f_u, .cmov, .tmp0t, .src1t, ._, ._ }, | | |
| 6323 | .{ ._, .f_, .xch, .src1t, ._, ._, ._ }, | | |
| 6324 | .{ ._, .f_, .ucomi, .tmp0t, .src1t, ._, ._ }, | | |
| 6325 | .{ ._, .f_, .xch, .src1t, ._, ._, ._ }, | | |
| 6326 | .{ ._, .f_nb, .cmov, .tmp0t, .src1t, ._, ._ }, | | |
| 6327 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, | | |
| 6328 | } }, | | |
| 6329 | }, .{ | | |
| 6330 | .required_features = .{ .sahf, .x87, null, null }, | | |
| 6331 | .src_constraints = .{ | | |
| 6332 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, | | |
| 6333 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, | | |
| 6334 | }, | | |
| 6335 | .patterns = &.{ | | |
| 6336 | .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, | | |
| 6337 | .{ .src = .{ .mem, .to_x87 } }, | | |
| 6338 | .{ .src = .{ .to_x87, .to_x87 } }, | | |
| 6339 | }, | | |
| 6340 | .extra_temps = .{ | | |
| 6341 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | | |
| 6342 | .{ .type = .u8, .kind = .{ .reg = .ah } }, | | |
| 6343 | .unused, | | |
| 6344 | .unused, | | |
| 6345 | .unused, | | |
| 6346 | .unused, | | |
| 6347 | .unused, | | |
| 6348 | .unused, | | |
| 6349 | .unused, | | |
| 6350 | }, | | |
| 6351 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }}, | | |
| 6352 | .clobbers = .{ .eflags = true }, | | |
| 6353 | .each = .{ .once = &.{ | | |
| 6354 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, | | |
| 6355 | .{ ._, .f_, .ucom, .tmp0t, ._, ._, ._ }, | | |
| 6356 | .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ }, | | |
| 6357 | .{ ._, ._, .sahf, ._, ._, ._, ._ }, | | |
| 6358 | .{ ._, ._p, .j, .@"0f", ._, ._, ._ }, | | |
| 6359 | .{ ._, .f_, .xch, .src1t, ._, ._, ._ }, | | |
| 6360 | .{ ._, .f_, .ucom, .src1t, ._, ._, ._ }, | | |
| 6361 | .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ }, | | |
| 6362 | .{ ._, .f_, .xch, .src1t, ._, ._, ._ }, | | |
| 6363 | .{ ._, ._, .sahf, ._, ._, ._, ._ }, | | |
| 6364 | .{ ._, ._b, .j, .@"1f", ._, ._, ._ }, | | |
| 6365 | .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ }, | | |
| 6366 | .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, | | |
| 6367 | .{ .@"1:", .f_p, .st, .dst0t, ._, ._, ._ }, | | |
| 6368 | } }, | | |
| 6369 | }, .{ | | |
| 6370 | .required_features = .{ .x87, null, null, null }, | | |
| 6371 | .src_constraints = .{ | | |
| 6372 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, | | |
| 6373 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, | | |
| 6374 | }, | | |
| 6375 | .patterns = &.{ | | |
| 6376 | .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, | | |
| 6377 | .{ .src = .{ .mem, .to_x87 } }, | | |
| 6378 | .{ .src = .{ .to_x87, .to_x87 } }, | | |
| 6379 | }, | | |
| 6380 | .extra_temps = .{ | | |
| 6381 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | | |
| 6382 | .{ .type = .u8, .kind = .{ .reg = .ah } }, | | |
| 6383 | .unused, | | |
| 6384 | .unused, | | |
| 6385 | .unused, | | |
| 6386 | .unused, | | |
| 6387 | .unused, | | |
| 6388 | .unused, | | |
| 6389 | .unused, | | |
| 6390 | }, | | |
| 6391 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }}, | | |
| 6392 | .clobbers = .{ .eflags = true }, | | |
| 6393 | .each = .{ .once = &.{ | | |
| 6394 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, | | |
| 6395 | .{ ._, .f_, .xam, ._, ._, ._, ._ }, | | |
| 6396 | .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ }, | | |
| 6397 | .{ ._, ._, .@"test", .tmp1b, .si(0b1_000_100), ._, ._ }, | | |
| 6398 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, | | |
| 6399 | .{ ._, .f_, .xch, .src1t, ._, ._, ._ }, | | |
| 6400 | .{ ._, .f_, .ucom, .src1t, ._, ._, ._ }, | | |
| 6401 | .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ }, | | |
| 6402 | .{ ._, .f_, .xch, .src1t, ._, ._, ._ }, | | |
| 6403 | .{ ._, ._, .@"test", .tmp1b, .si(0b0_000_001), ._, ._ }, | | |
| 6404 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, | | |
| 6405 | .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ }, | | |
| 6406 | .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, | | |
| 6407 | .{ .@"1:", .f_p, .st, .dst0t, ._, ._, ._ }, | | |
| 6408 | } }, | | |
| 6409 | }, .{ | | |
| 6410 | .required_features = .{ .x87, .cmov, null, null }, | | |
| 6411 | .src_constraints = .{ | | |
| 6412 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | | |
| 6413 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | | |
| 6414 | }, | | |
| 6415 | .patterns = &.{ | | |
| 6416 | .{ .src = .{ .to_mem, .to_mem } }, | | |
| 6417 | }, | | |
| 6418 | .extra_temps = .{ | | |
| 6419 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 6420 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | | |
| 6421 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | | |
| 6422 | .unused, | | |
| 6423 | .unused, | | |
| 6424 | .unused, | | |
| 6425 | .unused, | | |
| 6426 | .unused, | | |
| 6427 | .unused, | | |
| 6428 | }, | | |
| 6429 | .dst_temps = .{.mem}, | | |
| 6430 | .clobbers = .{ .eflags = true }, | | |
| 6431 | .each = .{ .once = &.{ | | |
| 6432 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 6433 | .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, | | |
| 6434 | .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, | | |
| 6435 | .{ ._, .f_, .ucomi, .tmp1t, .tmp1t, ._, ._ }, | | |
| 6436 | .{ ._, .f_u, .cmov, .tmp1t, .tmp2t, ._, ._ }, | | |
| 6437 | .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ }, | | |
| 6438 | .{ ._, .f_, .ucomi, .tmp1t, .tmp2t, ._, ._ }, | | |
| 6439 | .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ }, | | |
| 6440 | .{ ._, .f_nb, .cmov, .tmp1t, .tmp2t, ._, ._ }, | | |
| 6441 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ }, | | |
| 6442 | .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ }, | | |
| 6443 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 6444 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 6445 | } }, | | |
| 6446 | }, .{ | | |
| 6447 | .required_features = .{ .sahf, .x87, null, null }, | | |
| 6448 | .src_constraints = .{ | | |
| 6449 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | | |
| 6450 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | | |
| 6451 | }, | | |
| 6452 | .patterns = &.{ | | |
| 6453 | .{ .src = .{ .to_mem, .to_mem } }, | | |
| 6454 | }, | | |
| 6455 | .extra_temps = .{ | | |
| 6456 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 6457 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | | |
| 6458 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | | |
| 6459 | .{ .type = .u8, .kind = .{ .reg = .ah } }, | | |
| 6460 | .unused, | | |
| 6461 | .unused, | | |
| 6462 | .unused, | | |
| 6463 | .unused, | | |
| 6464 | .unused, | | |
| 6465 | }, | | |
| 6466 | .dst_temps = .{.mem}, | | |
| 6467 | .clobbers = .{ .eflags = true }, | | |
| 6468 | .each = .{ .once = &.{ | | |
| 6469 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 6470 | .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, | | |
| 6471 | .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, | | |
| 6472 | .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ }, | | |
| 6473 | .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, | | |
| 6474 | .{ ._, ._, .sahf, ._, ._, ._, ._ }, | | |
| 6475 | .{ ._, ._p, .j, .@"1f", ._, ._, ._ }, | | |
| 6476 | .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ }, | | |
| 6477 | .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ }, | | |
| 6478 | .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, | | |
| 6479 | .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ }, | | |
| 6480 | .{ ._, ._, .sahf, ._, ._, ._, ._ }, | | |
| 6481 | .{ ._, ._b, .j, .@"2f", ._, ._, ._ }, | | |
| 6482 | .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ }, | | |
| 6483 | .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ }, | | |
| 6484 | .{ .@"2:", .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ }, | | |
| 6485 | .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ }, | | |
| 6486 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 6487 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 6488 | } }, | | |
| 6489 | }, .{ | | |
| 6490 | .required_features = .{ .x87, null, null, null }, | | |
| 6491 | .src_constraints = .{ | | |
| 6492 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | | |
| 6493 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | | |
| 6494 | }, | | |
| 6495 | .patterns = &.{ | | |
| 6496 | .{ .src = .{ .to_mem, .to_mem } }, | | |
| 6497 | }, | | |
| 6498 | .extra_temps = .{ | | |
| 6499 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 6500 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | | |
| 6501 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | | |
| 6502 | .{ .type = .u8, .kind = .{ .reg = .ah } }, | | |
| 6503 | .unused, | | |
| 6504 | .unused, | | |
| 6505 | .unused, | | |
| 6506 | .unused, | | |
| 6507 | .unused, | | |
| 6508 | }, | | |
| 6509 | .dst_temps = .{.mem}, | | |
| 6510 | .clobbers = .{ .eflags = true }, | | |
| 6511 | .each = .{ .once = &.{ | | |
| 6512 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 6513 | .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, | | |
| 6514 | .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, | | |
| 6515 | .{ ._, .f_, .xam, ._, ._, ._, ._ }, | | |
| 6516 | .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, | | |
| 6517 | .{ ._, ._, .@"test", .tmp3b, .si(0b1_000_100), ._, ._ }, | | |
| 6518 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, | | |
| 6519 | .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ }, | | |
| 6520 | .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ }, | | |
| 6521 | .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, | | |
| 6522 | .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ }, | | |
| 6523 | .{ ._, ._, .@"test", .tmp3b, .si(0b0_000_001), ._, ._ }, | | |
| 6524 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, | | |
| 6525 | .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ }, | | |
| 6526 | .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ }, | | |
| 6527 | .{ .@"2:", .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ }, | | |
| 6528 | .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ }, | | |
| 6529 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 6530 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 6531 | } }, | | |
| 6532 | }, .{ | | |
| 6533 | .required_features = .{ .sse, null, null, null }, | | |
| 6534 | .src_constraints = .{ | | |
| 6535 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, | | |
| 6536 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, | | |
| 6537 | }, | | |
| 6538 | .patterns = &.{ | | |
| 6539 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | | |
| 6540 | }, | | |
| 6541 | .call_frame = .{ .alignment = .@"16" }, | | |
| 6542 | .extra_temps = .{ | | |
| 6543 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } }, | | |
| 6544 | .unused, | | |
| 6545 | .unused, | | |
| 6546 | .unused, | | |
| 6547 | .unused, | | |
| 6548 | .unused, | | |
| 6549 | .unused, | | |
| 6550 | .unused, | | |
| 6551 | .unused, | | |
| 6552 | }, | | |
| 6553 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 6554 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 6555 | .each = .{ .once = &.{ | | |
| 6556 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | | |
| 6557 | } }, | | |
| 6558 | }, .{ | | |
| 6559 | .required_features = .{ .avx, null, null, null }, | | |
| 6560 | .src_constraints = .{ | | |
| 6561 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | | |
| 6562 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | | |
| 6563 | }, | | |
| 6564 | .patterns = &.{ | | |
| 6565 | .{ .src = .{ .to_mem, .to_mem } }, | | |
| 6566 | }, | | |
| 6567 | .call_frame = .{ .alignment = .@"16" }, | | |
| 6568 | .extra_temps = .{ | | |
| 6569 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 6570 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | | |
| 6571 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | | |
| 6572 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } }, | | |
| 6573 | .unused, | | |
| 6574 | .unused, | | |
| 6575 | .unused, | | |
| 6576 | .unused, | | |
| 6577 | .unused, | | |
| 6578 | }, | | |
| 6579 | .dst_temps = .{.mem}, | | |
| 6580 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 6581 | .each = .{ .once = &.{ | | |
| 6582 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 6583 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | | |
| 6584 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | | |
| 6585 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | | |
| 6586 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 6587 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 6588 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 6589 | } }, | | |
| 6590 | }, .{ | | |
| 6591 | .required_features = .{ .sse2, null, null, null }, | | |
| 6592 | .src_constraints = .{ | | |
| 6593 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | | |
| 6594 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | | |
| 6595 | }, | | |
| 6596 | .patterns = &.{ | | |
| 6597 | .{ .src = .{ .to_mem, .to_mem } }, | | |
| 6598 | }, | | |
| 6599 | .call_frame = .{ .alignment = .@"16" }, | | |
| 6600 | .extra_temps = .{ | | |
| 6601 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 6602 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | | |
| 6603 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | | |
| 6604 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } }, | | |
| 6605 | .unused, | | |
| 6606 | .unused, | | |
| 6607 | .unused, | | |
| 6608 | .unused, | | |
| 6609 | .unused, | | |
| 6610 | }, | | |
| 6611 | .dst_temps = .{.mem}, | | |
| 6612 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 6613 | .each = .{ .once = &.{ | | |
| 6614 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 6615 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | | |
| 6616 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | | |
| 6617 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | | |
| 6618 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 6619 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 6620 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 6621 | } }, | | |
| 6622 | }, .{ | | |
| 6623 | .required_features = .{ .sse, null, null, null }, | | |
| 6624 | .src_constraints = .{ | | |
| 6625 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | | |
| 6626 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | | |
| 6627 | }, | | |
| 6628 | .patterns = &.{ | | |
| 6629 | .{ .src = .{ .to_mem, .to_mem } }, | | |
| 6630 | }, | | |
| 6631 | .call_frame = .{ .alignment = .@"16" }, | | |
| 6632 | .extra_temps = .{ | | |
| 6633 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 6634 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | | |
| 6635 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | | |
| 6636 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } }, | | |
| 6637 | .unused, | | |
| 6638 | .unused, | | |
| 6639 | .unused, | | |
| 6640 | .unused, | | |
| 6641 | .unused, | | |
| 6642 | }, | | |
| 6643 | .dst_temps = .{.mem}, | | |
| 6644 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 6645 | .each = .{ .once = &.{ | | |
| 6646 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 6647 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | | |
| 6648 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | | |
| 6649 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | | |
| 6650 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 6651 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 6027 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6652 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 6028 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6653 | } }, | 6029 | } }, |
| ... | @@ -6662,440 +6038,9683 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6662,440 +6038,9683 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6662 | }; | 6038 | }; |
| 6663 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); | 6039 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 6664 | }, | 6040 | }, |
| 6665 | .min => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else { | 6041 | .div_trunc, .div_floor => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, air_tag) else fallback: { |
| 6666 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; | 6042 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| | 6043 | if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, air_tag); |
| 6667 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); | 6044 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| 6668 | var res: [1]Temp = undefined; | 6045 | var res: [1]Temp = undefined; |
| 6669 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ | 6046 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) { |
| 6670 | .required_features = .{ .cmov, null, null, null }, | 6047 | else => unreachable, |
| 6671 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } }, | 6048 | .div_trunc => .zero, |
| 6672 | .patterns = &.{ | 6049 | .div_floor => .down, |
| 6673 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6050 | })) { |
| 6674 | }, | 6051 | else => unreachable, |
| 6675 | .dst_temps = .{.{ .ref = .src0 }}, | 6052 | inline .zero, .down => |direction| comptime &.{ .{ |
| 6676 | .clobbers = .{ .eflags = true }, | 6053 | .required_features = .{ .f16c, null, null, null }, |
| 6677 | .each = .{ .once = &.{ | 6054 | .src_constraints = .{ |
| 6678 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 6055 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 6679 | .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ }, | 6056 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 6680 | } }, | 6057 | .any, |
| 6681 | }, .{ | 6058 | }, |
| 6682 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } }, | 6059 | .patterns = &.{ |
| 6683 | .patterns = &.{ | 6060 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 6684 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6061 | }, |
| 6685 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6062 | .extra_temps = .{ |
| 6686 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6063 | .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 6687 | }, | 6064 | .unused, |
| 6688 | .dst_temps = .{.{ .ref = .src0 }}, | 6065 | .unused, |
| 6689 | .clobbers = .{ .eflags = true }, | 6066 | .unused, |
| 6690 | .each = .{ .once = &.{ | 6067 | .unused, |
| 6691 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 6068 | .unused, |
| 6692 | .{ ._, ._nge, .j, .@"0f", ._, ._, ._ }, | 6069 | .unused, |
| 6693 | .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ }, | 6070 | .unused, |
| 6694 | } }, | 6071 | .unused, |
| 6695 | }, .{ | 6072 | }, |
| 6696 | .required_features = .{ .cmov, null, null, null }, | 6073 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 6697 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } }, | 6074 | .each = .{ .once = &.{ |
| 6698 | .patterns = &.{ | 6075 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 6699 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6076 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| 6700 | }, | 6077 | .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ }, |
| 6701 | .dst_temps = .{.{ .ref = .src0 }}, | 6078 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 6702 | .clobbers = .{ .eflags = true }, | 6079 | .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ }, |
| 6703 | .each = .{ .once = &.{ | 6080 | .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) }, |
| 6704 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 6081 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 6705 | .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ }, | 6082 | } }, |
| 6706 | } }, | 6083 | }, .{ |
| 6707 | }, .{ | 6084 | .required_features = .{ .sse, null, null, null }, |
| 6708 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } }, | 6085 | .src_constraints = .{ |
| 6709 | .patterns = &.{ | 6086 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 6710 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6087 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 6711 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6088 | .any, |
| 6712 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6089 | }, |
| 6713 | }, | 6090 | .patterns = &.{ |
| 6714 | .dst_temps = .{.{ .ref = .src0 }}, | 6091 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 6715 | .clobbers = .{ .eflags = true }, | 6092 | }, |
| 6716 | .each = .{ .once = &.{ | 6093 | .call_frame = .{ .alignment = .@"16" }, |
| 6717 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 6094 | .extra_temps = .{ |
| 6718 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, | 6095 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| 6719 | .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ }, | 6096 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| 6720 | } }, | 6097 | else => unreachable, |
| 6721 | }, .{ | 6098 | .zero => "__trunch", |
| 6722 | .required_features = .{ .cmov, null, null, null }, | 6099 | .down => "__floorh", |
| 6723 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } }, | 6100 | } } } }, |
| 6724 | .patterns = &.{ | 6101 | .unused, |
| 6725 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6102 | .unused, |
| 6726 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6103 | .unused, |
| 6727 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6104 | .unused, |
| 6728 | }, | 6105 | .unused, |
| 6729 | .dst_temps = .{.{ .ref = .src0 }}, | 6106 | .unused, |
| 6730 | .clobbers = .{ .eflags = true }, | 6107 | .unused, |
| 6731 | .each = .{ .once = &.{ | 6108 | }, |
| 6732 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 6109 | .dst_temps = .{.{ .ref = .src0 }}, |
| 6733 | .{ ._, ._ge, .cmov, .dst0w, .src1w, ._, ._ }, | 6110 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6734 | } }, | 6111 | .each = .{ .once = &.{ |
| 6735 | }, .{ | 6112 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 6736 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } }, | 6113 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| 6737 | .patterns = &.{ | 6114 | } }, |
| 6738 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6115 | }, .{ |
| 6739 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6116 | .required_features = .{ .f16c, null, null, null }, |
| 6740 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6117 | .src_constraints = .{ |
| 6741 | }, | 6118 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| 6742 | .dst_temps = .{.{ .ref = .src0 }}, | 6119 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| 6743 | .clobbers = .{ .eflags = true }, | 6120 | .any, |
| 6744 | .each = .{ .once = &.{ | 6121 | }, |
| 6745 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 6122 | .patterns = &.{ |
| 6746 | .{ ._, ._nge, .j, .@"0f", ._, ._, ._ }, | 6123 | .{ .src = .{ .mem, .mem, .none } }, |
| 6747 | .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ }, | 6124 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 6748 | } }, | 6125 | .{ .src = .{ .mem, .to_sse, .none } }, |
| 6749 | }, .{ | 6126 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 6750 | .required_features = .{ .cmov, null, null, null }, | 6127 | }, |
| 6751 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } }, | 6128 | .extra_temps = .{ |
| 6752 | .patterns = &.{ | 6129 | .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 6753 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6130 | .unused, |
| 6754 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6131 | .unused, |
| 6755 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6132 | .unused, |
| 6756 | }, | 6133 | .unused, |
| 6757 | .dst_temps = .{.{ .ref = .src0 }}, | 6134 | .unused, |
| 6758 | .clobbers = .{ .eflags = true }, | 6135 | .unused, |
| 6759 | .each = .{ .once = &.{ | 6136 | .unused, |
| 6760 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 6137 | .unused, |
| 6761 | .{ ._, ._ae, .cmov, .dst0w, .src1w, ._, ._ }, | 6138 | }, |
| 6762 | } }, | 6139 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 6763 | }, .{ | 6140 | .each = .{ .once = &.{ |
| 6764 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } }, | 6141 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 6765 | .patterns = &.{ | 6142 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| 6766 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6143 | .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ }, |
| 6767 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6144 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 6768 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6145 | .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ }, |
| 6769 | }, | 6146 | .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| 6770 | .dst_temps = .{.{ .ref = .src0 }}, | 6147 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 6771 | .clobbers = .{ .eflags = true }, | 6148 | } }, |
| 6772 | .each = .{ .once = &.{ | 6149 | }, .{ |
| 6773 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 6150 | .required_features = .{ .f16c, null, null, null }, |
| 6774 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, | 6151 | .src_constraints = .{ |
| 6775 | .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ }, | 6152 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| 6776 | } }, | 6153 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| 6777 | }, .{ | 6154 | .any, |
| 6778 | .required_features = .{ .cmov, null, null, null }, | 6155 | }, |
| 6779 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } }, | 6156 | .patterns = &.{ |
| 6780 | .patterns = &.{ | 6157 | .{ .src = .{ .mem, .mem, .none } }, |
| 6781 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6158 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 6782 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6159 | .{ .src = .{ .mem, .to_sse, .none } }, |
| 6783 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6160 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 6784 | }, | 6161 | }, |
| 6785 | .dst_temps = .{.{ .ref = .src0 }}, | 6162 | .extra_temps = .{ |
| 6786 | .clobbers = .{ .eflags = true }, | 6163 | .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 6787 | .each = .{ .once = &.{ | 6164 | .unused, |
| 6788 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | 6165 | .unused, |
| 6789 | .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ }, | 6166 | .unused, |
| 6790 | } }, | 6167 | .unused, |
| 6791 | }, .{ | 6168 | .unused, |
| 6792 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } }, | 6169 | .unused, |
| 6793 | .patterns = &.{ | 6170 | .unused, |
| 6794 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6171 | .unused, |
| 6795 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6172 | }, |
| 6796 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6173 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 6797 | }, | 6174 | .each = .{ .once = &.{ |
| 6798 | .dst_temps = .{.{ .ref = .src0 }}, | 6175 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| 6799 | .clobbers = .{ .eflags = true }, | 6176 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, |
| 6800 | .each = .{ .once = &.{ | 6177 | .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ }, |
| 6801 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | 6178 | .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, |
| 6802 | .{ ._, ._nge, .j, .@"0f", ._, ._, ._ }, | 6179 | .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, |
| 6803 | .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ }, | 6180 | .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| 6804 | } }, | 6181 | .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, |
| 6805 | }, .{ | 6182 | } }, |
| 6806 | .required_features = .{ .cmov, null, null, null }, | 6183 | }, .{ |
| 6807 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } }, | 6184 | .required_features = .{ .f16c, null, null, null }, |
| 6808 | .patterns = &.{ | 6185 | .src_constraints = .{ |
| 6809 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6186 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| 6810 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6187 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| 6811 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6188 | .any, |
| 6812 | }, | 6189 | }, |
| 6813 | .dst_temps = .{.{ .ref = .src0 }}, | 6190 | .patterns = &.{ |
| 6814 | .clobbers = .{ .eflags = true }, | 6191 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 6815 | .each = .{ .once = &.{ | 6192 | }, |
| 6816 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | 6193 | .extra_temps = .{ |
| 6817 | .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ }, | 6194 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 6818 | } }, | 6195 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 6819 | }, .{ | 6196 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 6820 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } }, | 6197 | .unused, |
| 6821 | .patterns = &.{ | 6198 | .unused, |
| 6822 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6199 | .unused, |
| 6823 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6200 | .unused, |
| 6824 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6201 | .unused, |
| 6825 | }, | 6202 | .unused, |
| 6826 | .dst_temps = .{.{ .ref = .src0 }}, | 6203 | }, |
| 6827 | .clobbers = .{ .eflags = true }, | 6204 | .dst_temps = .{.mem}, |
| 6828 | .each = .{ .once = &.{ | 6205 | .clobbers = .{ .eflags = true }, |
| 6829 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | 6206 | .each = .{ .once = &.{ |
| 6830 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, | 6207 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 6831 | .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ }, | 6208 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 6832 | } }, | 6209 | .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 6833 | }, .{ | 6210 | .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ }, |
| 6834 | .required_features = .{ .@"64bit", .cmov, null, null }, | 6211 | .{ ._, .v_, .cvtps2ph, .tmp1x, .tmp1y, .rm(.{}), ._ }, |
| 6835 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } }, | 6212 | .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ }, |
| 6836 | .patterns = &.{ | 6213 | .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| 6837 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6214 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, |
| 6838 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6215 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6839 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6216 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6840 | }, | 6217 | } }, |
| 6841 | .dst_temps = .{.{ .ref = .src0 }}, | 6218 | }, .{ |
| 6842 | .clobbers = .{ .eflags = true }, | 6219 | .required_features = .{ .avx, null, null, null }, |
| 6843 | .each = .{ .once = &.{ | 6220 | .src_constraints = .{ |
| 6844 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | 6221 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 6845 | .{ ._, ._ge, .cmov, .dst0q, .src1q, ._, ._ }, | 6222 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 6846 | } }, | 6223 | .any, |
| 6847 | }, .{ | 6224 | }, |
| 6848 | .required_features = .{ .@"64bit", null, null, null }, | 6225 | .patterns = &.{ |
| 6849 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } }, | 6226 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 6850 | .patterns = &.{ | 6227 | }, |
| 6851 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6228 | .call_frame = .{ .alignment = .@"16" }, |
| 6852 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6229 | .extra_temps = .{ |
| 6853 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6230 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 6854 | }, | 6231 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 6855 | .dst_temps = .{.{ .ref = .src0 }}, | 6232 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 6856 | .clobbers = .{ .eflags = true }, | 6233 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| 6857 | .each = .{ .once = &.{ | 6234 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| 6858 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | 6235 | else => unreachable, |
| 6859 | .{ ._, ._nge, .j, .@"0f", ._, ._, ._ }, | 6236 | .zero => "__trunch", |
| 6860 | .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ }, | 6237 | .down => "__floorh", |
| 6861 | } }, | 6238 | } } } }, |
| 6862 | }, .{ | 6239 | .unused, |
| 6863 | .required_features = .{ .@"64bit", .cmov, null, null }, | 6240 | .unused, |
| 6864 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } }, | 6241 | .unused, |
| 6865 | .patterns = &.{ | 6242 | .unused, |
| 6866 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6243 | }, |
| 6867 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6244 | .dst_temps = .{.mem}, |
| 6868 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6245 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6869 | }, | 6246 | .each = .{ .once = &.{ |
| 6870 | .dst_temps = .{.{ .ref = .src0 }}, | 6247 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 6871 | .clobbers = .{ .eflags = true }, | 6248 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| 6872 | .each = .{ .once = &.{ | 6249 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| 6873 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | 6250 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, |
| 6874 | .{ ._, ._ae, .cmov, .dst0q, .src1q, ._, ._ }, | 6251 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 6875 | } }, | 6252 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 6876 | }, .{ | 6253 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| 6877 | .required_features = .{ .@"64bit", null, null, null }, | 6254 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 6878 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } }, | 6255 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6879 | .patterns = &.{ | 6256 | } }, |
| 6880 | .{ .src = .{ .to_mut_gpr, .mem } }, | 6257 | }, .{ |
| 6881 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 6258 | .required_features = .{ .sse4_1, null, null, null }, |
| 6882 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 6259 | .src_constraints = .{ |
| 6883 | }, | 6260 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 6884 | .dst_temps = .{.{ .ref = .src0 }}, | 6261 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 6885 | .clobbers = .{ .eflags = true }, | 6262 | .any, |
| 6886 | .each = .{ .once = &.{ | 6263 | }, |
| 6887 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | 6264 | .patterns = &.{ |
| 6888 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, | 6265 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 6889 | .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ }, | 6266 | }, |
| 6890 | } }, | 6267 | .call_frame = .{ .alignment = .@"16" }, |
| 6891 | }, .{ | 6268 | .extra_temps = .{ |
| 6892 | .required_features = .{ .@"64bit", .cmov, null, null }, | 6269 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 6893 | .src_constraints = .{ .any_signed_int, .any_signed_int }, | 6270 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 6894 | .patterns = &.{ | 6271 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 6895 | .{ .src = .{ .to_mem, .to_mem } }, | 6272 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| 6896 | }, | 6273 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| 6897 | .extra_temps = .{ | 6274 | else => unreachable, |
| 6898 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, | 6275 | .zero => "__trunch", |
| 6899 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, | 6276 | .down => "__floorh", |
| 6900 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, | 6277 | } } } }, |
| 6901 | .unused, | 6278 | .unused, |
| 6902 | .unused, | 6279 | .unused, |
| 6903 | .unused, | 6280 | .unused, |
| 6904 | .unused, | 6281 | .unused, |
| 6905 | .unused, | 6282 | }, |
| 6906 | .unused, | 6283 | .dst_temps = .{.mem}, |
| 6907 | }, | 6284 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6908 | .dst_temps = .{.mem}, | 6285 | .each = .{ .once = &.{ |
| 6909 | .clobbers = .{ .eflags = true }, | 6286 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 6910 | .each = .{ .once = &.{ | 6287 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 6911 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, | 6288 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 6912 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 6289 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| 6913 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, | 6290 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| 6914 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, | 6291 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 6915 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 6292 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 6916 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 6293 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| 6917 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, | 6294 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 6918 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, | 6295 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6919 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, | 6296 | } }, |
| 6920 | .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ }, | 6297 | }, .{ |
| 6921 | .{ ._, ._ge, .cmov, .tmp0p, .tmp1p, ._, ._ }, | 6298 | .required_features = .{ .sse2, null, null, null }, |
| 6922 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 6299 | .src_constraints = .{ |
| 6923 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, | 6300 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 6924 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 6301 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 6925 | } }, | 6302 | .any, |
| 6926 | }, .{ | 6303 | }, |
| 6927 | .required_features = .{ .@"64bit", null, null, null }, | 6304 | .patterns = &.{ |
| 6928 | .src_constraints = .{ .any_signed_int, .any_signed_int }, | 6305 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 6929 | .patterns = &.{ | 6306 | }, |
| 6930 | .{ .src = .{ .to_mem, .to_mem } }, | 6307 | .call_frame = .{ .alignment = .@"16" }, |
| 6931 | }, | 6308 | .extra_temps = .{ |
| 6932 | .extra_temps = .{ | 6309 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 6933 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, | 6310 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 6934 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, | 6311 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 6935 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, | 6312 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| 6936 | .unused, | 6313 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| 6937 | .unused, | 6314 | else => unreachable, |
| 6938 | .unused, | 6315 | .zero => "__trunch", |
| 6939 | .unused, | 6316 | .down => "__floorh", |
| 6940 | .unused, | 6317 | } } } }, |
| 6941 | .unused, | 6318 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| 6942 | }, | 6319 | .unused, |
| 6943 | .dst_temps = .{.mem}, | 6320 | .unused, |
| 6944 | .clobbers = .{ .eflags = true }, | 6321 | .unused, |
| 6945 | .each = .{ .once = &.{ | 6322 | }, |
| 6946 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, | 6323 | .dst_temps = .{.mem}, |
| 6947 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 6324 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6948 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, | 6325 | .each = .{ .once = &.{ |
| 6949 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, | 6326 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 6950 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 6327 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 6951 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 6328 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 6952 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, | 6329 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| 6953 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, | 6330 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| 6954 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, | 6331 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 6955 | .{ ._, ._nge, .j, .@"0f", ._, ._, ._ }, | 6332 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 6956 | .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ }, | 6333 | .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ }, |
| 6957 | .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 6334 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ }, |
| 6958 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, | 6335 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 6959 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 6336 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6960 | } }, | 6337 | } }, |
| 6961 | }, .{ | 6338 | }, .{ |
| 6962 | .required_features = .{ .@"64bit", .cmov, null, null }, | 6339 | .required_features = .{ .sse, null, null, null }, |
| 6963 | .src_constraints = .{ .any_unsigned_int, .any_unsigned_int }, | 6340 | .src_constraints = .{ |
| 6964 | .patterns = &.{ | 6341 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 6965 | .{ .src = .{ .to_mem, .to_mem } }, | 6342 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 6966 | }, | 6343 | .any, |
| 6967 | .extra_temps = .{ | 6344 | }, |
| 6968 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, | 6345 | .patterns = &.{ |
| 6969 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, | 6346 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 6970 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, | 6347 | }, |
| 6971 | .unused, | 6348 | .call_frame = .{ .alignment = .@"16" }, |
| 6972 | .unused, | 6349 | .extra_temps = .{ |
| 6973 | .unused, | 6350 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 6974 | .unused, | 6351 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| 6975 | .unused, | 6352 | .{ .type = .f32, .kind = .mem }, |
| 6976 | .unused, | 6353 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 6977 | }, | 6354 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 6978 | .dst_temps = .{.mem}, | 6355 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| 6979 | .clobbers = .{ .eflags = true }, | 6356 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| 6980 | .each = .{ .once = &.{ | 6357 | else => unreachable, |
| 6981 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, | 6358 | .zero => "__trunch", |
| 6982 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 6359 | .down => "__floorh", |
| 6983 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, | 6360 | } } } }, |
| 6984 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, | 6361 | .unused, |
| 6985 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 6362 | .unused, |
| 6986 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 6363 | }, |
| 6987 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, | 6364 | .dst_temps = .{.mem}, |
| 6988 | .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ }, | 6365 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6989 | .{ ._, ._ae, .cmov, .tmp0p, .tmp1p, ._, ._ }, | 6366 | .each = .{ .once = &.{ |
| 6990 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 6367 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 6991 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, | 6368 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 6992 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 6369 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| 6993 | } }, | 6370 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| 6994 | }, .{ | 6371 | .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 6995 | .required_features = .{ .@"64bit", null, null, null }, | 6372 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| 6996 | .src_constraints = .{ .any_unsigned_int, .any_unsigned_int }, | 6373 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| 6997 | .patterns = &.{ | 6374 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| 6998 | .{ .src = .{ .to_mem, .to_mem } }, | 6375 | .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, |
| 6999 | }, | 6376 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| 7000 | .extra_temps = .{ | 6377 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| 7001 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, | 6378 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 7002 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, | 6379 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 7003 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, | 6380 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 7004 | .unused, | 6381 | } }, |
| 7005 | .unused, | 6382 | }, .{ |
| 7006 | .unused, | 6383 | .required_features = .{ .avx, null, null, null }, |
| 7007 | .unused, | 6384 | .src_constraints = .{ |
| 7008 | .unused, | 6385 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 7009 | .unused, | 6386 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 7010 | }, | 6387 | .any, |
| 7011 | .dst_temps = .{.mem}, | 6388 | }, |
| 7012 | .clobbers = .{ .eflags = true }, | 6389 | .patterns = &.{ |
| 7013 | .each = .{ .once = &.{ | 6390 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 7014 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, | 6391 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 7015 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 6392 | }, |
| 7016 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, | 6393 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 7017 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, | 6394 | .each = .{ .once = &.{ |
| 7018 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 6395 | .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ }, |
| 7019 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 6396 | .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) }, |
| 7020 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, | 6397 | } }, |
| 7021 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, | 6398 | }, .{ |
| 7022 | .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ }, | 6399 | .required_features = .{ .sse4_1, null, null, null }, |
| 7023 | .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 6400 | .src_constraints = .{ |
| 7024 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, | 6401 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 7025 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 6402 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 7026 | } }, | 6403 | .any, |
| 7027 | }, .{ | 6404 | }, |
| 7028 | .required_features = .{ .avx, null, null, null }, | 6405 | .patterns = &.{ |
| 7029 | .src_constraints = .{ | 6406 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 7030 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 6407 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 7031 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 6408 | }, |
| 7032 | }, | 6409 | .dst_temps = .{.{ .ref = .src0 }}, |
| 7033 | .patterns = &.{ | 6410 | .each = .{ .once = &.{ |
| 7034 | .{ .src = .{ .to_sse, .mem } }, | 6411 | .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ }, |
| 7035 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 6412 | .{ ._, ._ss, .round, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| 7036 | .{ .src = .{ .to_sse, .to_sse } }, | 6413 | } }, |
| 7037 | }, | 6414 | }, .{ |
| 7038 | .dst_temps = .{.{ .rc = .sse }}, | 6415 | .required_features = .{ .sse, null, null, null }, |
| 7039 | .each = .{ .once = &.{ | 6416 | .src_constraints = .{ |
| 7040 | .{ ._, .vp_b, .mins, .dst0x, .src0x, .src1x, ._ }, | 6417 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 7041 | } }, | 6418 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 7042 | }, .{ | 6419 | .any, |
| 7043 | .required_features = .{ .sse4_1, null, null, null }, | 6420 | }, |
| 7044 | .src_constraints = .{ | 6421 | .patterns = &.{ |
| 7045 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 6422 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } }, |
| 7046 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 6423 | }, |
| 7047 | }, | 6424 | .call_frame = .{ .alignment = .@"16" }, |
| 7048 | .patterns = &.{ | 6425 | .extra_temps = .{ |
| 7049 | .{ .src = .{ .to_mut_sse, .mem } }, | 6426 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| 7050 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 6427 | else => unreachable, |
| 7051 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 6428 | .zero => "truncf", |
| 7052 | }, | 6429 | .down => "floorf", |
| 7053 | .dst_temps = .{.{ .ref = .src0 }}, | 6430 | } } } }, |
| 7054 | .each = .{ .once = &.{ | 6431 | .unused, |
| 7055 | .{ ._, .p_b, .mins, .dst0x, .src1x, ._, ._ }, | 6432 | .unused, |
| 7056 | } }, | 6433 | .unused, |
| 7057 | }, .{ | 6434 | .unused, |
| 7058 | .required_features = .{ .sse2, null, null, null }, | 6435 | .unused, |
| 7059 | .src_constraints = .{ | 6436 | .unused, |
| 7060 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 6437 | .unused, |
| 7061 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 6438 | .unused, |
| 7062 | }, | 6439 | }, |
| 7063 | .patterns = &.{ | 6440 | .dst_temps = .{.{ .ref = .src0 }}, |
| 7064 | .{ .src = .{ .to_mut_sse, .mem } }, | 6441 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 7065 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 6442 | .each = .{ .once = &.{ |
| 7066 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 6443 | .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ }, |
| 7067 | }, | 6444 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 7068 | .dst_temps = .{.{ .rc = .sse }}, | 6445 | } }, |
| 7069 | .each = .{ .once = &.{ | 6446 | }, .{ |
| 7070 | .{ ._, ._dqa, .mov, .dst0x, .src1x, ._, ._ }, | 6447 | .required_features = .{ .avx, null, null, null }, |
| 7071 | .{ ._, .p_b, .cmpgt, .dst0x, .src0x, ._, ._ }, | 6448 | .src_constraints = .{ |
| 7072 | .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ }, | 6449 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 7073 | .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ }, | 6450 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 7074 | .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ }, | 6451 | .any, |
| 7075 | } }, | 6452 | }, |
| 7076 | }, .{ | 6453 | .patterns = &.{ |
| 7077 | .required_features = .{ .avx2, null, null, null }, | 6454 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 7078 | .src_constraints = .{ | 6455 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 7079 | .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, | 6456 | }, |
| 7080 | .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, | 6457 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 7081 | }, | 6458 | .each = .{ .once = &.{ |
| 7082 | .patterns = &.{ | 6459 | .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ }, |
| 7083 | .{ .src = .{ .to_sse, .mem } }, | 6460 | .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| 7084 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 6461 | } }, |
| 7085 | .{ .src = .{ .to_sse, .to_sse } }, | 6462 | }, .{ |
| 7086 | }, | 6463 | .required_features = .{ .sse4_1, null, null, null }, |
| 7087 | .dst_temps = .{.{ .rc = .sse }}, | 6464 | .src_constraints = .{ |
| 7088 | .each = .{ .once = &.{ | 6465 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 7089 | .{ ._, .vp_b, .mins, .dst0y, .src0y, .src1y, ._ }, | 6466 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 7090 | } }, | 6467 | .any, |
| 7091 | }, .{ | 6468 | }, |
| 7092 | .required_features = .{ .avx2, null, null, null }, | 6469 | .patterns = &.{ |
| 7093 | .src_constraints = .{ | 6470 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 7094 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, | 6471 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 7095 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, | 6472 | }, |
| 7096 | }, | 6473 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 6474 | .each = .{ .once = &.{ |
| | 6475 | .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ }, |
| | 6476 | .{ ._, ._ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 6477 | } }, |
| | 6478 | }, .{ |
| | 6479 | .required_features = .{ .sse, null, null, null }, |
| | 6480 | .src_constraints = .{ |
| | 6481 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 6482 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 6483 | .any, |
| | 6484 | }, |
| | 6485 | .patterns = &.{ |
| | 6486 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 6487 | }, |
| | 6488 | .call_frame = .{ .alignment = .@"16" }, |
| | 6489 | .extra_temps = .{ |
| | 6490 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 6491 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 6492 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 6493 | else => unreachable, |
| | 6494 | .zero => "truncf", |
| | 6495 | .down => "floorf", |
| | 6496 | } } } }, |
| | 6497 | .unused, |
| | 6498 | .unused, |
| | 6499 | .unused, |
| | 6500 | .unused, |
| | 6501 | .unused, |
| | 6502 | .unused, |
| | 6503 | }, |
| | 6504 | .dst_temps = .{.mem}, |
| | 6505 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 6506 | .each = .{ .once = &.{ |
| | 6507 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 6508 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 6509 | .{ ._, ._ss, .div, .tmp1x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 6510 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 6511 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 6512 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 6513 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 6514 | } }, |
| | 6515 | }, .{ |
| | 6516 | .required_features = .{ .avx, null, null, null }, |
| | 6517 | .src_constraints = .{ |
| | 6518 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 6519 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 6520 | .any, |
| | 6521 | }, |
| | 6522 | .patterns = &.{ |
| | 6523 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 6524 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 6525 | }, |
| | 6526 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 6527 | .each = .{ .once = &.{ |
| | 6528 | .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ }, |
| | 6529 | .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 6530 | } }, |
| | 6531 | }, .{ |
| | 6532 | .required_features = .{ .avx, null, null, null }, |
| | 6533 | .src_constraints = .{ |
| | 6534 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 6535 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 6536 | .any, |
| | 6537 | }, |
| | 6538 | .patterns = &.{ |
| | 6539 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 6540 | }, |
| | 6541 | .extra_temps = .{ |
| | 6542 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 6543 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 6544 | .unused, |
| | 6545 | .unused, |
| | 6546 | .unused, |
| | 6547 | .unused, |
| | 6548 | .unused, |
| | 6549 | .unused, |
| | 6550 | .unused, |
| | 6551 | }, |
| | 6552 | .dst_temps = .{.mem}, |
| | 6553 | .clobbers = .{ .eflags = true }, |
| | 6554 | .each = .{ .once = &.{ |
| | 6555 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 6556 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 6557 | .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, |
| | 6558 | .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 6559 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 6560 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 6561 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 6562 | } }, |
| | 6563 | }, .{ |
| | 6564 | .required_features = .{ .sse4_1, null, null, null }, |
| | 6565 | .src_constraints = .{ |
| | 6566 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 6567 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 6568 | .any, |
| | 6569 | }, |
| | 6570 | .patterns = &.{ |
| | 6571 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 6572 | }, |
| | 6573 | .extra_temps = .{ |
| | 6574 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 6575 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 6576 | .unused, |
| | 6577 | .unused, |
| | 6578 | .unused, |
| | 6579 | .unused, |
| | 6580 | .unused, |
| | 6581 | .unused, |
| | 6582 | .unused, |
| | 6583 | }, |
| | 6584 | .dst_temps = .{.mem}, |
| | 6585 | .clobbers = .{ .eflags = true }, |
| | 6586 | .each = .{ .once = &.{ |
| | 6587 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 6588 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 6589 | .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 6590 | .{ ._, ._ps, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 6591 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 6592 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 6593 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 6594 | } }, |
| | 6595 | }, .{ |
| | 6596 | .required_features = .{ .avx, null, null, null }, |
| | 6597 | .src_constraints = .{ |
| | 6598 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 6599 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 6600 | .any, |
| | 6601 | }, |
| | 6602 | .patterns = &.{ |
| | 6603 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 6604 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 6605 | }, |
| | 6606 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 6607 | .each = .{ .once = &.{ |
| | 6608 | .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ }, |
| | 6609 | .{ ._, .v_sd, .round, .dst0x, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }) }, |
| | 6610 | } }, |
| | 6611 | }, .{ |
| | 6612 | .required_features = .{ .sse4_1, null, null, null }, |
| | 6613 | .src_constraints = .{ |
| | 6614 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 6615 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 6616 | .any, |
| | 6617 | }, |
| | 6618 | .patterns = &.{ |
| | 6619 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 6620 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 6621 | }, |
| | 6622 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 6623 | .each = .{ .once = &.{ |
| | 6624 | .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ }, |
| | 6625 | .{ ._, ._sd, .round, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 6626 | } }, |
| | 6627 | }, .{ |
| | 6628 | .required_features = .{ .sse2, null, null, null }, |
| | 6629 | .src_constraints = .{ |
| | 6630 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 6631 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 6632 | .any, |
| | 6633 | }, |
| | 6634 | .patterns = &.{ |
| | 6635 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } }, |
| | 6636 | }, |
| | 6637 | .call_frame = .{ .alignment = .@"16" }, |
| | 6638 | .extra_temps = .{ |
| | 6639 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 6640 | else => unreachable, |
| | 6641 | .zero => "trunc", |
| | 6642 | .down => "floor", |
| | 6643 | } } } }, |
| | 6644 | .unused, |
| | 6645 | .unused, |
| | 6646 | .unused, |
| | 6647 | .unused, |
| | 6648 | .unused, |
| | 6649 | .unused, |
| | 6650 | .unused, |
| | 6651 | .unused, |
| | 6652 | }, |
| | 6653 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 6654 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 6655 | .each = .{ .once = &.{ |
| | 6656 | .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ }, |
| | 6657 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 6658 | } }, |
| | 6659 | }, .{ |
| | 6660 | .required_features = .{ .sse, null, null, null }, |
| | 6661 | .src_constraints = .{ |
| | 6662 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 6663 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 6664 | .any, |
| | 6665 | }, |
| | 6666 | .patterns = &.{ |
| | 6667 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 6668 | }, |
| | 6669 | .call_frame = .{ .alignment = .@"16" }, |
| | 6670 | .extra_temps = .{ |
| | 6671 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } }, |
| | 6672 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 6673 | else => unreachable, |
| | 6674 | .zero => "trunc", |
| | 6675 | .down => "floor", |
| | 6676 | } } } }, |
| | 6677 | .unused, |
| | 6678 | .unused, |
| | 6679 | .unused, |
| | 6680 | .unused, |
| | 6681 | .unused, |
| | 6682 | .unused, |
| | 6683 | .unused, |
| | 6684 | }, |
| | 6685 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 6686 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 6687 | .each = .{ .once = &.{ |
| | 6688 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 6689 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 6690 | } }, |
| | 6691 | }, .{ |
| | 6692 | .required_features = .{ .avx, null, null, null }, |
| | 6693 | .src_constraints = .{ |
| | 6694 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 6695 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 6696 | .any, |
| | 6697 | }, |
| | 6698 | .patterns = &.{ |
| | 6699 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 6700 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 6701 | }, |
| | 6702 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 6703 | .each = .{ .once = &.{ |
| | 6704 | .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ }, |
| | 6705 | .{ ._, .v_pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 6706 | } }, |
| | 6707 | }, .{ |
| | 6708 | .required_features = .{ .sse4_1, null, null, null }, |
| | 6709 | .src_constraints = .{ |
| | 6710 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 6711 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 6712 | .any, |
| | 6713 | }, |
| | 6714 | .patterns = &.{ |
| | 6715 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 6716 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 6717 | }, |
| | 6718 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 6719 | .each = .{ .once = &.{ |
| | 6720 | .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ }, |
| | 6721 | .{ ._, ._pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 6722 | } }, |
| | 6723 | }, .{ |
| | 6724 | .required_features = .{ .avx, null, null, null }, |
| | 6725 | .src_constraints = .{ |
| | 6726 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 6727 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 6728 | .any, |
| | 6729 | }, |
| | 6730 | .patterns = &.{ |
| | 6731 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 6732 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 6733 | }, |
| | 6734 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 6735 | .each = .{ .once = &.{ |
| | 6736 | .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ }, |
| | 6737 | .{ ._, .v_pd, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 6738 | } }, |
| | 6739 | }, .{ |
| | 6740 | .required_features = .{ .avx, null, null, null }, |
| | 6741 | .src_constraints = .{ |
| | 6742 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 6743 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 6744 | .any, |
| | 6745 | }, |
| | 6746 | .patterns = &.{ |
| | 6747 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 6748 | }, |
| | 6749 | .extra_temps = .{ |
| | 6750 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 6751 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 6752 | .unused, |
| | 6753 | .unused, |
| | 6754 | .unused, |
| | 6755 | .unused, |
| | 6756 | .unused, |
| | 6757 | .unused, |
| | 6758 | .unused, |
| | 6759 | }, |
| | 6760 | .dst_temps = .{.mem}, |
| | 6761 | .clobbers = .{ .eflags = true }, |
| | 6762 | .each = .{ .once = &.{ |
| | 6763 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 6764 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 6765 | .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, |
| | 6766 | .{ ._, .v_pd, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 6767 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 6768 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 6769 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 6770 | } }, |
| | 6771 | }, .{ |
| | 6772 | .required_features = .{ .sse4_1, null, null, null }, |
| | 6773 | .src_constraints = .{ |
| | 6774 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 6775 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 6776 | .any, |
| | 6777 | }, |
| | 6778 | .patterns = &.{ |
| | 6779 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 6780 | }, |
| | 6781 | .extra_temps = .{ |
| | 6782 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 6783 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 6784 | .unused, |
| | 6785 | .unused, |
| | 6786 | .unused, |
| | 6787 | .unused, |
| | 6788 | .unused, |
| | 6789 | .unused, |
| | 6790 | .unused, |
| | 6791 | }, |
| | 6792 | .dst_temps = .{.mem}, |
| | 6793 | .clobbers = .{ .eflags = true }, |
| | 6794 | .each = .{ .once = &.{ |
| | 6795 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 6796 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 6797 | .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 6798 | .{ ._, ._pd, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 6799 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 6800 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 6801 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 6802 | } }, |
| | 6803 | }, .{ |
| | 6804 | .required_features = .{ .sse2, null, null, null }, |
| | 6805 | .src_constraints = .{ |
| | 6806 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 6807 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 6808 | .any, |
| | 6809 | }, |
| | 6810 | .patterns = &.{ |
| | 6811 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 6812 | }, |
| | 6813 | .call_frame = .{ .alignment = .@"16" }, |
| | 6814 | .extra_temps = .{ |
| | 6815 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 6816 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 6817 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 6818 | else => unreachable, |
| | 6819 | .zero => "trunc", |
| | 6820 | .down => "floor", |
| | 6821 | } } } }, |
| | 6822 | .unused, |
| | 6823 | .unused, |
| | 6824 | .unused, |
| | 6825 | .unused, |
| | 6826 | .unused, |
| | 6827 | .unused, |
| | 6828 | }, |
| | 6829 | .dst_temps = .{.mem}, |
| | 6830 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 6831 | .each = .{ .once = &.{ |
| | 6832 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 6833 | .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 6834 | .{ ._, ._sd, .div, .tmp1x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 6835 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 6836 | .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 6837 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 6838 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 6839 | } }, |
| | 6840 | }, .{ |
| | 6841 | .required_features = .{ .sse, null, null, null }, |
| | 6842 | .src_constraints = .{ |
| | 6843 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 6844 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 6845 | .any, |
| | 6846 | }, |
| | 6847 | .patterns = &.{ |
| | 6848 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 6849 | }, |
| | 6850 | .call_frame = .{ .alignment = .@"16" }, |
| | 6851 | .extra_temps = .{ |
| | 6852 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 6853 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 6854 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, |
| | 6855 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } }, |
| | 6856 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 6857 | else => unreachable, |
| | 6858 | .zero => "trunc", |
| | 6859 | .down => "floor", |
| | 6860 | } } } }, |
| | 6861 | .unused, |
| | 6862 | .unused, |
| | 6863 | .unused, |
| | 6864 | .unused, |
| | 6865 | }, |
| | 6866 | .dst_temps = .{.mem}, |
| | 6867 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 6868 | .each = .{ .once = &.{ |
| | 6869 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 6870 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 6871 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 6872 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 6873 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 6874 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 6875 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 6876 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 6877 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 6878 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 6879 | } }, |
| | 6880 | }, .{ |
| | 6881 | .required_features = .{ .x87, null, null, null }, |
| | 6882 | .src_constraints = .{ |
| | 6883 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 6884 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 6885 | .any, |
| | 6886 | }, |
| | 6887 | .patterns = &.{ |
| | 6888 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 6889 | }, |
| | 6890 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 6891 | .extra_temps = .{ |
| | 6892 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| | 6893 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 6894 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 6895 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 6896 | else => unreachable, |
| | 6897 | .zero => "__truncx", |
| | 6898 | .down => "__floorx", |
| | 6899 | } } } }, |
| | 6900 | .unused, |
| | 6901 | .unused, |
| | 6902 | .unused, |
| | 6903 | .unused, |
| | 6904 | .unused, |
| | 6905 | }, |
| | 6906 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 6907 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 6908 | .each = .{ .once = &.{ |
| | 6909 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| | 6910 | .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, |
| | 6911 | .{ ._, .f_p, .div, ._, ._, ._, ._ }, |
| | 6912 | .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, |
| | 6913 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 6914 | } }, |
| | 6915 | }, .{ |
| | 6916 | .required_features = .{ .x87, null, null, null }, |
| | 6917 | .src_constraints = .{ |
| | 6918 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 6919 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 6920 | .any, |
| | 6921 | }, |
| | 6922 | .patterns = &.{ |
| | 6923 | .{ .src = .{ .mem, .mem, .none } }, |
| | 6924 | }, |
| | 6925 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 6926 | .extra_temps = .{ |
| | 6927 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 6928 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| | 6929 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 6930 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 6931 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 6932 | else => unreachable, |
| | 6933 | .zero => "__truncx", |
| | 6934 | .down => "__floorx", |
| | 6935 | } } } }, |
| | 6936 | .unused, |
| | 6937 | .unused, |
| | 6938 | .unused, |
| | 6939 | .unused, |
| | 6940 | }, |
| | 6941 | .dst_temps = .{.mem}, |
| | 6942 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 6943 | .each = .{ .once = &.{ |
| | 6944 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 6945 | .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 6946 | .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 6947 | .{ ._, .f_p, .div, ._, ._, ._, ._ }, |
| | 6948 | .{ ._, .f_p, .st, .mem(.tmp3t), ._, ._, ._ }, |
| | 6949 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 6950 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 6951 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 6952 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 6953 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 6954 | } }, |
| | 6955 | }, .{ |
| | 6956 | .required_features = .{ .sse, null, null, null }, |
| | 6957 | .src_constraints = .{ |
| | 6958 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 6959 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 6960 | .any, |
| | 6961 | }, |
| | 6962 | .patterns = &.{ |
| | 6963 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 6964 | }, |
| | 6965 | .call_frame = .{ .alignment = .@"16" }, |
| | 6966 | .extra_temps = .{ |
| | 6967 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, |
| | 6968 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 6969 | else => unreachable, |
| | 6970 | .zero => "truncq", |
| | 6971 | .down => "floorq", |
| | 6972 | } } } }, |
| | 6973 | .unused, |
| | 6974 | .unused, |
| | 6975 | .unused, |
| | 6976 | .unused, |
| | 6977 | .unused, |
| | 6978 | .unused, |
| | 6979 | .unused, |
| | 6980 | }, |
| | 6981 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 6982 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 6983 | .each = .{ .once = &.{ |
| | 6984 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 6985 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 6986 | } }, |
| | 6987 | }, .{ |
| | 6988 | .required_features = .{ .avx, null, null, null }, |
| | 6989 | .src_constraints = .{ |
| | 6990 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 6991 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 6992 | .any, |
| | 6993 | }, |
| | 6994 | .patterns = &.{ |
| | 6995 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 6996 | }, |
| | 6997 | .call_frame = .{ .alignment = .@"16" }, |
| | 6998 | .extra_temps = .{ |
| | 6999 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7000 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 7001 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 7002 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, |
| | 7003 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7004 | else => unreachable, |
| | 7005 | .zero => "truncq", |
| | 7006 | .down => "floorq", |
| | 7007 | } } } }, |
| | 7008 | .unused, |
| | 7009 | .unused, |
| | 7010 | .unused, |
| | 7011 | .unused, |
| | 7012 | }, |
| | 7013 | .dst_temps = .{.mem}, |
| | 7014 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7015 | .each = .{ .once = &.{ |
| | 7016 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7017 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7018 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7019 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 7020 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 7021 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 7022 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 7023 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7024 | } }, |
| | 7025 | }, .{ |
| | 7026 | .required_features = .{ .sse2, null, null, null }, |
| | 7027 | .src_constraints = .{ |
| | 7028 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 7029 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 7030 | .any, |
| | 7031 | }, |
| | 7032 | .patterns = &.{ |
| | 7033 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7034 | }, |
| | 7035 | .call_frame = .{ .alignment = .@"16" }, |
| | 7036 | .extra_temps = .{ |
| | 7037 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7038 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 7039 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 7040 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, |
| | 7041 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7042 | else => unreachable, |
| | 7043 | .zero => "truncq", |
| | 7044 | .down => "floorq", |
| | 7045 | } } } }, |
| | 7046 | .unused, |
| | 7047 | .unused, |
| | 7048 | .unused, |
| | 7049 | .unused, |
| | 7050 | }, |
| | 7051 | .dst_temps = .{.mem}, |
| | 7052 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7053 | .each = .{ .once = &.{ |
| | 7054 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7055 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7056 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7057 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 7058 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 7059 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 7060 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 7061 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7062 | } }, |
| | 7063 | }, .{ |
| | 7064 | .required_features = .{ .sse, null, null, null }, |
| | 7065 | .src_constraints = .{ |
| | 7066 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 7067 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 7068 | .any, |
| | 7069 | }, |
| | 7070 | .patterns = &.{ |
| | 7071 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7072 | }, |
| | 7073 | .call_frame = .{ .alignment = .@"16" }, |
| | 7074 | .extra_temps = .{ |
| | 7075 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7076 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 7077 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 7078 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, |
| | 7079 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7080 | else => unreachable, |
| | 7081 | .zero => "truncq", |
| | 7082 | .down => "floorq", |
| | 7083 | } } } }, |
| | 7084 | .unused, |
| | 7085 | .unused, |
| | 7086 | .unused, |
| | 7087 | .unused, |
| | 7088 | }, |
| | 7089 | .dst_temps = .{.mem}, |
| | 7090 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7091 | .each = .{ .once = &.{ |
| | 7092 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7093 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7094 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7095 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 7096 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 7097 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 7098 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 7099 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7100 | } }, |
| | 7101 | } }, |
| | 7102 | }) catch |err| switch (err) { |
| | 7103 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 7104 | @tagName(air_tag), |
| | 7105 | cg.typeOf(bin_op.lhs).fmt(pt), |
| | 7106 | ops[0].tracking(cg), |
| | 7107 | ops[1].tracking(cg), |
| | 7108 | }), |
| | 7109 | else => |e| return e, |
| | 7110 | }; |
| | 7111 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 7112 | }, |
| | 7113 | .div_trunc_optimized, .div_floor_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) { |
| | 7114 | else => unreachable, |
| | 7115 | .div_trunc_optimized => .div_trunc, |
| | 7116 | .div_floor_optimized => .div_floor, |
| | 7117 | }) else { |
| | 7118 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| | 7119 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 7120 | var res: [1]Temp = undefined; |
| | 7121 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) { |
| | 7122 | else => unreachable, |
| | 7123 | .div_trunc_optimized => .zero, |
| | 7124 | .div_floor_optimized => .down, |
| | 7125 | })) { |
| | 7126 | else => unreachable, |
| | 7127 | inline .zero, .down => |direction| comptime &.{ .{ |
| | 7128 | .required_features = .{ .f16c, null, null, null }, |
| | 7129 | .src_constraints = .{ |
| | 7130 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 7131 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 7132 | .any, |
| | 7133 | }, |
| | 7134 | .patterns = &.{ |
| | 7135 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 7136 | }, |
| | 7137 | .extra_temps = .{ |
| | 7138 | .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| | 7139 | .unused, |
| | 7140 | .unused, |
| | 7141 | .unused, |
| | 7142 | .unused, |
| | 7143 | .unused, |
| | 7144 | .unused, |
| | 7145 | .unused, |
| | 7146 | .unused, |
| | 7147 | }, |
| | 7148 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 7149 | .each = .{ .once = &.{ |
| | 7150 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 7151 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| | 7152 | .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ }, |
| | 7153 | .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) }, |
| | 7154 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| | 7155 | } }, |
| | 7156 | }, .{ |
| | 7157 | .required_features = .{ .sse, null, null, null }, |
| | 7158 | .src_constraints = .{ |
| | 7159 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 7160 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 7161 | .any, |
| | 7162 | }, |
| | 7163 | .patterns = &.{ |
| | 7164 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 7165 | }, |
| | 7166 | .call_frame = .{ .alignment = .@"16" }, |
| | 7167 | .extra_temps = .{ |
| | 7168 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| | 7169 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7170 | else => unreachable, |
| | 7171 | .zero => "__trunch", |
| | 7172 | .down => "__floorh", |
| | 7173 | } } } }, |
| | 7174 | .unused, |
| | 7175 | .unused, |
| | 7176 | .unused, |
| | 7177 | .unused, |
| | 7178 | .unused, |
| | 7179 | .unused, |
| | 7180 | .unused, |
| | 7181 | }, |
| | 7182 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 7183 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7184 | .each = .{ .once = &.{ |
| | 7185 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 7186 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 7187 | } }, |
| | 7188 | }, .{ |
| | 7189 | .required_features = .{ .f16c, null, null, null }, |
| | 7190 | .src_constraints = .{ |
| | 7191 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 7192 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 7193 | .any, |
| | 7194 | }, |
| | 7195 | .patterns = &.{ |
| | 7196 | .{ .src = .{ .mem, .mem, .none } }, |
| | 7197 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 7198 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 7199 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 7200 | }, |
| | 7201 | .extra_temps = .{ |
| | 7202 | .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| | 7203 | .unused, |
| | 7204 | .unused, |
| | 7205 | .unused, |
| | 7206 | .unused, |
| | 7207 | .unused, |
| | 7208 | .unused, |
| | 7209 | .unused, |
| | 7210 | .unused, |
| | 7211 | }, |
| | 7212 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 7213 | .each = .{ .once = &.{ |
| | 7214 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 7215 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| | 7216 | .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ }, |
| | 7217 | .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7218 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| | 7219 | } }, |
| | 7220 | }, .{ |
| | 7221 | .required_features = .{ .f16c, null, null, null }, |
| | 7222 | .src_constraints = .{ |
| | 7223 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 7224 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 7225 | .any, |
| | 7226 | }, |
| | 7227 | .patterns = &.{ |
| | 7228 | .{ .src = .{ .mem, .mem, .none } }, |
| | 7229 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 7230 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 7231 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 7232 | }, |
| | 7233 | .extra_temps = .{ |
| | 7234 | .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| | 7235 | .unused, |
| | 7236 | .unused, |
| | 7237 | .unused, |
| | 7238 | .unused, |
| | 7239 | .unused, |
| | 7240 | .unused, |
| | 7241 | .unused, |
| | 7242 | .unused, |
| | 7243 | }, |
| | 7244 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 7245 | .each = .{ .once = &.{ |
| | 7246 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| | 7247 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, |
| | 7248 | .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ }, |
| | 7249 | .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7250 | .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, |
| | 7251 | } }, |
| | 7252 | }, .{ |
| | 7253 | .required_features = .{ .f16c, null, null, null }, |
| | 7254 | .src_constraints = .{ |
| | 7255 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 7256 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 7257 | .any, |
| | 7258 | }, |
| | 7259 | .patterns = &.{ |
| | 7260 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7261 | }, |
| | 7262 | .extra_temps = .{ |
| | 7263 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7264 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 7265 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 7266 | .unused, |
| | 7267 | .unused, |
| | 7268 | .unused, |
| | 7269 | .unused, |
| | 7270 | .unused, |
| | 7271 | .unused, |
| | 7272 | }, |
| | 7273 | .dst_temps = .{.mem}, |
| | 7274 | .clobbers = .{ .eflags = true }, |
| | 7275 | .each = .{ .once = &.{ |
| | 7276 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7277 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7278 | .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7279 | .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ }, |
| | 7280 | .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7281 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, |
| | 7282 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 7283 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7284 | } }, |
| | 7285 | }, .{ |
| | 7286 | .required_features = .{ .avx, null, null, null }, |
| | 7287 | .src_constraints = .{ |
| | 7288 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 7289 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 7290 | .any, |
| | 7291 | }, |
| | 7292 | .patterns = &.{ |
| | 7293 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7294 | }, |
| | 7295 | .call_frame = .{ .alignment = .@"16" }, |
| | 7296 | .extra_temps = .{ |
| | 7297 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7298 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 7299 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 7300 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| | 7301 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7302 | else => unreachable, |
| | 7303 | .zero => "__trunch", |
| | 7304 | .down => "__floorh", |
| | 7305 | } } } }, |
| | 7306 | .unused, |
| | 7307 | .unused, |
| | 7308 | .unused, |
| | 7309 | .unused, |
| | 7310 | }, |
| | 7311 | .dst_temps = .{.mem}, |
| | 7312 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7313 | .each = .{ .once = &.{ |
| | 7314 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7315 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 7316 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 7317 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 7318 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 7319 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 7320 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 7321 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 7322 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7323 | } }, |
| | 7324 | }, .{ |
| | 7325 | .required_features = .{ .sse4_1, null, null, null }, |
| | 7326 | .src_constraints = .{ |
| | 7327 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 7328 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 7329 | .any, |
| | 7330 | }, |
| | 7331 | .patterns = &.{ |
| | 7332 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7333 | }, |
| | 7334 | .call_frame = .{ .alignment = .@"16" }, |
| | 7335 | .extra_temps = .{ |
| | 7336 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7337 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 7338 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 7339 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| | 7340 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7341 | else => unreachable, |
| | 7342 | .zero => "__trunch", |
| | 7343 | .down => "__floorh", |
| | 7344 | } } } }, |
| | 7345 | .unused, |
| | 7346 | .unused, |
| | 7347 | .unused, |
| | 7348 | .unused, |
| | 7349 | }, |
| | 7350 | .dst_temps = .{.mem}, |
| | 7351 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7352 | .each = .{ .once = &.{ |
| | 7353 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7354 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 7355 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 7356 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 7357 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 7358 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 7359 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 7360 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 7361 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 7362 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7363 | } }, |
| | 7364 | }, .{ |
| | 7365 | .required_features = .{ .sse2, null, null, null }, |
| | 7366 | .src_constraints = .{ |
| | 7367 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 7368 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 7369 | .any, |
| | 7370 | }, |
| | 7371 | .patterns = &.{ |
| | 7372 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7373 | }, |
| | 7374 | .call_frame = .{ .alignment = .@"16" }, |
| | 7375 | .extra_temps = .{ |
| | 7376 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7377 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 7378 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 7379 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| | 7380 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7381 | else => unreachable, |
| | 7382 | .zero => "__trunch", |
| | 7383 | .down => "__floorh", |
| | 7384 | } } } }, |
| | 7385 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 7386 | .unused, |
| | 7387 | .unused, |
| | 7388 | .unused, |
| | 7389 | }, |
| | 7390 | .dst_temps = .{.mem}, |
| | 7391 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7392 | .each = .{ .once = &.{ |
| | 7393 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7394 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 7395 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 7396 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 7397 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 7398 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 7399 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 7400 | .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ }, |
| | 7401 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ }, |
| | 7402 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 7403 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7404 | } }, |
| | 7405 | }, .{ |
| | 7406 | .required_features = .{ .sse, null, null, null }, |
| | 7407 | .src_constraints = .{ |
| | 7408 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 7409 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 7410 | .any, |
| | 7411 | }, |
| | 7412 | .patterns = &.{ |
| | 7413 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7414 | }, |
| | 7415 | .call_frame = .{ .alignment = .@"16" }, |
| | 7416 | .extra_temps = .{ |
| | 7417 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7418 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 7419 | .{ .type = .f32, .kind = .mem }, |
| | 7420 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 7421 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 7422 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, |
| | 7423 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7424 | else => unreachable, |
| | 7425 | .zero => "__trunch", |
| | 7426 | .down => "__floorh", |
| | 7427 | } } } }, |
| | 7428 | .unused, |
| | 7429 | .unused, |
| | 7430 | }, |
| | 7431 | .dst_temps = .{.mem}, |
| | 7432 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7433 | .each = .{ .once = &.{ |
| | 7434 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7435 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7436 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 7437 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 7438 | .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7439 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 7440 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| | 7441 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 7442 | .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, |
| | 7443 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| | 7444 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 7445 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 7446 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 7447 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7448 | } }, |
| | 7449 | }, .{ |
| | 7450 | .required_features = .{ .avx, null, null, null }, |
| | 7451 | .src_constraints = .{ |
| | 7452 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 7453 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 7454 | .any, |
| | 7455 | }, |
| | 7456 | .patterns = &.{ |
| | 7457 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 7458 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 7459 | }, |
| | 7460 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 7461 | .each = .{ .once = &.{ |
| | 7462 | .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ }, |
| | 7463 | .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) }, |
| | 7464 | } }, |
| | 7465 | }, .{ |
| | 7466 | .required_features = .{ .sse4_1, null, null, null }, |
| | 7467 | .src_constraints = .{ |
| | 7468 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 7469 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 7470 | .any, |
| | 7471 | }, |
| | 7472 | .patterns = &.{ |
| | 7473 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 7474 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 7475 | }, |
| | 7476 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 7477 | .each = .{ .once = &.{ |
| | 7478 | .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ }, |
| | 7479 | .{ ._, ._ss, .round, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7480 | } }, |
| | 7481 | }, .{ |
| | 7482 | .required_features = .{ .sse, null, null, null }, |
| | 7483 | .src_constraints = .{ |
| | 7484 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 7485 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 7486 | .any, |
| | 7487 | }, |
| | 7488 | .patterns = &.{ |
| | 7489 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } }, |
| | 7490 | }, |
| | 7491 | .call_frame = .{ .alignment = .@"16" }, |
| | 7492 | .extra_temps = .{ |
| | 7493 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7494 | else => unreachable, |
| | 7495 | .zero => "truncf", |
| | 7496 | .down => "floorf", |
| | 7497 | } } } }, |
| | 7498 | .unused, |
| | 7499 | .unused, |
| | 7500 | .unused, |
| | 7501 | .unused, |
| | 7502 | .unused, |
| | 7503 | .unused, |
| | 7504 | .unused, |
| | 7505 | .unused, |
| | 7506 | }, |
| | 7507 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 7508 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7509 | .each = .{ .once = &.{ |
| | 7510 | .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ }, |
| | 7511 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 7512 | } }, |
| | 7513 | }, .{ |
| | 7514 | .required_features = .{ .avx, null, null, null }, |
| | 7515 | .src_constraints = .{ |
| | 7516 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 7517 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 7518 | .any, |
| | 7519 | }, |
| | 7520 | .patterns = &.{ |
| | 7521 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 7522 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 7523 | }, |
| | 7524 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 7525 | .each = .{ .once = &.{ |
| | 7526 | .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ }, |
| | 7527 | .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7528 | } }, |
| | 7529 | }, .{ |
| | 7530 | .required_features = .{ .sse4_1, null, null, null }, |
| | 7531 | .src_constraints = .{ |
| | 7532 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 7533 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 7534 | .any, |
| | 7535 | }, |
| | 7536 | .patterns = &.{ |
| | 7537 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 7538 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 7539 | }, |
| | 7540 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 7541 | .each = .{ .once = &.{ |
| | 7542 | .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ }, |
| | 7543 | .{ ._, ._ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7544 | } }, |
| | 7545 | }, .{ |
| | 7546 | .required_features = .{ .sse, null, null, null }, |
| | 7547 | .src_constraints = .{ |
| | 7548 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 7549 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 7550 | .any, |
| | 7551 | }, |
| | 7552 | .patterns = &.{ |
| | 7553 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7554 | }, |
| | 7555 | .call_frame = .{ .alignment = .@"16" }, |
| | 7556 | .extra_temps = .{ |
| | 7557 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7558 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 7559 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7560 | else => unreachable, |
| | 7561 | .zero => "truncf", |
| | 7562 | .down => "floorf", |
| | 7563 | } } } }, |
| | 7564 | .unused, |
| | 7565 | .unused, |
| | 7566 | .unused, |
| | 7567 | .unused, |
| | 7568 | .unused, |
| | 7569 | .unused, |
| | 7570 | }, |
| | 7571 | .dst_temps = .{.mem}, |
| | 7572 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7573 | .each = .{ .once = &.{ |
| | 7574 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7575 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7576 | .{ ._, ._ss, .div, .tmp1x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7577 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 7578 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 7579 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 7580 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7581 | } }, |
| | 7582 | }, .{ |
| | 7583 | .required_features = .{ .avx, null, null, null }, |
| | 7584 | .src_constraints = .{ |
| | 7585 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 7586 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 7587 | .any, |
| | 7588 | }, |
| | 7589 | .patterns = &.{ |
| | 7590 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 7591 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 7592 | }, |
| | 7593 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 7594 | .each = .{ .once = &.{ |
| | 7595 | .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ }, |
| | 7596 | .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7597 | } }, |
| | 7598 | }, .{ |
| | 7599 | .required_features = .{ .avx, null, null, null }, |
| | 7600 | .src_constraints = .{ |
| | 7601 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 7602 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 7603 | .any, |
| | 7604 | }, |
| | 7605 | .patterns = &.{ |
| | 7606 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7607 | }, |
| | 7608 | .extra_temps = .{ |
| | 7609 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7610 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 7611 | .unused, |
| | 7612 | .unused, |
| | 7613 | .unused, |
| | 7614 | .unused, |
| | 7615 | .unused, |
| | 7616 | .unused, |
| | 7617 | .unused, |
| | 7618 | }, |
| | 7619 | .dst_temps = .{.mem}, |
| | 7620 | .clobbers = .{ .eflags = true }, |
| | 7621 | .each = .{ .once = &.{ |
| | 7622 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7623 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7624 | .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, |
| | 7625 | .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7626 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 7627 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 7628 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7629 | } }, |
| | 7630 | }, .{ |
| | 7631 | .required_features = .{ .sse4_1, null, null, null }, |
| | 7632 | .src_constraints = .{ |
| | 7633 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 7634 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 7635 | .any, |
| | 7636 | }, |
| | 7637 | .patterns = &.{ |
| | 7638 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7639 | }, |
| | 7640 | .extra_temps = .{ |
| | 7641 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7642 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 7643 | .unused, |
| | 7644 | .unused, |
| | 7645 | .unused, |
| | 7646 | .unused, |
| | 7647 | .unused, |
| | 7648 | .unused, |
| | 7649 | .unused, |
| | 7650 | }, |
| | 7651 | .dst_temps = .{.mem}, |
| | 7652 | .clobbers = .{ .eflags = true }, |
| | 7653 | .each = .{ .once = &.{ |
| | 7654 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7655 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7656 | .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7657 | .{ ._, ._ps, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7658 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 7659 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 7660 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7661 | } }, |
| | 7662 | }, .{ |
| | 7663 | .required_features = .{ .avx, null, null, null }, |
| | 7664 | .src_constraints = .{ |
| | 7665 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 7666 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 7667 | .any, |
| | 7668 | }, |
| | 7669 | .patterns = &.{ |
| | 7670 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 7671 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 7672 | }, |
| | 7673 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 7674 | .each = .{ .once = &.{ |
| | 7675 | .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ }, |
| | 7676 | .{ ._, .v_sd, .round, .dst0x, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }) }, |
| | 7677 | } }, |
| | 7678 | }, .{ |
| | 7679 | .required_features = .{ .sse4_1, null, null, null }, |
| | 7680 | .src_constraints = .{ |
| | 7681 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 7682 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 7683 | .any, |
| | 7684 | }, |
| | 7685 | .patterns = &.{ |
| | 7686 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 7687 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 7688 | }, |
| | 7689 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 7690 | .each = .{ .once = &.{ |
| | 7691 | .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ }, |
| | 7692 | .{ ._, ._sd, .round, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7693 | } }, |
| | 7694 | }, .{ |
| | 7695 | .required_features = .{ .sse2, null, null, null }, |
| | 7696 | .src_constraints = .{ |
| | 7697 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 7698 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 7699 | .any, |
| | 7700 | }, |
| | 7701 | .patterns = &.{ |
| | 7702 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } }, |
| | 7703 | }, |
| | 7704 | .call_frame = .{ .alignment = .@"16" }, |
| | 7705 | .extra_temps = .{ |
| | 7706 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7707 | else => unreachable, |
| | 7708 | .zero => "trunc", |
| | 7709 | .down => "floor", |
| | 7710 | } } } }, |
| | 7711 | .unused, |
| | 7712 | .unused, |
| | 7713 | .unused, |
| | 7714 | .unused, |
| | 7715 | .unused, |
| | 7716 | .unused, |
| | 7717 | .unused, |
| | 7718 | .unused, |
| | 7719 | }, |
| | 7720 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 7721 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7722 | .each = .{ .once = &.{ |
| | 7723 | .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ }, |
| | 7724 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 7725 | } }, |
| | 7726 | }, .{ |
| | 7727 | .required_features = .{ .sse, null, null, null }, |
| | 7728 | .src_constraints = .{ |
| | 7729 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 7730 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 7731 | .any, |
| | 7732 | }, |
| | 7733 | .patterns = &.{ |
| | 7734 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 7735 | }, |
| | 7736 | .call_frame = .{ .alignment = .@"16" }, |
| | 7737 | .extra_temps = .{ |
| | 7738 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } }, |
| | 7739 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7740 | else => unreachable, |
| | 7741 | .zero => "trunc", |
| | 7742 | .down => "floor", |
| | 7743 | } } } }, |
| | 7744 | .unused, |
| | 7745 | .unused, |
| | 7746 | .unused, |
| | 7747 | .unused, |
| | 7748 | .unused, |
| | 7749 | .unused, |
| | 7750 | .unused, |
| | 7751 | }, |
| | 7752 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 7753 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7754 | .each = .{ .once = &.{ |
| | 7755 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 7756 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 7757 | } }, |
| | 7758 | }, .{ |
| | 7759 | .required_features = .{ .avx, null, null, null }, |
| | 7760 | .src_constraints = .{ |
| | 7761 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 7762 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 7763 | .any, |
| | 7764 | }, |
| | 7765 | .patterns = &.{ |
| | 7766 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 7767 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 7768 | }, |
| | 7769 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 7770 | .each = .{ .once = &.{ |
| | 7771 | .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ }, |
| | 7772 | .{ ._, .v_pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7773 | } }, |
| | 7774 | }, .{ |
| | 7775 | .required_features = .{ .sse4_1, null, null, null }, |
| | 7776 | .src_constraints = .{ |
| | 7777 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 7778 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 7779 | .any, |
| | 7780 | }, |
| | 7781 | .patterns = &.{ |
| | 7782 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 7783 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 7784 | }, |
| | 7785 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 7786 | .each = .{ .once = &.{ |
| | 7787 | .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ }, |
| | 7788 | .{ ._, ._pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7789 | } }, |
| | 7790 | }, .{ |
| | 7791 | .required_features = .{ .avx, null, null, null }, |
| | 7792 | .src_constraints = .{ |
| | 7793 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 7794 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 7795 | .any, |
| | 7796 | }, |
| | 7797 | .patterns = &.{ |
| | 7798 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 7799 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 7800 | }, |
| | 7801 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 7802 | .each = .{ .once = &.{ |
| | 7803 | .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ }, |
| | 7804 | .{ ._, .v_pd, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7805 | } }, |
| | 7806 | }, .{ |
| | 7807 | .required_features = .{ .avx, null, null, null }, |
| | 7808 | .src_constraints = .{ |
| | 7809 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 7810 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 7811 | .any, |
| | 7812 | }, |
| | 7813 | .patterns = &.{ |
| | 7814 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7815 | }, |
| | 7816 | .extra_temps = .{ |
| | 7817 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7818 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 7819 | .unused, |
| | 7820 | .unused, |
| | 7821 | .unused, |
| | 7822 | .unused, |
| | 7823 | .unused, |
| | 7824 | .unused, |
| | 7825 | .unused, |
| | 7826 | }, |
| | 7827 | .dst_temps = .{.mem}, |
| | 7828 | .clobbers = .{ .eflags = true }, |
| | 7829 | .each = .{ .once = &.{ |
| | 7830 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7831 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7832 | .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, |
| | 7833 | .{ ._, .v_pd, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7834 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 7835 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 7836 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7837 | } }, |
| | 7838 | }, .{ |
| | 7839 | .required_features = .{ .sse4_1, null, null, null }, |
| | 7840 | .src_constraints = .{ |
| | 7841 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 7842 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 7843 | .any, |
| | 7844 | }, |
| | 7845 | .patterns = &.{ |
| | 7846 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7847 | }, |
| | 7848 | .extra_temps = .{ |
| | 7849 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7850 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 7851 | .unused, |
| | 7852 | .unused, |
| | 7853 | .unused, |
| | 7854 | .unused, |
| | 7855 | .unused, |
| | 7856 | .unused, |
| | 7857 | .unused, |
| | 7858 | }, |
| | 7859 | .dst_temps = .{.mem}, |
| | 7860 | .clobbers = .{ .eflags = true }, |
| | 7861 | .each = .{ .once = &.{ |
| | 7862 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7863 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7864 | .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7865 | .{ ._, ._pd, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 7866 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 7867 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 7868 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7869 | } }, |
| | 7870 | }, .{ |
| | 7871 | .required_features = .{ .sse2, null, null, null }, |
| | 7872 | .src_constraints = .{ |
| | 7873 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 7874 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 7875 | .any, |
| | 7876 | }, |
| | 7877 | .patterns = &.{ |
| | 7878 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7879 | }, |
| | 7880 | .call_frame = .{ .alignment = .@"16" }, |
| | 7881 | .extra_temps = .{ |
| | 7882 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7883 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 7884 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7885 | else => unreachable, |
| | 7886 | .zero => "trunc", |
| | 7887 | .down => "floor", |
| | 7888 | } } } }, |
| | 7889 | .unused, |
| | 7890 | .unused, |
| | 7891 | .unused, |
| | 7892 | .unused, |
| | 7893 | .unused, |
| | 7894 | .unused, |
| | 7895 | }, |
| | 7896 | .dst_temps = .{.mem}, |
| | 7897 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7898 | .each = .{ .once = &.{ |
| | 7899 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7900 | .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7901 | .{ ._, ._sd, .div, .tmp1x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7902 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 7903 | .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 7904 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 7905 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7906 | } }, |
| | 7907 | }, .{ |
| | 7908 | .required_features = .{ .sse, null, null, null }, |
| | 7909 | .src_constraints = .{ |
| | 7910 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 7911 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 7912 | .any, |
| | 7913 | }, |
| | 7914 | .patterns = &.{ |
| | 7915 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 7916 | }, |
| | 7917 | .call_frame = .{ .alignment = .@"16" }, |
| | 7918 | .extra_temps = .{ |
| | 7919 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 7920 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 7921 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, |
| | 7922 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } }, |
| | 7923 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7924 | else => unreachable, |
| | 7925 | .zero => "trunc", |
| | 7926 | .down => "floor", |
| | 7927 | } } } }, |
| | 7928 | .unused, |
| | 7929 | .unused, |
| | 7930 | .unused, |
| | 7931 | .unused, |
| | 7932 | }, |
| | 7933 | .dst_temps = .{.mem}, |
| | 7934 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7935 | .each = .{ .once = &.{ |
| | 7936 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 7937 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 7938 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 7939 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7940 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 7941 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 7942 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 7943 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 7944 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 7945 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 7946 | } }, |
| | 7947 | }, .{ |
| | 7948 | .required_features = .{ .x87, null, null, null }, |
| | 7949 | .src_constraints = .{ |
| | 7950 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 7951 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 7952 | .any, |
| | 7953 | }, |
| | 7954 | .patterns = &.{ |
| | 7955 | .{ .src = .{ .mem, .mem, .none } }, |
| | 7956 | }, |
| | 7957 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 7958 | .extra_temps = .{ |
| | 7959 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| | 7960 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 7961 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 7962 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7963 | else => unreachable, |
| | 7964 | .zero => "__truncx", |
| | 7965 | .down => "__floorx", |
| | 7966 | } } } }, |
| | 7967 | .unused, |
| | 7968 | .unused, |
| | 7969 | .unused, |
| | 7970 | .unused, |
| | 7971 | .unused, |
| | 7972 | }, |
| | 7973 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 7974 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 7975 | .each = .{ .once = &.{ |
| | 7976 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| | 7977 | .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, |
| | 7978 | .{ ._, .f_p, .div, ._, ._, ._, ._ }, |
| | 7979 | .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, |
| | 7980 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 7981 | } }, |
| | 7982 | }, .{ |
| | 7983 | .required_features = .{ .x87, null, null, null }, |
| | 7984 | .src_constraints = .{ |
| | 7985 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 7986 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 7987 | .any, |
| | 7988 | }, |
| | 7989 | .patterns = &.{ |
| | 7990 | .{ .src = .{ .to_x87, .mem, .none } }, |
| | 7991 | }, |
| | 7992 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 7993 | .extra_temps = .{ |
| | 7994 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 7995 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 7996 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 7997 | else => unreachable, |
| | 7998 | .zero => "__truncx", |
| | 7999 | .down => "__floorx", |
| | 8000 | } } } }, |
| | 8001 | .unused, |
| | 8002 | .unused, |
| | 8003 | .unused, |
| | 8004 | .unused, |
| | 8005 | .unused, |
| | 8006 | .unused, |
| | 8007 | }, |
| | 8008 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 8009 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8010 | .each = .{ .once = &.{ |
| | 8011 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| | 8012 | .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ }, |
| | 8013 | .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, |
| | 8014 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 8015 | } }, |
| | 8016 | }, .{ |
| | 8017 | .required_features = .{ .x87, null, null, null }, |
| | 8018 | .src_constraints = .{ |
| | 8019 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8020 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8021 | .any, |
| | 8022 | }, |
| | 8023 | .patterns = &.{ |
| | 8024 | .{ .src = .{ .mem, .to_x87, .none } }, |
| | 8025 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| | 8026 | }, |
| | 8027 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 8028 | .extra_temps = .{ |
| | 8029 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 8030 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 8031 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 8032 | else => unreachable, |
| | 8033 | .zero => "__truncx", |
| | 8034 | .down => "__floorx", |
| | 8035 | } } } }, |
| | 8036 | .unused, |
| | 8037 | .unused, |
| | 8038 | .unused, |
| | 8039 | .unused, |
| | 8040 | .unused, |
| | 8041 | .unused, |
| | 8042 | }, |
| | 8043 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 8044 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8045 | .each = .{ .once = &.{ |
| | 8046 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| | 8047 | .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ }, |
| | 8048 | .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, |
| | 8049 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 8050 | } }, |
| | 8051 | }, .{ |
| | 8052 | .required_features = .{ .x87, null, null, null }, |
| | 8053 | .src_constraints = .{ |
| | 8054 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8055 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8056 | .any, |
| | 8057 | }, |
| | 8058 | .patterns = &.{ |
| | 8059 | .{ .src = .{ .mem, .mem, .none } }, |
| | 8060 | }, |
| | 8061 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 8062 | .extra_temps = .{ |
| | 8063 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8064 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| | 8065 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 8066 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 8067 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 8068 | else => unreachable, |
| | 8069 | .zero => "__truncx", |
| | 8070 | .down => "__floorx", |
| | 8071 | } } } }, |
| | 8072 | .unused, |
| | 8073 | .unused, |
| | 8074 | .unused, |
| | 8075 | .unused, |
| | 8076 | }, |
| | 8077 | .dst_temps = .{.mem}, |
| | 8078 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8079 | .each = .{ .once = &.{ |
| | 8080 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8081 | .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 8082 | .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 8083 | .{ ._, .f_p, .div, ._, ._, ._, ._ }, |
| | 8084 | .{ ._, .f_p, .st, .mem(.tmp3t), ._, ._, ._ }, |
| | 8085 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 8086 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 8087 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 8088 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 8089 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8090 | } }, |
| | 8091 | }, .{ |
| | 8092 | .required_features = .{ .sse, null, null, null }, |
| | 8093 | .src_constraints = .{ |
| | 8094 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8095 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8096 | .any, |
| | 8097 | }, |
| | 8098 | .patterns = &.{ |
| | 8099 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 8100 | }, |
| | 8101 | .call_frame = .{ .alignment = .@"16" }, |
| | 8102 | .extra_temps = .{ |
| | 8103 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, |
| | 8104 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 8105 | else => unreachable, |
| | 8106 | .zero => "truncq", |
| | 8107 | .down => "floorq", |
| | 8108 | } } } }, |
| | 8109 | .unused, |
| | 8110 | .unused, |
| | 8111 | .unused, |
| | 8112 | .unused, |
| | 8113 | .unused, |
| | 8114 | .unused, |
| | 8115 | .unused, |
| | 8116 | }, |
| | 8117 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 8118 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8119 | .each = .{ .once = &.{ |
| | 8120 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 8121 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 8122 | } }, |
| | 8123 | }, .{ |
| | 8124 | .required_features = .{ .avx, null, null, null }, |
| | 8125 | .src_constraints = .{ |
| | 8126 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8127 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8128 | .any, |
| | 8129 | }, |
| | 8130 | .patterns = &.{ |
| | 8131 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8132 | }, |
| | 8133 | .call_frame = .{ .alignment = .@"16" }, |
| | 8134 | .extra_temps = .{ |
| | 8135 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8136 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 8137 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 8138 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, |
| | 8139 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 8140 | else => unreachable, |
| | 8141 | .zero => "truncq", |
| | 8142 | .down => "floorq", |
| | 8143 | } } } }, |
| | 8144 | .unused, |
| | 8145 | .unused, |
| | 8146 | .unused, |
| | 8147 | .unused, |
| | 8148 | }, |
| | 8149 | .dst_temps = .{.mem}, |
| | 8150 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8151 | .each = .{ .once = &.{ |
| | 8152 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8153 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8154 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8155 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8156 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 8157 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 8158 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 8159 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8160 | } }, |
| | 8161 | }, .{ |
| | 8162 | .required_features = .{ .sse2, null, null, null }, |
| | 8163 | .src_constraints = .{ |
| | 8164 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8165 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8166 | .any, |
| | 8167 | }, |
| | 8168 | .patterns = &.{ |
| | 8169 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8170 | }, |
| | 8171 | .call_frame = .{ .alignment = .@"16" }, |
| | 8172 | .extra_temps = .{ |
| | 8173 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8174 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 8175 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 8176 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, |
| | 8177 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 8178 | else => unreachable, |
| | 8179 | .zero => "truncq", |
| | 8180 | .down => "floorq", |
| | 8181 | } } } }, |
| | 8182 | .unused, |
| | 8183 | .unused, |
| | 8184 | .unused, |
| | 8185 | .unused, |
| | 8186 | }, |
| | 8187 | .dst_temps = .{.mem}, |
| | 8188 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8189 | .each = .{ .once = &.{ |
| | 8190 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8191 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8192 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8193 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8194 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 8195 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 8196 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 8197 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8198 | } }, |
| | 8199 | }, .{ |
| | 8200 | .required_features = .{ .sse, null, null, null }, |
| | 8201 | .src_constraints = .{ |
| | 8202 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8203 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8204 | .any, |
| | 8205 | }, |
| | 8206 | .patterns = &.{ |
| | 8207 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8208 | }, |
| | 8209 | .call_frame = .{ .alignment = .@"16" }, |
| | 8210 | .extra_temps = .{ |
| | 8211 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8212 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 8213 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 8214 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, |
| | 8215 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 8216 | else => unreachable, |
| | 8217 | .zero => "truncq", |
| | 8218 | .down => "floorq", |
| | 8219 | } } } }, |
| | 8220 | .unused, |
| | 8221 | .unused, |
| | 8222 | .unused, |
| | 8223 | .unused, |
| | 8224 | }, |
| | 8225 | .dst_temps = .{.mem}, |
| | 8226 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8227 | .each = .{ .once = &.{ |
| | 8228 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8229 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8230 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8231 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8232 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 8233 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 8234 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 8235 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8236 | } }, |
| | 8237 | } }, |
| | 8238 | }) catch |err| switch (err) { |
| | 8239 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 8240 | @tagName(air_tag), |
| | 8241 | cg.typeOf(bin_op.lhs).fmt(pt), |
| | 8242 | ops[0].tracking(cg), |
| | 8243 | ops[1].tracking(cg), |
| | 8244 | }), |
| | 8245 | else => |e| return e, |
| | 8246 | }; |
| | 8247 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 8248 | }, |
| | 8249 | .rem, .rem_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .rem) else fallback: { |
| | 8250 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| | 8251 | if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .rem); |
| | 8252 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 8253 | var res: [1]Temp = undefined; |
| | 8254 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ |
| | 8255 | .required_features = .{ .sse, null, null, null }, |
| | 8256 | .src_constraints = .{ |
| | 8257 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 8258 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 8259 | .any, |
| | 8260 | }, |
| | 8261 | .patterns = &.{ |
| | 8262 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 8263 | }, |
| | 8264 | .call_frame = .{ .alignment = .@"16" }, |
| | 8265 | .extra_temps = .{ |
| | 8266 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 8267 | .unused, |
| | 8268 | .unused, |
| | 8269 | .unused, |
| | 8270 | .unused, |
| | 8271 | .unused, |
| | 8272 | .unused, |
| | 8273 | .unused, |
| | 8274 | .unused, |
| | 8275 | }, |
| | 8276 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 8277 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8278 | .each = .{ .once = &.{ |
| | 8279 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 8280 | } }, |
| | 8281 | }, .{ |
| | 8282 | .required_features = .{ .avx, null, null, null }, |
| | 8283 | .src_constraints = .{ |
| | 8284 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 8285 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 8286 | .any, |
| | 8287 | }, |
| | 8288 | .patterns = &.{ |
| | 8289 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8290 | }, |
| | 8291 | .call_frame = .{ .alignment = .@"16" }, |
| | 8292 | .extra_temps = .{ |
| | 8293 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8294 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 8295 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 8296 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 8297 | .unused, |
| | 8298 | .unused, |
| | 8299 | .unused, |
| | 8300 | .unused, |
| | 8301 | .unused, |
| | 8302 | }, |
| | 8303 | .dst_temps = .{.mem}, |
| | 8304 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8305 | .each = .{ .once = &.{ |
| | 8306 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8307 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 8308 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 8309 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 8310 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8311 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 8312 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 8313 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8314 | } }, |
| | 8315 | }, .{ |
| | 8316 | .required_features = .{ .sse4_1, null, null, null }, |
| | 8317 | .src_constraints = .{ |
| | 8318 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 8319 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 8320 | .any, |
| | 8321 | }, |
| | 8322 | .patterns = &.{ |
| | 8323 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8324 | }, |
| | 8325 | .call_frame = .{ .alignment = .@"16" }, |
| | 8326 | .extra_temps = .{ |
| | 8327 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8328 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 8329 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 8330 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 8331 | .unused, |
| | 8332 | .unused, |
| | 8333 | .unused, |
| | 8334 | .unused, |
| | 8335 | .unused, |
| | 8336 | }, |
| | 8337 | .dst_temps = .{.mem}, |
| | 8338 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8339 | .each = .{ .once = &.{ |
| | 8340 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8341 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 8342 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 8343 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 8344 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 8345 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8346 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 8347 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 8348 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8349 | } }, |
| | 8350 | }, .{ |
| | 8351 | .required_features = .{ .sse2, null, null, null }, |
| | 8352 | .src_constraints = .{ |
| | 8353 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 8354 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 8355 | .any, |
| | 8356 | }, |
| | 8357 | .patterns = &.{ |
| | 8358 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8359 | }, |
| | 8360 | .call_frame = .{ .alignment = .@"16" }, |
| | 8361 | .extra_temps = .{ |
| | 8362 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8363 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 8364 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 8365 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 8366 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 8367 | .unused, |
| | 8368 | .unused, |
| | 8369 | .unused, |
| | 8370 | .unused, |
| | 8371 | }, |
| | 8372 | .dst_temps = .{.mem}, |
| | 8373 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8374 | .each = .{ .once = &.{ |
| | 8375 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8376 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 8377 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 8378 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 8379 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 8380 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8381 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, |
| | 8382 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 8383 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 8384 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8385 | } }, |
| | 8386 | }, .{ |
| | 8387 | .required_features = .{ .sse, null, null, null }, |
| | 8388 | .src_constraints = .{ |
| | 8389 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 8390 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 8391 | .any, |
| | 8392 | }, |
| | 8393 | .patterns = &.{ |
| | 8394 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8395 | }, |
| | 8396 | .call_frame = .{ .alignment = .@"16" }, |
| | 8397 | .extra_temps = .{ |
| | 8398 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8399 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 8400 | .{ .type = .f32, .kind = .mem }, |
| | 8401 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 8402 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 8403 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 8404 | .unused, |
| | 8405 | .unused, |
| | 8406 | .unused, |
| | 8407 | }, |
| | 8408 | .dst_temps = .{.mem}, |
| | 8409 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8410 | .each = .{ .once = &.{ |
| | 8411 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8412 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8413 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 8414 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 8415 | .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8416 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 8417 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| | 8418 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 8419 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| | 8420 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 8421 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 8422 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 8423 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8424 | } }, |
| | 8425 | }, .{ |
| | 8426 | .required_features = .{ .sse, null, null, null }, |
| | 8427 | .src_constraints = .{ |
| | 8428 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 8429 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 8430 | .any, |
| | 8431 | }, |
| | 8432 | .patterns = &.{ |
| | 8433 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 8434 | }, |
| | 8435 | .call_frame = .{ .alignment = .@"16" }, |
| | 8436 | .extra_temps = .{ |
| | 8437 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, |
| | 8438 | .unused, |
| | 8439 | .unused, |
| | 8440 | .unused, |
| | 8441 | .unused, |
| | 8442 | .unused, |
| | 8443 | .unused, |
| | 8444 | .unused, |
| | 8445 | .unused, |
| | 8446 | }, |
| | 8447 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 8448 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8449 | .each = .{ .once = &.{ |
| | 8450 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 8451 | } }, |
| | 8452 | }, .{ |
| | 8453 | .required_features = .{ .avx, null, null, null }, |
| | 8454 | .src_constraints = .{ |
| | 8455 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 8456 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 8457 | .any, |
| | 8458 | }, |
| | 8459 | .patterns = &.{ |
| | 8460 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8461 | }, |
| | 8462 | .call_frame = .{ .alignment = .@"16" }, |
| | 8463 | .extra_temps = .{ |
| | 8464 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8465 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 8466 | .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, |
| | 8467 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, |
| | 8468 | .unused, |
| | 8469 | .unused, |
| | 8470 | .unused, |
| | 8471 | .unused, |
| | 8472 | .unused, |
| | 8473 | }, |
| | 8474 | .dst_temps = .{.mem}, |
| | 8475 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8476 | .each = .{ .once = &.{ |
| | 8477 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8478 | .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8479 | .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8480 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8481 | .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 8482 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 8483 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8484 | } }, |
| | 8485 | }, .{ |
| | 8486 | .required_features = .{ .sse, null, null, null }, |
| | 8487 | .src_constraints = .{ |
| | 8488 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 8489 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 8490 | .any, |
| | 8491 | }, |
| | 8492 | .patterns = &.{ |
| | 8493 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8494 | }, |
| | 8495 | .call_frame = .{ .alignment = .@"16" }, |
| | 8496 | .extra_temps = .{ |
| | 8497 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8498 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 8499 | .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, |
| | 8500 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, |
| | 8501 | .unused, |
| | 8502 | .unused, |
| | 8503 | .unused, |
| | 8504 | .unused, |
| | 8505 | .unused, |
| | 8506 | }, |
| | 8507 | .dst_temps = .{.mem}, |
| | 8508 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8509 | .each = .{ .once = &.{ |
| | 8510 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8511 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8512 | .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8513 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8514 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 8515 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 8516 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8517 | } }, |
| | 8518 | }, .{ |
| | 8519 | .required_features = .{ .sse, null, null, null }, |
| | 8520 | .src_constraints = .{ |
| | 8521 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 8522 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 8523 | .any, |
| | 8524 | }, |
| | 8525 | .patterns = &.{ |
| | 8526 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 8527 | }, |
| | 8528 | .call_frame = .{ .alignment = .@"16" }, |
| | 8529 | .extra_temps = .{ |
| | 8530 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, |
| | 8531 | .unused, |
| | 8532 | .unused, |
| | 8533 | .unused, |
| | 8534 | .unused, |
| | 8535 | .unused, |
| | 8536 | .unused, |
| | 8537 | .unused, |
| | 8538 | .unused, |
| | 8539 | }, |
| | 8540 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 8541 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8542 | .each = .{ .once = &.{ |
| | 8543 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 8544 | } }, |
| | 8545 | }, .{ |
| | 8546 | .required_features = .{ .avx, null, null, null }, |
| | 8547 | .src_constraints = .{ |
| | 8548 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 8549 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 8550 | .any, |
| | 8551 | }, |
| | 8552 | .patterns = &.{ |
| | 8553 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8554 | }, |
| | 8555 | .call_frame = .{ .alignment = .@"16" }, |
| | 8556 | .extra_temps = .{ |
| | 8557 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8558 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 8559 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, |
| | 8560 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, |
| | 8561 | .unused, |
| | 8562 | .unused, |
| | 8563 | .unused, |
| | 8564 | .unused, |
| | 8565 | .unused, |
| | 8566 | }, |
| | 8567 | .dst_temps = .{.mem}, |
| | 8568 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8569 | .each = .{ .once = &.{ |
| | 8570 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8571 | .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8572 | .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8573 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8574 | .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 8575 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 8576 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8577 | } }, |
| | 8578 | }, .{ |
| | 8579 | .required_features = .{ .sse2, null, null, null }, |
| | 8580 | .src_constraints = .{ |
| | 8581 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 8582 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 8583 | .any, |
| | 8584 | }, |
| | 8585 | .patterns = &.{ |
| | 8586 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8587 | }, |
| | 8588 | .call_frame = .{ .alignment = .@"16" }, |
| | 8589 | .extra_temps = .{ |
| | 8590 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8591 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 8592 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, |
| | 8593 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, |
| | 8594 | .unused, |
| | 8595 | .unused, |
| | 8596 | .unused, |
| | 8597 | .unused, |
| | 8598 | .unused, |
| | 8599 | }, |
| | 8600 | .dst_temps = .{.mem}, |
| | 8601 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8602 | .each = .{ .once = &.{ |
| | 8603 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8604 | .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8605 | .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8606 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8607 | .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 8608 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 8609 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8610 | } }, |
| | 8611 | }, .{ |
| | 8612 | .required_features = .{ .sse, null, null, null }, |
| | 8613 | .src_constraints = .{ |
| | 8614 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 8615 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 8616 | .any, |
| | 8617 | }, |
| | 8618 | .patterns = &.{ |
| | 8619 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8620 | }, |
| | 8621 | .call_frame = .{ .alignment = .@"16" }, |
| | 8622 | .extra_temps = .{ |
| | 8623 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8624 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 8625 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, |
| | 8626 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, |
| | 8627 | .unused, |
| | 8628 | .unused, |
| | 8629 | .unused, |
| | 8630 | .unused, |
| | 8631 | .unused, |
| | 8632 | }, |
| | 8633 | .dst_temps = .{.mem}, |
| | 8634 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8635 | .each = .{ .once = &.{ |
| | 8636 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8637 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 8638 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 8639 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8640 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8641 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8642 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 8643 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 8644 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8645 | } }, |
| | 8646 | }, .{ |
| | 8647 | .required_features = .{ .avx, .x87, null, null }, |
| | 8648 | .src_constraints = .{ |
| | 8649 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8650 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8651 | .any, |
| | 8652 | }, |
| | 8653 | .patterns = &.{ |
| | 8654 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8655 | }, |
| | 8656 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 8657 | .extra_temps = .{ |
| | 8658 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 8659 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 8660 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 8661 | .unused, |
| | 8662 | .unused, |
| | 8663 | .unused, |
| | 8664 | .unused, |
| | 8665 | .unused, |
| | 8666 | .unused, |
| | 8667 | }, |
| | 8668 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 8669 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8670 | .each = .{ .once = &.{ |
| | 8671 | .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 8672 | .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 8673 | .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ }, |
| | 8674 | .{ ._, .v_dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, |
| | 8675 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 8676 | } }, |
| | 8677 | }, .{ |
| | 8678 | .required_features = .{ .sse2, .x87, null, null }, |
| | 8679 | .src_constraints = .{ |
| | 8680 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8681 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8682 | .any, |
| | 8683 | }, |
| | 8684 | .patterns = &.{ |
| | 8685 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8686 | }, |
| | 8687 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 8688 | .extra_temps = .{ |
| | 8689 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 8690 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 8691 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 8692 | .unused, |
| | 8693 | .unused, |
| | 8694 | .unused, |
| | 8695 | .unused, |
| | 8696 | .unused, |
| | 8697 | .unused, |
| | 8698 | }, |
| | 8699 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 8700 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8701 | .each = .{ .once = &.{ |
| | 8702 | .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 8703 | .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 8704 | .{ ._, ._dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ }, |
| | 8705 | .{ ._, ._dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, |
| | 8706 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 8707 | } }, |
| | 8708 | }, .{ |
| | 8709 | .required_features = .{ .sse, .x87, null, null }, |
| | 8710 | .src_constraints = .{ |
| | 8711 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8712 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8713 | .any, |
| | 8714 | }, |
| | 8715 | .patterns = &.{ |
| | 8716 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8717 | }, |
| | 8718 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 8719 | .extra_temps = .{ |
| | 8720 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 8721 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 8722 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 8723 | .unused, |
| | 8724 | .unused, |
| | 8725 | .unused, |
| | 8726 | .unused, |
| | 8727 | .unused, |
| | 8728 | .unused, |
| | 8729 | }, |
| | 8730 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 8731 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8732 | .each = .{ .once = &.{ |
| | 8733 | .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 8734 | .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 8735 | .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ }, |
| | 8736 | .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, |
| | 8737 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 8738 | } }, |
| | 8739 | }, .{ |
| | 8740 | .required_features = .{ .avx, .x87, null, null }, |
| | 8741 | .src_constraints = .{ |
| | 8742 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8743 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8744 | .any, |
| | 8745 | }, |
| | 8746 | .patterns = &.{ |
| | 8747 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8748 | }, |
| | 8749 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 8750 | .extra_temps = .{ |
| | 8751 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8752 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 8753 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 8754 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 8755 | .unused, |
| | 8756 | .unused, |
| | 8757 | .unused, |
| | 8758 | .unused, |
| | 8759 | .unused, |
| | 8760 | }, |
| | 8761 | .dst_temps = .{.mem}, |
| | 8762 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8763 | .each = .{ .once = &.{ |
| | 8764 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8765 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8766 | .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 8767 | .{ ._, .v_dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8768 | .{ ._, .v_dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, |
| | 8769 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8770 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 8771 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 8772 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 8773 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8774 | } }, |
| | 8775 | }, .{ |
| | 8776 | .required_features = .{ .sse2, .x87, null, null }, |
| | 8777 | .src_constraints = .{ |
| | 8778 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8779 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8780 | .any, |
| | 8781 | }, |
| | 8782 | .patterns = &.{ |
| | 8783 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8784 | }, |
| | 8785 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 8786 | .extra_temps = .{ |
| | 8787 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8788 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 8789 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 8790 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 8791 | .unused, |
| | 8792 | .unused, |
| | 8793 | .unused, |
| | 8794 | .unused, |
| | 8795 | .unused, |
| | 8796 | }, |
| | 8797 | .dst_temps = .{.mem}, |
| | 8798 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8799 | .each = .{ .once = &.{ |
| | 8800 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8801 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8802 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 8803 | .{ ._, ._dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8804 | .{ ._, ._dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, |
| | 8805 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8806 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 8807 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 8808 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 8809 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8810 | } }, |
| | 8811 | }, .{ |
| | 8812 | .required_features = .{ .sse, .x87, null, null }, |
| | 8813 | .src_constraints = .{ |
| | 8814 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8815 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 8816 | .any, |
| | 8817 | }, |
| | 8818 | .patterns = &.{ |
| | 8819 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8820 | }, |
| | 8821 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 8822 | .extra_temps = .{ |
| | 8823 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8824 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 8825 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 8826 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 8827 | .unused, |
| | 8828 | .unused, |
| | 8829 | .unused, |
| | 8830 | .unused, |
| | 8831 | .unused, |
| | 8832 | }, |
| | 8833 | .dst_temps = .{.mem}, |
| | 8834 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8835 | .each = .{ .once = &.{ |
| | 8836 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8837 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8838 | .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 8839 | .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8840 | .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, |
| | 8841 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8842 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 8843 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 8844 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 8845 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8846 | } }, |
| | 8847 | }, .{ |
| | 8848 | .required_features = .{ .sse, null, null, null }, |
| | 8849 | .src_constraints = .{ |
| | 8850 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8851 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8852 | .any, |
| | 8853 | }, |
| | 8854 | .patterns = &.{ |
| | 8855 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 8856 | }, |
| | 8857 | .call_frame = .{ .alignment = .@"16" }, |
| | 8858 | .extra_temps = .{ |
| | 8859 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, |
| | 8860 | .unused, |
| | 8861 | .unused, |
| | 8862 | .unused, |
| | 8863 | .unused, |
| | 8864 | .unused, |
| | 8865 | .unused, |
| | 8866 | .unused, |
| | 8867 | .unused, |
| | 8868 | }, |
| | 8869 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 8870 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8871 | .each = .{ .once = &.{ |
| | 8872 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 8873 | } }, |
| | 8874 | }, .{ |
| | 8875 | .required_features = .{ .avx, null, null, null }, |
| | 8876 | .src_constraints = .{ |
| | 8877 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8878 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8879 | .any, |
| | 8880 | }, |
| | 8881 | .patterns = &.{ |
| | 8882 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8883 | }, |
| | 8884 | .call_frame = .{ .alignment = .@"16" }, |
| | 8885 | .extra_temps = .{ |
| | 8886 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8887 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 8888 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 8889 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, |
| | 8890 | .unused, |
| | 8891 | .unused, |
| | 8892 | .unused, |
| | 8893 | .unused, |
| | 8894 | .unused, |
| | 8895 | }, |
| | 8896 | .dst_temps = .{.mem}, |
| | 8897 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8898 | .each = .{ .once = &.{ |
| | 8899 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8900 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8901 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8902 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8903 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 8904 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 8905 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8906 | } }, |
| | 8907 | }, .{ |
| | 8908 | .required_features = .{ .sse2, null, null, null }, |
| | 8909 | .src_constraints = .{ |
| | 8910 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8911 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8912 | .any, |
| | 8913 | }, |
| | 8914 | .patterns = &.{ |
| | 8915 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8916 | }, |
| | 8917 | .call_frame = .{ .alignment = .@"16" }, |
| | 8918 | .extra_temps = .{ |
| | 8919 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8920 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 8921 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 8922 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, |
| | 8923 | .unused, |
| | 8924 | .unused, |
| | 8925 | .unused, |
| | 8926 | .unused, |
| | 8927 | .unused, |
| | 8928 | }, |
| | 8929 | .dst_temps = .{.mem}, |
| | 8930 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8931 | .each = .{ .once = &.{ |
| | 8932 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8933 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8934 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8935 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8936 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 8937 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 8938 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8939 | } }, |
| | 8940 | }, .{ |
| | 8941 | .required_features = .{ .sse, null, null, null }, |
| | 8942 | .src_constraints = .{ |
| | 8943 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8944 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 8945 | .any, |
| | 8946 | }, |
| | 8947 | .patterns = &.{ |
| | 8948 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 8949 | }, |
| | 8950 | .call_frame = .{ .alignment = .@"16" }, |
| | 8951 | .extra_temps = .{ |
| | 8952 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 8953 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 8954 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 8955 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, |
| | 8956 | .unused, |
| | 8957 | .unused, |
| | 8958 | .unused, |
| | 8959 | .unused, |
| | 8960 | .unused, |
| | 8961 | }, |
| | 8962 | .dst_temps = .{.mem}, |
| | 8963 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 8964 | .each = .{ .once = &.{ |
| | 8965 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 8966 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8967 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 8968 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 8969 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 8970 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 8971 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 8972 | } }, |
| | 8973 | } }) catch |err| switch (err) { |
| | 8974 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 8975 | @tagName(air_tag), |
| | 8976 | cg.typeOf(bin_op.lhs).fmt(pt), |
| | 8977 | ops[0].tracking(cg), |
| | 8978 | ops[1].tracking(cg), |
| | 8979 | }), |
| | 8980 | else => |e| return e, |
| | 8981 | }; |
| | 8982 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 8983 | }, |
| | 8984 | .mod, .mod_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mod) else fallback: { |
| | 8985 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| | 8986 | if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .mod); |
| | 8987 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 8988 | var res: [1]Temp = undefined; |
| | 8989 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ |
| | 8990 | .required_features = .{ .f16c, .fast_imm16, null, null }, |
| | 8991 | .src_constraints = .{ |
| | 8992 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 8993 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 8994 | .any, |
| | 8995 | }, |
| | 8996 | .patterns = &.{ |
| | 8997 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 8998 | }, |
| | 8999 | .call_frame = .{ .alignment = .@"16" }, |
| | 9000 | .extra_temps = .{ |
| | 9001 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9002 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9003 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9004 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9005 | .unused, |
| | 9006 | .unused, |
| | 9007 | .unused, |
| | 9008 | .unused, |
| | 9009 | .unused, |
| | 9010 | }, |
| | 9011 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 9012 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9013 | .each = .{ .once = &.{ |
| | 9014 | .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ }, |
| | 9015 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 9016 | .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ }, |
| | 9017 | .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, |
| | 9018 | .{ ._, ._, .@"and", .tmp3w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9019 | .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, |
| | 9020 | .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9021 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 9022 | .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ }, |
| | 9023 | .{ ._, .v_ps, .cvtph2, .src0x, .src0q, ._, ._ }, |
| | 9024 | .{ ._, .v_ps, .cvtph2, .src1x, .src1q, ._, ._ }, |
| | 9025 | .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ }, |
| | 9026 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| | 9027 | } }, |
| | 9028 | }, .{ |
| | 9029 | .required_features = .{ .f16c, null, null, null }, |
| | 9030 | .src_constraints = .{ |
| | 9031 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9032 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9033 | .any, |
| | 9034 | }, |
| | 9035 | .patterns = &.{ |
| | 9036 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 9037 | }, |
| | 9038 | .call_frame = .{ .alignment = .@"16" }, |
| | 9039 | .extra_temps = .{ |
| | 9040 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9041 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9042 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9043 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9044 | .unused, |
| | 9045 | .unused, |
| | 9046 | .unused, |
| | 9047 | .unused, |
| | 9048 | .unused, |
| | 9049 | }, |
| | 9050 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 9051 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9052 | .each = .{ .once = &.{ |
| | 9053 | .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ }, |
| | 9054 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 9055 | .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ }, |
| | 9056 | .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, |
| | 9057 | .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9058 | .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, |
| | 9059 | .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9060 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 9061 | .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ }, |
| | 9062 | .{ ._, .v_ps, .cvtph2, .src0x, .src0q, ._, ._ }, |
| | 9063 | .{ ._, .v_ps, .cvtph2, .src1x, .src1q, ._, ._ }, |
| | 9064 | .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ }, |
| | 9065 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| | 9066 | } }, |
| | 9067 | }, .{ |
| | 9068 | .required_features = .{ .avx, .fast_imm16, null, null }, |
| | 9069 | .src_constraints = .{ |
| | 9070 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9071 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9072 | .any, |
| | 9073 | }, |
| | 9074 | .patterns = &.{ |
| | 9075 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 9076 | }, |
| | 9077 | .call_frame = .{ .alignment = .@"16" }, |
| | 9078 | .extra_temps = .{ |
| | 9079 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9080 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9081 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9082 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9083 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9084 | .unused, |
| | 9085 | .unused, |
| | 9086 | .unused, |
| | 9087 | .unused, |
| | 9088 | }, |
| | 9089 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 9090 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9091 | .each = .{ .once = &.{ |
| | 9092 | .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ }, |
| | 9093 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 9094 | .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ }, |
| | 9095 | .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, |
| | 9096 | .{ ._, ._, .@"and", .tmp3w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9097 | .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, |
| | 9098 | .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9099 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 9100 | .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ }, |
| | 9101 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9102 | } }, |
| | 9103 | }, .{ |
| | 9104 | .required_features = .{ .avx, null, null, null }, |
| | 9105 | .src_constraints = .{ |
| | 9106 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9107 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9108 | .any, |
| | 9109 | }, |
| | 9110 | .patterns = &.{ |
| | 9111 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 9112 | }, |
| | 9113 | .call_frame = .{ .alignment = .@"16" }, |
| | 9114 | .extra_temps = .{ |
| | 9115 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9116 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9117 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9118 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9119 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9120 | .unused, |
| | 9121 | .unused, |
| | 9122 | .unused, |
| | 9123 | .unused, |
| | 9124 | }, |
| | 9125 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 9126 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9127 | .each = .{ .once = &.{ |
| | 9128 | .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ }, |
| | 9129 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 9130 | .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ }, |
| | 9131 | .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, |
| | 9132 | .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9133 | .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, |
| | 9134 | .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9135 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 9136 | .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ }, |
| | 9137 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9138 | } }, |
| | 9139 | }, .{ |
| | 9140 | .required_features = .{ .sse2, .fast_imm16, null, null }, |
| | 9141 | .src_constraints = .{ |
| | 9142 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9143 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9144 | .any, |
| | 9145 | }, |
| | 9146 | .patterns = &.{ |
| | 9147 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 9148 | }, |
| | 9149 | .call_frame = .{ .alignment = .@"16" }, |
| | 9150 | .extra_temps = .{ |
| | 9151 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9152 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9153 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9154 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9155 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9156 | .unused, |
| | 9157 | .unused, |
| | 9158 | .unused, |
| | 9159 | .unused, |
| | 9160 | }, |
| | 9161 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 9162 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9163 | .each = .{ .once = &.{ |
| | 9164 | .{ ._, ._d, .mov, .tmp0d, .src1x, ._, ._ }, |
| | 9165 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 9166 | .{ ._, ._d, .mov, .tmp2d, .dst0x, ._, ._ }, |
| | 9167 | .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, |
| | 9168 | .{ ._, ._, .@"and", .tmp3w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9169 | .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, |
| | 9170 | .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9171 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 9172 | .{ ._, ._d, .mov, .src1x, .tmp0d, ._, ._ }, |
| | 9173 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9174 | } }, |
| | 9175 | }, .{ |
| | 9176 | .required_features = .{ .sse2, null, null, null }, |
| | 9177 | .src_constraints = .{ |
| | 9178 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9179 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9180 | .any, |
| | 9181 | }, |
| | 9182 | .patterns = &.{ |
| | 9183 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 9184 | }, |
| | 9185 | .call_frame = .{ .alignment = .@"16" }, |
| | 9186 | .extra_temps = .{ |
| | 9187 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9188 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9189 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9190 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9191 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9192 | .unused, |
| | 9193 | .unused, |
| | 9194 | .unused, |
| | 9195 | .unused, |
| | 9196 | }, |
| | 9197 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 9198 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9199 | .each = .{ .once = &.{ |
| | 9200 | .{ ._, ._d, .mov, .tmp0d, .src1x, ._, ._ }, |
| | 9201 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 9202 | .{ ._, ._d, .mov, .tmp2d, .dst0x, ._, ._ }, |
| | 9203 | .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, |
| | 9204 | .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9205 | .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, |
| | 9206 | .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9207 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 9208 | .{ ._, ._d, .mov, .src1x, .tmp0d, ._, ._ }, |
| | 9209 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9210 | } }, |
| | 9211 | }, .{ |
| | 9212 | .required_features = .{ .sse, .fast_imm16, null, null }, |
| | 9213 | .src_constraints = .{ |
| | 9214 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9215 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9216 | .any, |
| | 9217 | }, |
| | 9218 | .patterns = &.{ |
| | 9219 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 9220 | }, |
| | 9221 | .call_frame = .{ .alignment = .@"16" }, |
| | 9222 | .extra_temps = .{ |
| | 9223 | .{ .type = .f32, .kind = .mem }, |
| | 9224 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9225 | .{ .type = .f32, .kind = .mem }, |
| | 9226 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9227 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9228 | .unused, |
| | 9229 | .unused, |
| | 9230 | .unused, |
| | 9231 | .unused, |
| | 9232 | }, |
| | 9233 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 9234 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9235 | .each = .{ .once = &.{ |
| | 9236 | .{ ._, ._ss, .mov, .mem(.tmp0d), .src1x, ._, ._ }, |
| | 9237 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 9238 | .{ ._, ._ss, .mov, .mem(.tmp2d), .dst0x, ._, ._ }, |
| | 9239 | .{ ._, ._, .mov, .tmp3d, .mem(.tmp0d), ._, ._ }, |
| | 9240 | .{ ._, ._, .@"and", .tmp3w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9241 | .{ ._, ._, .xor, .tmp3d, .mem(.tmp2d), ._, ._ }, |
| | 9242 | .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9243 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 9244 | .{ ._, ._ss, .mov, .src1x, .mem(.tmp0d), ._, ._ }, |
| | 9245 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9246 | } }, |
| | 9247 | }, .{ |
| | 9248 | .required_features = .{ .sse, null, null, null }, |
| | 9249 | .src_constraints = .{ |
| | 9250 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9251 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 9252 | .any, |
| | 9253 | }, |
| | 9254 | .patterns = &.{ |
| | 9255 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 9256 | }, |
| | 9257 | .call_frame = .{ .alignment = .@"16" }, |
| | 9258 | .extra_temps = .{ |
| | 9259 | .{ .type = .f32, .kind = .mem }, |
| | 9260 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9261 | .{ .type = .f32, .kind = .mem }, |
| | 9262 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9263 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9264 | .unused, |
| | 9265 | .unused, |
| | 9266 | .unused, |
| | 9267 | .unused, |
| | 9268 | }, |
| | 9269 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 9270 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9271 | .each = .{ .once = &.{ |
| | 9272 | .{ ._, ._ss, .mov, .mem(.tmp0d), .src1x, ._, ._ }, |
| | 9273 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 9274 | .{ ._, ._ss, .mov, .mem(.tmp2d), .dst0x, ._, ._ }, |
| | 9275 | .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9276 | .{ ._, ._, .@"and", .tmp3d, .mem(.tmp0d), ._, ._ }, |
| | 9277 | .{ ._, ._, .xor, .tmp3d, .mem(.tmp2d), ._, ._ }, |
| | 9278 | .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9279 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 9280 | .{ ._, ._ss, .mov, .src1x, .mem(.tmp0d), ._, ._ }, |
| | 9281 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9282 | } }, |
| | 9283 | }, .{ |
| | 9284 | .required_features = .{ .f16c, .fast_imm16, null, null }, |
| | 9285 | .src_constraints = .{ |
| | 9286 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9287 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9288 | .any, |
| | 9289 | }, |
| | 9290 | .patterns = &.{ |
| | 9291 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9292 | }, |
| | 9293 | .call_frame = .{ .alignment = .@"16" }, |
| | 9294 | .extra_temps = .{ |
| | 9295 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9296 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 9297 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9298 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 9299 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9300 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9301 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9302 | .unused, |
| | 9303 | .unused, |
| | 9304 | }, |
| | 9305 | .dst_temps = .{.mem}, |
| | 9306 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9307 | .each = .{ .once = &.{ |
| | 9308 | .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, |
| | 9309 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 9310 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 9311 | .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9312 | .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9313 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9314 | .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ }, |
| | 9315 | .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, |
| | 9316 | .{ ._, ._, .@"and", .tmp6w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9317 | .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, |
| | 9318 | .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9319 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9320 | .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9321 | .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1x, ._, ._ }, |
| | 9322 | .{ ._, .v_ps, .cvtph2, .tmp3x, .tmp3x, ._, ._ }, |
| | 9323 | .{ ._, .v_ss, .add, .tmp1x, .tmp1x, .tmp3d, ._ }, |
| | 9324 | .{ ._, .v_, .cvtps2ph, .tmp1q, .tmp1x, .rm(.{}), ._ }, |
| | 9325 | .{ .@"1:", .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 9326 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 9327 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9328 | } }, |
| | 9329 | }, .{ |
| | 9330 | .required_features = .{ .f16c, null, null, null }, |
| | 9331 | .src_constraints = .{ |
| | 9332 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9333 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9334 | .any, |
| | 9335 | }, |
| | 9336 | .patterns = &.{ |
| | 9337 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9338 | }, |
| | 9339 | .call_frame = .{ .alignment = .@"16" }, |
| | 9340 | .extra_temps = .{ |
| | 9341 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9342 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 9343 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9344 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 9345 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9346 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9347 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9348 | .unused, |
| | 9349 | .unused, |
| | 9350 | }, |
| | 9351 | .dst_temps = .{.mem}, |
| | 9352 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9353 | .each = .{ .once = &.{ |
| | 9354 | .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, |
| | 9355 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 9356 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 9357 | .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9358 | .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9359 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9360 | .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ }, |
| | 9361 | .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, |
| | 9362 | .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9363 | .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, |
| | 9364 | .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9365 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9366 | .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9367 | .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1x, ._, ._ }, |
| | 9368 | .{ ._, .v_ps, .cvtph2, .tmp3x, .tmp3x, ._, ._ }, |
| | 9369 | .{ ._, .v_ss, .add, .tmp1x, .tmp1x, .tmp3d, ._ }, |
| | 9370 | .{ ._, .v_, .cvtps2ph, .tmp1q, .tmp1x, .rm(.{}), ._ }, |
| | 9371 | .{ .@"1:", .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 9372 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 9373 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9374 | } }, |
| | 9375 | }, .{ |
| | 9376 | .required_features = .{ .avx, .fast_imm16, null, null }, |
| | 9377 | .src_constraints = .{ |
| | 9378 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9379 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9380 | .any, |
| | 9381 | }, |
| | 9382 | .patterns = &.{ |
| | 9383 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9384 | }, |
| | 9385 | .call_frame = .{ .alignment = .@"16" }, |
| | 9386 | .extra_temps = .{ |
| | 9387 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9388 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 9389 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9390 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 9391 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9392 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9393 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9394 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9395 | .unused, |
| | 9396 | }, |
| | 9397 | .dst_temps = .{.mem}, |
| | 9398 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9399 | .each = .{ .once = &.{ |
| | 9400 | .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, |
| | 9401 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 9402 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 9403 | .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9404 | .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9405 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9406 | .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ }, |
| | 9407 | .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, |
| | 9408 | .{ ._, ._, .@"and", .tmp6w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9409 | .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, |
| | 9410 | .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9411 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9412 | .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9413 | .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, |
| | 9414 | .{ .@"1:", .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 9415 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 9416 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9417 | } }, |
| | 9418 | }, .{ |
| | 9419 | .required_features = .{ .avx, null, null, null }, |
| | 9420 | .src_constraints = .{ |
| | 9421 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9422 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9423 | .any, |
| | 9424 | }, |
| | 9425 | .patterns = &.{ |
| | 9426 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9427 | }, |
| | 9428 | .call_frame = .{ .alignment = .@"16" }, |
| | 9429 | .extra_temps = .{ |
| | 9430 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9431 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 9432 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9433 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 9434 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9435 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9436 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9437 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9438 | .unused, |
| | 9439 | }, |
| | 9440 | .dst_temps = .{.mem}, |
| | 9441 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9442 | .each = .{ .once = &.{ |
| | 9443 | .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, |
| | 9444 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 9445 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 9446 | .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9447 | .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9448 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9449 | .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ }, |
| | 9450 | .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, |
| | 9451 | .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9452 | .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, |
| | 9453 | .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9454 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9455 | .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9456 | .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, |
| | 9457 | .{ .@"1:", .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 9458 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 9459 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9460 | } }, |
| | 9461 | }, .{ |
| | 9462 | .required_features = .{ .sse4_1, .fast_imm16, null, null }, |
| | 9463 | .src_constraints = .{ |
| | 9464 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9465 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9466 | .any, |
| | 9467 | }, |
| | 9468 | .patterns = &.{ |
| | 9469 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9470 | }, |
| | 9471 | .call_frame = .{ .alignment = .@"16" }, |
| | 9472 | .extra_temps = .{ |
| | 9473 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9474 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 9475 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9476 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 9477 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9478 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9479 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9480 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9481 | .unused, |
| | 9482 | }, |
| | 9483 | .dst_temps = .{.mem}, |
| | 9484 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9485 | .each = .{ .once = &.{ |
| | 9486 | .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, |
| | 9487 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 9488 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 9489 | .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9490 | .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9491 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9492 | .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, |
| | 9493 | .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, |
| | 9494 | .{ ._, ._, .@"and", .tmp6w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9495 | .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, |
| | 9496 | .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9497 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9498 | .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9499 | .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, |
| | 9500 | .{ .@"1:", .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 9501 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 9502 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9503 | } }, |
| | 9504 | }, .{ |
| | 9505 | .required_features = .{ .sse4_1, null, null, null }, |
| | 9506 | .src_constraints = .{ |
| | 9507 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9508 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9509 | .any, |
| | 9510 | }, |
| | 9511 | .patterns = &.{ |
| | 9512 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9513 | }, |
| | 9514 | .call_frame = .{ .alignment = .@"16" }, |
| | 9515 | .extra_temps = .{ |
| | 9516 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9517 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 9518 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9519 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 9520 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9521 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9522 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9523 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9524 | .unused, |
| | 9525 | }, |
| | 9526 | .dst_temps = .{.mem}, |
| | 9527 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9528 | .each = .{ .once = &.{ |
| | 9529 | .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, |
| | 9530 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 9531 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 9532 | .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9533 | .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9534 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9535 | .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, |
| | 9536 | .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, |
| | 9537 | .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9538 | .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, |
| | 9539 | .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9540 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9541 | .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9542 | .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, |
| | 9543 | .{ .@"1:", .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 9544 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 9545 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9546 | } }, |
| | 9547 | }, .{ |
| | 9548 | .required_features = .{ .sse2, .fast_imm16, null, null }, |
| | 9549 | .src_constraints = .{ |
| | 9550 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9551 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9552 | .any, |
| | 9553 | }, |
| | 9554 | .patterns = &.{ |
| | 9555 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9556 | }, |
| | 9557 | .call_frame = .{ .alignment = .@"16" }, |
| | 9558 | .extra_temps = .{ |
| | 9559 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9560 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 9561 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9562 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 9563 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9564 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9565 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9566 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9567 | .unused, |
| | 9568 | }, |
| | 9569 | .dst_temps = .{.mem}, |
| | 9570 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9571 | .each = .{ .once = &.{ |
| | 9572 | .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, |
| | 9573 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 9574 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 9575 | .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9576 | .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9577 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9578 | .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, |
| | 9579 | .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, |
| | 9580 | .{ ._, ._, .@"and", .tmp6w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9581 | .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, |
| | 9582 | .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9583 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9584 | .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9585 | .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, |
| | 9586 | .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, |
| | 9587 | .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ }, |
| | 9588 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 9589 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9590 | } }, |
| | 9591 | }, .{ |
| | 9592 | .required_features = .{ .sse2, null, null, null }, |
| | 9593 | .src_constraints = .{ |
| | 9594 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9595 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9596 | .any, |
| | 9597 | }, |
| | 9598 | .patterns = &.{ |
| | 9599 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9600 | }, |
| | 9601 | .call_frame = .{ .alignment = .@"16" }, |
| | 9602 | .extra_temps = .{ |
| | 9603 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9604 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 9605 | .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, |
| | 9606 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 9607 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9608 | .{ .type = .f16, .kind = .{ .reg = .dx } }, |
| | 9609 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9610 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9611 | .unused, |
| | 9612 | }, |
| | 9613 | .dst_temps = .{.mem}, |
| | 9614 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9615 | .each = .{ .once = &.{ |
| | 9616 | .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, |
| | 9617 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 9618 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 9619 | .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9620 | .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9621 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9622 | .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, |
| | 9623 | .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, |
| | 9624 | .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9625 | .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, |
| | 9626 | .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9627 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9628 | .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, |
| | 9629 | .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, |
| | 9630 | .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, |
| | 9631 | .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ }, |
| | 9632 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 9633 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9634 | } }, |
| | 9635 | }, .{ |
| | 9636 | .required_features = .{ .sse, .fast_imm16, null, null }, |
| | 9637 | .src_constraints = .{ |
| | 9638 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9639 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9640 | .any, |
| | 9641 | }, |
| | 9642 | .patterns = &.{ |
| | 9643 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9644 | }, |
| | 9645 | .call_frame = .{ .alignment = .@"16" }, |
| | 9646 | .extra_temps = .{ |
| | 9647 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9648 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9649 | .{ .type = .f32, .kind = .mem }, |
| | 9650 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 9651 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 9652 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9653 | .{ .type = .f32, .kind = .mem }, |
| | 9654 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9655 | .unused, |
| | 9656 | }, |
| | 9657 | .dst_temps = .{.mem}, |
| | 9658 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9659 | .each = .{ .once = &.{ |
| | 9660 | .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, |
| | 9661 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9662 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 9663 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 9664 | .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9665 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 9666 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| | 9667 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 9668 | .{ ._, ._ss, .mov, .mem(.tmp6d), .tmp3x, ._, ._ }, |
| | 9669 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 9670 | .{ ._, ._, .@"and", .tmp1w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9671 | .{ ._, ._, .xor, .tmp1d, .mem(.tmp6d), ._, ._ }, |
| | 9672 | .{ ._, ._, .cmp, .tmp1w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9673 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9674 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| | 9675 | .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, |
| | 9676 | .{ ._, ._ss, .mov, .mem(.tmp6d), .tmp3x, ._, ._ }, |
| | 9677 | .{ .@"1:", ._, .mov, .tmp1d, .mem(.tmp6d), ._, ._ }, |
| | 9678 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 9679 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 9680 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9681 | } }, |
| | 9682 | }, .{ |
| | 9683 | .required_features = .{ .sse, null, null, null }, |
| | 9684 | .src_constraints = .{ |
| | 9685 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9686 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 9687 | .any, |
| | 9688 | }, |
| | 9689 | .patterns = &.{ |
| | 9690 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9691 | }, |
| | 9692 | .call_frame = .{ .alignment = .@"16" }, |
| | 9693 | .extra_temps = .{ |
| | 9694 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9695 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 9696 | .{ .type = .f32, .kind = .mem }, |
| | 9697 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 9698 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 9699 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, |
| | 9700 | .{ .type = .f32, .kind = .mem }, |
| | 9701 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, |
| | 9702 | .unused, |
| | 9703 | }, |
| | 9704 | .dst_temps = .{.mem}, |
| | 9705 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9706 | .each = .{ .once = &.{ |
| | 9707 | .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, |
| | 9708 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9709 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 9710 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 9711 | .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9712 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 9713 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| | 9714 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 9715 | .{ ._, ._ss, .mov, .mem(.tmp6d), .tmp3x, ._, ._ }, |
| | 9716 | .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9717 | .{ ._, ._, .@"and", .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 9718 | .{ ._, ._, .xor, .tmp1d, .mem(.tmp6d), ._, ._ }, |
| | 9719 | .{ ._, ._, .cmp, .tmp1w, .sa(.src0, .add_smin), ._, ._ }, |
| | 9720 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9721 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| | 9722 | .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, |
| | 9723 | .{ ._, ._ss, .mov, .mem(.tmp6d), .tmp3x, ._, ._ }, |
| | 9724 | .{ .@"1:", ._, .mov, .tmp1d, .mem(.tmp6d), ._, ._ }, |
| | 9725 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 9726 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 9727 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9728 | } }, |
| | 9729 | }, .{ |
| | 9730 | .required_features = .{ .avx, null, null, null }, |
| | 9731 | .src_constraints = .{ |
| | 9732 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 9733 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 9734 | .any, |
| | 9735 | }, |
| | 9736 | .patterns = &.{ |
| | 9737 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 9738 | }, |
| | 9739 | .call_frame = .{ .alignment = .@"16" }, |
| | 9740 | .extra_temps = .{ |
| | 9741 | .{ .type = .f32, .kind = .{ .rc = .general_purpose } }, |
| | 9742 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, |
| | 9743 | .{ .type = .f32, .kind = .{ .reg = .edx } }, |
| | 9744 | .{ .type = .f32, .kind = .{ .reg = .eax } }, |
| | 9745 | .unused, |
| | 9746 | .unused, |
| | 9747 | .unused, |
| | 9748 | .unused, |
| | 9749 | .unused, |
| | 9750 | }, |
| | 9751 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 9752 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9753 | .each = .{ .once = &.{ |
| | 9754 | .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ }, |
| | 9755 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 9756 | .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ }, |
| | 9757 | .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, |
| | 9758 | .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9759 | .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, |
| | 9760 | .{ ._, ._, .cmp, .tmp3d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9761 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 9762 | .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ }, |
| | 9763 | .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ }, |
| | 9764 | } }, |
| | 9765 | }, .{ |
| | 9766 | .required_features = .{ .sse2, null, null, null }, |
| | 9767 | .src_constraints = .{ |
| | 9768 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 9769 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 9770 | .any, |
| | 9771 | }, |
| | 9772 | .patterns = &.{ |
| | 9773 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 9774 | }, |
| | 9775 | .call_frame = .{ .alignment = .@"16" }, |
| | 9776 | .extra_temps = .{ |
| | 9777 | .{ .type = .f32, .kind = .{ .rc = .general_purpose } }, |
| | 9778 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, |
| | 9779 | .{ .type = .f32, .kind = .{ .reg = .edx } }, |
| | 9780 | .{ .type = .f32, .kind = .{ .reg = .eax } }, |
| | 9781 | .unused, |
| | 9782 | .unused, |
| | 9783 | .unused, |
| | 9784 | .unused, |
| | 9785 | .unused, |
| | 9786 | }, |
| | 9787 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 9788 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9789 | .each = .{ .once = &.{ |
| | 9790 | .{ ._, ._d, .mov, .tmp0d, .src1x, ._, ._ }, |
| | 9791 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 9792 | .{ ._, ._d, .mov, .tmp2d, .dst0x, ._, ._ }, |
| | 9793 | .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, |
| | 9794 | .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9795 | .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, |
| | 9796 | .{ ._, ._, .cmp, .tmp3d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9797 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 9798 | .{ ._, ._d, .mov, .src1x, .tmp0d, ._, ._ }, |
| | 9799 | .{ ._, ._ss, .add, .dst0x, .src1d, ._, ._ }, |
| | 9800 | } }, |
| | 9801 | }, .{ |
| | 9802 | .required_features = .{ .sse, null, null, null }, |
| | 9803 | .src_constraints = .{ |
| | 9804 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 9805 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 9806 | .any, |
| | 9807 | }, |
| | 9808 | .patterns = &.{ |
| | 9809 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 9810 | }, |
| | 9811 | .call_frame = .{ .alignment = .@"16" }, |
| | 9812 | .extra_temps = .{ |
| | 9813 | .{ .type = .f32, .kind = .mem }, |
| | 9814 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, |
| | 9815 | .{ .type = .f32, .kind = .mem }, |
| | 9816 | .{ .type = .f32, .kind = .{ .reg = .eax } }, |
| | 9817 | .unused, |
| | 9818 | .unused, |
| | 9819 | .unused, |
| | 9820 | .unused, |
| | 9821 | .unused, |
| | 9822 | }, |
| | 9823 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 9824 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9825 | .each = .{ .once = &.{ |
| | 9826 | .{ ._, ._ss, .mov, .mem(.tmp0d), .src1x, ._, ._ }, |
| | 9827 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 9828 | .{ ._, ._ss, .mov, .mem(.tmp2d), .dst0x, ._, ._ }, |
| | 9829 | .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, |
| | 9830 | .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9831 | .{ ._, ._, .xor, .tmp3d, .mem(.tmp2d), ._, ._ }, |
| | 9832 | .{ ._, ._, .cmp, .tmp3d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9833 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 9834 | .{ ._, ._ss, .add, .dst0x, .mem(.tmp0d), ._, ._ }, |
| | 9835 | } }, |
| | 9836 | }, .{ |
| | 9837 | .required_features = .{ .avx, null, null, null }, |
| | 9838 | .src_constraints = .{ |
| | 9839 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 9840 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 9841 | .any, |
| | 9842 | }, |
| | 9843 | .patterns = &.{ |
| | 9844 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9845 | }, |
| | 9846 | .call_frame = .{ .alignment = .@"16" }, |
| | 9847 | .extra_temps = .{ |
| | 9848 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9849 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 9850 | .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, |
| | 9851 | .{ .type = .f32, .kind = .{ .rc = .general_purpose } }, |
| | 9852 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, |
| | 9853 | .{ .type = .f32, .kind = .{ .reg = .edx } }, |
| | 9854 | .{ .type = .f32, .kind = .{ .reg = .eax } }, |
| | 9855 | .unused, |
| | 9856 | .unused, |
| | 9857 | }, |
| | 9858 | .dst_temps = .{.mem}, |
| | 9859 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9860 | .each = .{ .once = &.{ |
| | 9861 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 9862 | .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9863 | .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9864 | .{ ._, .v_d, .mov, .tmp3d, .tmp2x, ._, ._ }, |
| | 9865 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9866 | .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ }, |
| | 9867 | .{ ._, ._, .mov, .tmp6d, .tmp3d, ._, ._ }, |
| | 9868 | .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9869 | .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, |
| | 9870 | .{ ._, ._, .cmp, .tmp6d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9871 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9872 | .{ ._, .v_d, .mov, .tmp2x, .tmp3d, ._, ._ }, |
| | 9873 | .{ ._, .v_ss, .add, .tmp1x, .tmp1x, .tmp2d, ._ }, |
| | 9874 | .{ .@"1:", .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 9875 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 9876 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9877 | } }, |
| | 9878 | }, .{ |
| | 9879 | .required_features = .{ .sse2, null, null, null }, |
| | 9880 | .src_constraints = .{ |
| | 9881 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 9882 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 9883 | .any, |
| | 9884 | }, |
| | 9885 | .patterns = &.{ |
| | 9886 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9887 | }, |
| | 9888 | .call_frame = .{ .alignment = .@"16" }, |
| | 9889 | .extra_temps = .{ |
| | 9890 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9891 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 9892 | .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, |
| | 9893 | .{ .type = .f32, .kind = .{ .rc = .general_purpose } }, |
| | 9894 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, |
| | 9895 | .{ .type = .f32, .kind = .{ .reg = .edx } }, |
| | 9896 | .{ .type = .f32, .kind = .{ .reg = .eax } }, |
| | 9897 | .unused, |
| | 9898 | .unused, |
| | 9899 | }, |
| | 9900 | .dst_temps = .{.mem}, |
| | 9901 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9902 | .each = .{ .once = &.{ |
| | 9903 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 9904 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9905 | .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9906 | .{ ._, ._d, .mov, .tmp3d, .tmp2x, ._, ._ }, |
| | 9907 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 9908 | .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, |
| | 9909 | .{ ._, ._, .mov, .tmp6d, .tmp3d, ._, ._ }, |
| | 9910 | .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9911 | .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, |
| | 9912 | .{ ._, ._, .cmp, .tmp6d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9913 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9914 | .{ ._, ._d, .mov, .tmp2x, .tmp3d, ._, ._ }, |
| | 9915 | .{ ._, ._ss, .add, .tmp1x, .tmp2d, ._, ._ }, |
| | 9916 | .{ .@"1:", ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 9917 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 9918 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9919 | } }, |
| | 9920 | }, .{ |
| | 9921 | .required_features = .{ .sse, null, null, null }, |
| | 9922 | .src_constraints = .{ |
| | 9923 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 9924 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 9925 | .any, |
| | 9926 | }, |
| | 9927 | .patterns = &.{ |
| | 9928 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 9929 | }, |
| | 9930 | .call_frame = .{ .alignment = .@"16" }, |
| | 9931 | .extra_temps = .{ |
| | 9932 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 9933 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 9934 | .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, |
| | 9935 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, |
| | 9936 | .{ .type = .f32, .kind = .mem }, |
| | 9937 | .{ .type = .f32, .kind = .{ .reg = .eax } }, |
| | 9938 | .unused, |
| | 9939 | .unused, |
| | 9940 | .unused, |
| | 9941 | }, |
| | 9942 | .dst_temps = .{.mem}, |
| | 9943 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9944 | .each = .{ .once = &.{ |
| | 9945 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 9946 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9947 | .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9948 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 9949 | .{ ._, ._ss, .mov, .mem(.tmp4d), .tmp1x, ._, ._ }, |
| | 9950 | .{ ._, ._, .mov, .tmp5d, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9951 | .{ ._, ._, .@"and", .tmp5d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9952 | .{ ._, ._, .xor, .tmp5d, .mem(.tmp4d), ._, ._ }, |
| | 9953 | .{ ._, ._, .cmp, .tmp5d, .sa(.src0, .add_smin), ._, ._ }, |
| | 9954 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 9955 | .{ ._, ._ss, .add, .tmp1x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 9956 | .{ .@"1:", ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 9957 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 9958 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 9959 | } }, |
| | 9960 | }, .{ |
| | 9961 | .required_features = .{ .@"64bit", .avx, null, null }, |
| | 9962 | .src_constraints = .{ |
| | 9963 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 9964 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 9965 | .any, |
| | 9966 | }, |
| | 9967 | .patterns = &.{ |
| | 9968 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 9969 | }, |
| | 9970 | .call_frame = .{ .alignment = .@"16" }, |
| | 9971 | .extra_temps = .{ |
| | 9972 | .{ .type = .f64, .kind = .{ .rc = .general_purpose } }, |
| | 9973 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, |
| | 9974 | .{ .type = .f64, .kind = .{ .reg = .rcx } }, |
| | 9975 | .{ .type = .f64, .kind = .{ .reg = .rdx } }, |
| | 9976 | .{ .type = .f64, .kind = .{ .reg = .rax } }, |
| | 9977 | .unused, |
| | 9978 | .unused, |
| | 9979 | .unused, |
| | 9980 | .unused, |
| | 9981 | }, |
| | 9982 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 9983 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 9984 | .each = .{ .once = &.{ |
| | 9985 | .{ ._, .v_q, .mov, .tmp0q, .src1x, ._, ._ }, |
| | 9986 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 9987 | .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, |
| | 9988 | .{ ._, .v_q, .mov, .tmp3q, .dst0x, ._, ._ }, |
| | 9989 | .{ ._, ._, .mov, .tmp4q, .tmp0q, ._, ._ }, |
| | 9990 | .{ ._, ._, .@"and", .tmp4q, .tmp2q, ._, ._ }, |
| | 9991 | .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ }, |
| | 9992 | .{ ._, ._, .cmp, .tmp4q, .tmp2q, ._, ._ }, |
| | 9993 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 9994 | .{ ._, .v_q, .mov, .src1q, .tmp0q, ._, ._ }, |
| | 9995 | .{ ._, .v_sd, .add, .dst0x, .src0x, .src1q, ._ }, |
| | 9996 | } }, |
| | 9997 | }, .{ |
| | 9998 | .required_features = .{ .@"64bit", .sse2, null, null }, |
| | 9999 | .src_constraints = .{ |
| | 10000 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 10001 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 10002 | .any, |
| | 10003 | }, |
| | 10004 | .patterns = &.{ |
| | 10005 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 10006 | }, |
| | 10007 | .call_frame = .{ .alignment = .@"16" }, |
| | 10008 | .extra_temps = .{ |
| | 10009 | .{ .type = .f64, .kind = .{ .rc = .general_purpose } }, |
| | 10010 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, |
| | 10011 | .{ .type = .f64, .kind = .{ .reg = .rcx } }, |
| | 10012 | .{ .type = .f64, .kind = .{ .reg = .rdx } }, |
| | 10013 | .{ .type = .f64, .kind = .{ .reg = .rax } }, |
| | 10014 | .unused, |
| | 10015 | .unused, |
| | 10016 | .unused, |
| | 10017 | .unused, |
| | 10018 | }, |
| | 10019 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 10020 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10021 | .each = .{ .once = &.{ |
| | 10022 | .{ ._, ._q, .mov, .tmp0q, .src1x, ._, ._ }, |
| | 10023 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 10024 | .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, |
| | 10025 | .{ ._, ._q, .mov, .tmp3q, .dst0x, ._, ._ }, |
| | 10026 | .{ ._, ._, .mov, .tmp4q, .tmp0q, ._, ._ }, |
| | 10027 | .{ ._, ._, .@"and", .tmp4q, .tmp2q, ._, ._ }, |
| | 10028 | .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ }, |
| | 10029 | .{ ._, ._, .cmp, .tmp4q, .tmp2q, ._, ._ }, |
| | 10030 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 10031 | .{ ._, ._q, .mov, .src1x, .tmp0q, ._, ._ }, |
| | 10032 | .{ ._, ._sd, .add, .dst0x, .src1q, ._, ._ }, |
| | 10033 | } }, |
| | 10034 | }, .{ |
| | 10035 | .required_features = .{ .@"64bit", .sse, null, null }, |
| | 10036 | .src_constraints = .{ |
| | 10037 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 10038 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 10039 | .any, |
| | 10040 | }, |
| | 10041 | .patterns = &.{ |
| | 10042 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 10043 | }, |
| | 10044 | .call_frame = .{ .alignment = .@"16" }, |
| | 10045 | .extra_temps = .{ |
| | 10046 | .{ .type = .f64, .kind = .mem }, |
| | 10047 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, |
| | 10048 | .{ .type = .f64, .kind = .mem }, |
| | 10049 | .{ .type = .f64, .kind = .{ .reg = .rdx } }, |
| | 10050 | .{ .type = .f64, .kind = .{ .reg = .rax } }, |
| | 10051 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| | 10052 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| | 10053 | .unused, |
| | 10054 | .unused, |
| | 10055 | }, |
| | 10056 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 10057 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10058 | .each = .{ .once = &.{ |
| | 10059 | .{ ._, ._ps, .movl, .mem(.tmp0q), .src1x, ._, ._ }, |
| | 10060 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 10061 | .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_smin), ._, ._ }, |
| | 10062 | .{ ._, ._ps, .movl, .mem(.tmp2q), .dst0x, ._, ._ }, |
| | 10063 | .{ ._, ._, .mov, .tmp4q, .tmp0q, ._, ._ }, |
| | 10064 | .{ ._, ._, .@"and", .tmp4q, .tmp3q, ._, ._ }, |
| | 10065 | .{ ._, ._, .xor, .tmp4q, .mem(.tmp2q), ._, ._ }, |
| | 10066 | .{ ._, ._, .cmp, .tmp4q, .tmp3q, ._, ._ }, |
| | 10067 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| | 10068 | .{ ._, .f_, .ld, .mem(.tmp2q), ._, ._, ._ }, |
| | 10069 | .{ ._, .f_, .ld, .mem(.tmp0q), ._, ._, ._ }, |
| | 10070 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10071 | .{ ._, .f_p, .st, .mem(.tmp2q), ._, ._, ._ }, |
| | 10072 | .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, |
| | 10073 | .{ ._, ._ps, .movl, .dst0x, .mem(.tmp2q), ._, ._ }, |
| | 10074 | } }, |
| | 10075 | }, .{ |
| | 10076 | .required_features = .{ .@"64bit", .avx, null, null }, |
| | 10077 | .src_constraints = .{ |
| | 10078 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 10079 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 10080 | .any, |
| | 10081 | }, |
| | 10082 | .patterns = &.{ |
| | 10083 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10084 | }, |
| | 10085 | .call_frame = .{ .alignment = .@"16" }, |
| | 10086 | .extra_temps = .{ |
| | 10087 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 10088 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 10089 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, |
| | 10090 | .{ .type = .f64, .kind = .{ .rc = .general_purpose } }, |
| | 10091 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, |
| | 10092 | .{ .type = .f64, .kind = .{ .reg = .rcx } }, |
| | 10093 | .{ .type = .f64, .kind = .{ .reg = .rdx } }, |
| | 10094 | .{ .type = .f64, .kind = .{ .reg = .rax } }, |
| | 10095 | .unused, |
| | 10096 | }, |
| | 10097 | .dst_temps = .{.mem}, |
| | 10098 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10099 | .each = .{ .once = &.{ |
| | 10100 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 10101 | .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10102 | .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10103 | .{ ._, .v_q, .mov, .tmp3q, .tmp2x, ._, ._ }, |
| | 10104 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 10105 | .{ ._, ._, .mov, .tmp5q, .ua(.src0, .add_smin), ._, ._ }, |
| | 10106 | .{ ._, .v_q, .mov, .tmp6q, .tmp1x, ._, ._ }, |
| | 10107 | .{ ._, ._, .mov, .tmp7q, .tmp3q, ._, ._ }, |
| | 10108 | .{ ._, ._, .@"and", .tmp7q, .tmp5q, ._, ._ }, |
| | 10109 | .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ }, |
| | 10110 | .{ ._, ._, .cmp, .tmp7q, .tmp5q, ._, ._ }, |
| | 10111 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 10112 | .{ ._, .v_q, .mov, .tmp2x, .tmp3q, ._, ._ }, |
| | 10113 | .{ ._, .v_sd, .add, .tmp1x, .tmp1x, .tmp2q, ._ }, |
| | 10114 | .{ .@"1:", .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 10115 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 10116 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 10117 | } }, |
| | 10118 | }, .{ |
| | 10119 | .required_features = .{ .@"64bit", .sse2, null, null }, |
| | 10120 | .src_constraints = .{ |
| | 10121 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 10122 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 10123 | .any, |
| | 10124 | }, |
| | 10125 | .patterns = &.{ |
| | 10126 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10127 | }, |
| | 10128 | .call_frame = .{ .alignment = .@"16" }, |
| | 10129 | .extra_temps = .{ |
| | 10130 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 10131 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 10132 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, |
| | 10133 | .{ .type = .f64, .kind = .{ .rc = .general_purpose } }, |
| | 10134 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, |
| | 10135 | .{ .type = .f64, .kind = .{ .reg = .rcx } }, |
| | 10136 | .{ .type = .f64, .kind = .{ .reg = .rdx } }, |
| | 10137 | .{ .type = .f64, .kind = .{ .reg = .rax } }, |
| | 10138 | .unused, |
| | 10139 | }, |
| | 10140 | .dst_temps = .{.mem}, |
| | 10141 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10142 | .each = .{ .once = &.{ |
| | 10143 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 10144 | .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10145 | .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10146 | .{ ._, ._q, .mov, .tmp3q, .tmp2x, ._, ._ }, |
| | 10147 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 10148 | .{ ._, ._, .mov, .tmp5q, .ua(.src0, .add_smin), ._, ._ }, |
| | 10149 | .{ ._, ._q, .mov, .tmp6q, .tmp1x, ._, ._ }, |
| | 10150 | .{ ._, ._, .mov, .tmp7q, .tmp3q, ._, ._ }, |
| | 10151 | .{ ._, ._, .@"and", .tmp7q, .tmp5q, ._, ._ }, |
| | 10152 | .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ }, |
| | 10153 | .{ ._, ._, .cmp, .tmp7q, .tmp5q, ._, ._ }, |
| | 10154 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 10155 | .{ ._, ._q, .mov, .tmp2x, .tmp3q, ._, ._ }, |
| | 10156 | .{ ._, ._sd, .add, .tmp1x, .tmp2q, ._, ._ }, |
| | 10157 | .{ .@"1:", ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 10158 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 10159 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 10160 | } }, |
| | 10161 | }, .{ |
| | 10162 | .required_features = .{ .@"64bit", .sse, null, null }, |
| | 10163 | .src_constraints = .{ |
| | 10164 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 10165 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 10166 | .any, |
| | 10167 | }, |
| | 10168 | .patterns = &.{ |
| | 10169 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10170 | }, |
| | 10171 | .call_frame = .{ .alignment = .@"16" }, |
| | 10172 | .extra_temps = .{ |
| | 10173 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 10174 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 10175 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, |
| | 10176 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, |
| | 10177 | .{ .type = .f64, .kind = .{ .reg = .rdx } }, |
| | 10178 | .{ .type = .f64, .kind = .mem }, |
| | 10179 | .{ .type = .f64, .kind = .{ .reg = .rax } }, |
| | 10180 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| | 10181 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| | 10182 | }, |
| | 10183 | .dst_temps = .{.mem}, |
| | 10184 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10185 | .each = .{ .once = &.{ |
| | 10186 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 10187 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 10188 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 10189 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10190 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10191 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 10192 | .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ }, |
| | 10193 | .{ ._, ._ps, .movl, .mem(.tmp5q), .tmp1x, ._, ._ }, |
| | 10194 | .{ ._, ._, .mov, .tmp6q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10195 | .{ ._, ._, .@"and", .tmp6q, .tmp4q, ._, ._ }, |
| | 10196 | .{ ._, ._, .xor, .tmp6q, .mem(.tmp5q), ._, ._ }, |
| | 10197 | .{ ._, ._, .cmp, .tmp6q, .tmp4q, ._, ._ }, |
| | 10198 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| | 10199 | .{ ._, .f_, .ld, .mem(.tmp5q), ._, ._, ._ }, |
| | 10200 | .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 10201 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10202 | .{ ._, .f_p, .st, .mem(.tmp5q), ._, ._, ._ }, |
| | 10203 | .{ ._, ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 10204 | .{ ._, ._ps, .movl, .tmp1x, .mem(.tmp5q), ._, ._ }, |
| | 10205 | .{ .@"1:", ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 10206 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 10207 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 10208 | } }, |
| | 10209 | }, .{ |
| | 10210 | .required_features = .{ .@"64bit", .avx, .x87, .fast_imm16 }, |
| | 10211 | .src_constraints = .{ |
| | 10212 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10213 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10214 | .any, |
| | 10215 | }, |
| | 10216 | .patterns = &.{ |
| | 10217 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10218 | }, |
| | 10219 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 10220 | .extra_temps = .{ |
| | 10221 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 10222 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 10223 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 10224 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 10225 | .{ .type = .f80, .kind = .{ .reg = .rax } }, |
| | 10226 | .unused, |
| | 10227 | .unused, |
| | 10228 | .unused, |
| | 10229 | .unused, |
| | 10230 | }, |
| | 10231 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 10232 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10233 | .each = .{ .once = &.{ |
| | 10234 | .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 10235 | .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 10236 | .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ }, |
| | 10237 | .{ ._, .v_dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, |
| | 10238 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 10239 | .{ ._, .f_, .ld, .dst0t, ._, ._, ._ }, |
| | 10240 | .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, |
| | 10241 | .{ ._, ._, .movzx, .tmp4d, .memd(.tmp1w, 16 + 8), ._, ._ }, |
| | 10242 | .{ ._, ._, .@"and", .tmp4w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10243 | .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ }, |
| | 10244 | .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ }, |
| | 10245 | .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10246 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 10247 | .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ }, |
| | 10248 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10249 | } }, |
| | 10250 | }, .{ |
| | 10251 | .required_features = .{ .@"64bit", .avx, .x87, null }, |
| | 10252 | .src_constraints = .{ |
| | 10253 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10254 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10255 | .any, |
| | 10256 | }, |
| | 10257 | .patterns = &.{ |
| | 10258 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10259 | }, |
| | 10260 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 10261 | .extra_temps = .{ |
| | 10262 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 10263 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 10264 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 10265 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 10266 | .{ .type = .f80, .kind = .{ .reg = .rax } }, |
| | 10267 | .unused, |
| | 10268 | .unused, |
| | 10269 | .unused, |
| | 10270 | .unused, |
| | 10271 | }, |
| | 10272 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 10273 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10274 | .each = .{ .once = &.{ |
| | 10275 | .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 10276 | .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 10277 | .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ }, |
| | 10278 | .{ ._, .v_dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, |
| | 10279 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 10280 | .{ ._, .f_, .ld, .dst0t, ._, ._, ._ }, |
| | 10281 | .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, |
| | 10282 | .{ ._, ._, .mov, .tmp4d, .sa(.src0, .add_smin), ._, ._ }, |
| | 10283 | .{ ._, ._, .@"and", .tmp4w, .memd(.tmp1w, 16 + 8), ._, ._ }, |
| | 10284 | .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ }, |
| | 10285 | .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ }, |
| | 10286 | .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10287 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 10288 | .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ }, |
| | 10289 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10290 | } }, |
| | 10291 | }, .{ |
| | 10292 | .required_features = .{ .@"64bit", .sse2, .x87, .fast_imm16 }, |
| | 10293 | .src_constraints = .{ |
| | 10294 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10295 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10296 | .any, |
| | 10297 | }, |
| | 10298 | .patterns = &.{ |
| | 10299 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10300 | }, |
| | 10301 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 10302 | .extra_temps = .{ |
| | 10303 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 10304 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 10305 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 10306 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 10307 | .{ .type = .f80, .kind = .{ .reg = .rax } }, |
| | 10308 | .unused, |
| | 10309 | .unused, |
| | 10310 | .unused, |
| | 10311 | .unused, |
| | 10312 | }, |
| | 10313 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 10314 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10315 | .each = .{ .once = &.{ |
| | 10316 | .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 10317 | .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 10318 | .{ ._, ._dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ }, |
| | 10319 | .{ ._, ._dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, |
| | 10320 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 10321 | .{ ._, .f_, .ld, .dst0t, ._, ._, ._ }, |
| | 10322 | .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, |
| | 10323 | .{ ._, ._, .movzx, .tmp4d, .memd(.tmp1w, 16 + 8), ._, ._ }, |
| | 10324 | .{ ._, ._, .@"and", .tmp4w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10325 | .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ }, |
| | 10326 | .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ }, |
| | 10327 | .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10328 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 10329 | .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ }, |
| | 10330 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10331 | } }, |
| | 10332 | }, .{ |
| | 10333 | .required_features = .{ .@"64bit", .sse2, .x87, null }, |
| | 10334 | .src_constraints = .{ |
| | 10335 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10336 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10337 | .any, |
| | 10338 | }, |
| | 10339 | .patterns = &.{ |
| | 10340 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10341 | }, |
| | 10342 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 10343 | .extra_temps = .{ |
| | 10344 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 10345 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 10346 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 10347 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 10348 | .{ .type = .f80, .kind = .{ .reg = .rax } }, |
| | 10349 | .unused, |
| | 10350 | .unused, |
| | 10351 | .unused, |
| | 10352 | .unused, |
| | 10353 | }, |
| | 10354 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 10355 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10356 | .each = .{ .once = &.{ |
| | 10357 | .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 10358 | .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 10359 | .{ ._, ._dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ }, |
| | 10360 | .{ ._, ._dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, |
| | 10361 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 10362 | .{ ._, .f_, .ld, .dst0t, ._, ._, ._ }, |
| | 10363 | .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, |
| | 10364 | .{ ._, ._, .mov, .tmp4d, .sa(.src0, .add_smin), ._, ._ }, |
| | 10365 | .{ ._, ._, .@"and", .tmp4w, .memd(.tmp1w, 16 + 8), ._, ._ }, |
| | 10366 | .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ }, |
| | 10367 | .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ }, |
| | 10368 | .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10369 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 10370 | .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ }, |
| | 10371 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10372 | } }, |
| | 10373 | }, .{ |
| | 10374 | .required_features = .{ .@"64bit", .sse, .x87, .fast_imm16 }, |
| | 10375 | .src_constraints = .{ |
| | 10376 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10377 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10378 | .any, |
| | 10379 | }, |
| | 10380 | .patterns = &.{ |
| | 10381 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10382 | }, |
| | 10383 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 10384 | .extra_temps = .{ |
| | 10385 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 10386 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 10387 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 10388 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 10389 | .{ .type = .f80, .kind = .{ .reg = .rax } }, |
| | 10390 | .unused, |
| | 10391 | .unused, |
| | 10392 | .unused, |
| | 10393 | .unused, |
| | 10394 | }, |
| | 10395 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 10396 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10397 | .each = .{ .once = &.{ |
| | 10398 | .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 10399 | .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 10400 | .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ }, |
| | 10401 | .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, |
| | 10402 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 10403 | .{ ._, .f_, .ld, .dst0t, ._, ._, ._ }, |
| | 10404 | .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, |
| | 10405 | .{ ._, ._, .movzx, .tmp4d, .memd(.tmp1w, 16 + 8), ._, ._ }, |
| | 10406 | .{ ._, ._, .@"and", .tmp4w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10407 | .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ }, |
| | 10408 | .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ }, |
| | 10409 | .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10410 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 10411 | .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ }, |
| | 10412 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10413 | } }, |
| | 10414 | }, .{ |
| | 10415 | .required_features = .{ .@"64bit", .sse, .x87, null }, |
| | 10416 | .src_constraints = .{ |
| | 10417 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10418 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10419 | .any, |
| | 10420 | }, |
| | 10421 | .patterns = &.{ |
| | 10422 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10423 | }, |
| | 10424 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 10425 | .extra_temps = .{ |
| | 10426 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 10427 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 10428 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 10429 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 10430 | .{ .type = .f80, .kind = .{ .reg = .rax } }, |
| | 10431 | .unused, |
| | 10432 | .unused, |
| | 10433 | .unused, |
| | 10434 | .unused, |
| | 10435 | }, |
| | 10436 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 10437 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10438 | .each = .{ .once = &.{ |
| | 10439 | .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 10440 | .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 10441 | .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ }, |
| | 10442 | .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, |
| | 10443 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 10444 | .{ ._, .f_, .ld, .dst0t, ._, ._, ._ }, |
| | 10445 | .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, |
| | 10446 | .{ ._, ._, .mov, .tmp4d, .sa(.src0, .add_smin), ._, ._ }, |
| | 10447 | .{ ._, ._, .@"and", .tmp4w, .memd(.tmp1w, 16 + 8), ._, ._ }, |
| | 10448 | .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ }, |
| | 10449 | .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ }, |
| | 10450 | .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10451 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 10452 | .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ }, |
| | 10453 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10454 | } }, |
| | 10455 | }, .{ |
| | 10456 | .required_features = .{ .@"64bit", .avx, .x87, .fast_imm16 }, |
| | 10457 | .src_constraints = .{ |
| | 10458 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10459 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10460 | .any, |
| | 10461 | }, |
| | 10462 | .patterns = &.{ |
| | 10463 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10464 | }, |
| | 10465 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 10466 | .extra_temps = .{ |
| | 10467 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 10468 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 10469 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 10470 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 10471 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 10472 | .{ .type = .f80, .kind = .{ .reg = .rax } }, |
| | 10473 | .unused, |
| | 10474 | .unused, |
| | 10475 | .unused, |
| | 10476 | }, |
| | 10477 | .dst_temps = .{.mem}, |
| | 10478 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10479 | .each = .{ .once = &.{ |
| | 10480 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 10481 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10482 | .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 10483 | .{ ._, .v_dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10484 | .{ ._, .v_dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, |
| | 10485 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 10486 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 10487 | .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ }, |
| | 10488 | .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, |
| | 10489 | .{ ._, ._, .movzx, .tmp5d, .memd(.tmp2w, 16 + 8), ._, ._ }, |
| | 10490 | .{ ._, ._, .@"and", .tmp5w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10491 | .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ }, |
| | 10492 | .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ }, |
| | 10493 | .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10494 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| | 10495 | .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ }, |
| | 10496 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10497 | .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 10498 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 10499 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 10500 | } }, |
| | 10501 | }, .{ |
| | 10502 | .required_features = .{ .@"64bit", .avx, .x87, null }, |
| | 10503 | .src_constraints = .{ |
| | 10504 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10505 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10506 | .any, |
| | 10507 | }, |
| | 10508 | .patterns = &.{ |
| | 10509 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10510 | }, |
| | 10511 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 10512 | .extra_temps = .{ |
| | 10513 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 10514 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 10515 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 10516 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 10517 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 10518 | .{ .type = .f80, .kind = .{ .reg = .rax } }, |
| | 10519 | .unused, |
| | 10520 | .unused, |
| | 10521 | .unused, |
| | 10522 | }, |
| | 10523 | .dst_temps = .{.mem}, |
| | 10524 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10525 | .each = .{ .once = &.{ |
| | 10526 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 10527 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10528 | .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 10529 | .{ ._, .v_dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10530 | .{ ._, .v_dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, |
| | 10531 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 10532 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 10533 | .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ }, |
| | 10534 | .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, |
| | 10535 | .{ ._, ._, .mov, .tmp5d, .sa(.src0, .add_smin), ._, ._ }, |
| | 10536 | .{ ._, ._, .@"and", .tmp5w, .memd(.tmp2w, 16 + 8), ._, ._ }, |
| | 10537 | .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ }, |
| | 10538 | .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ }, |
| | 10539 | .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10540 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| | 10541 | .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ }, |
| | 10542 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10543 | .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 10544 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 10545 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 10546 | } }, |
| | 10547 | }, .{ |
| | 10548 | .required_features = .{ .@"64bit", .sse2, .x87, .fast_imm16 }, |
| | 10549 | .src_constraints = .{ |
| | 10550 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10551 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10552 | .any, |
| | 10553 | }, |
| | 10554 | .patterns = &.{ |
| | 10555 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10556 | }, |
| | 10557 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 10558 | .extra_temps = .{ |
| | 10559 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 10560 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 10561 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 10562 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 10563 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 10564 | .{ .type = .f80, .kind = .{ .reg = .rax } }, |
| | 10565 | .unused, |
| | 10566 | .unused, |
| | 10567 | .unused, |
| | 10568 | }, |
| | 10569 | .dst_temps = .{.mem}, |
| | 10570 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10571 | .each = .{ .once = &.{ |
| | 10572 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 10573 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10574 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 10575 | .{ ._, ._dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10576 | .{ ._, ._dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, |
| | 10577 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 10578 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 10579 | .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ }, |
| | 10580 | .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, |
| | 10581 | .{ ._, ._, .movzx, .tmp5d, .memd(.tmp2w, 16 + 8), ._, ._ }, |
| | 10582 | .{ ._, ._, .@"and", .tmp5w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10583 | .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ }, |
| | 10584 | .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ }, |
| | 10585 | .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10586 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| | 10587 | .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ }, |
| | 10588 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10589 | .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 10590 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 10591 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 10592 | } }, |
| | 10593 | }, .{ |
| | 10594 | .required_features = .{ .@"64bit", .sse2, .x87, null }, |
| | 10595 | .src_constraints = .{ |
| | 10596 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10597 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10598 | .any, |
| | 10599 | }, |
| | 10600 | .patterns = &.{ |
| | 10601 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10602 | }, |
| | 10603 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 10604 | .extra_temps = .{ |
| | 10605 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 10606 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 10607 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 10608 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 10609 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 10610 | .{ .type = .f80, .kind = .{ .reg = .rax } }, |
| | 10611 | .unused, |
| | 10612 | .unused, |
| | 10613 | .unused, |
| | 10614 | }, |
| | 10615 | .dst_temps = .{.mem}, |
| | 10616 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10617 | .each = .{ .once = &.{ |
| | 10618 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 10619 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10620 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 10621 | .{ ._, ._dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10622 | .{ ._, ._dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, |
| | 10623 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 10624 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 10625 | .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ }, |
| | 10626 | .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, |
| | 10627 | .{ ._, ._, .mov, .tmp5d, .sa(.src0, .add_smin), ._, ._ }, |
| | 10628 | .{ ._, ._, .@"and", .tmp5w, .memd(.tmp2w, 16 + 8), ._, ._ }, |
| | 10629 | .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ }, |
| | 10630 | .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ }, |
| | 10631 | .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10632 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| | 10633 | .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ }, |
| | 10634 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10635 | .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 10636 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 10637 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 10638 | } }, |
| | 10639 | }, .{ |
| | 10640 | .required_features = .{ .@"64bit", .sse, .x87, .fast_imm16 }, |
| | 10641 | .src_constraints = .{ |
| | 10642 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10643 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10644 | .any, |
| | 10645 | }, |
| | 10646 | .patterns = &.{ |
| | 10647 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10648 | }, |
| | 10649 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 10650 | .extra_temps = .{ |
| | 10651 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 10652 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 10653 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 10654 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 10655 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 10656 | .{ .type = .f80, .kind = .{ .reg = .rax } }, |
| | 10657 | .unused, |
| | 10658 | .unused, |
| | 10659 | .unused, |
| | 10660 | }, |
| | 10661 | .dst_temps = .{.mem}, |
| | 10662 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10663 | .each = .{ .once = &.{ |
| | 10664 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 10665 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10666 | .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 10667 | .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10668 | .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, |
| | 10669 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 10670 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 10671 | .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ }, |
| | 10672 | .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, |
| | 10673 | .{ ._, ._, .movzx, .tmp5d, .memd(.tmp2w, 16 + 8), ._, ._ }, |
| | 10674 | .{ ._, ._, .@"and", .tmp5w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10675 | .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ }, |
| | 10676 | .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ }, |
| | 10677 | .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10678 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| | 10679 | .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ }, |
| | 10680 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10681 | .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 10682 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 10683 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 10684 | } }, |
| | 10685 | }, .{ |
| | 10686 | .required_features = .{ .@"64bit", .sse, .x87, null }, |
| | 10687 | .src_constraints = .{ |
| | 10688 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10689 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 10690 | .any, |
| | 10691 | }, |
| | 10692 | .patterns = &.{ |
| | 10693 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10694 | }, |
| | 10695 | .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, |
| | 10696 | .extra_temps = .{ |
| | 10697 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 10698 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 10699 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 10700 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, |
| | 10701 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 10702 | .{ .type = .f80, .kind = .{ .reg = .rax } }, |
| | 10703 | .unused, |
| | 10704 | .unused, |
| | 10705 | .unused, |
| | 10706 | }, |
| | 10707 | .dst_temps = .{.mem}, |
| | 10708 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10709 | .each = .{ .once = &.{ |
| | 10710 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 10711 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10712 | .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 10713 | .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10714 | .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, |
| | 10715 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 10716 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 10717 | .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ }, |
| | 10718 | .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, |
| | 10719 | .{ ._, ._, .mov, .tmp5d, .sa(.src0, .add_smin), ._, ._ }, |
| | 10720 | .{ ._, ._, .@"and", .tmp5w, .memd(.tmp2w, 16 + 8), ._, ._ }, |
| | 10721 | .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ }, |
| | 10722 | .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ }, |
| | 10723 | .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ }, |
| | 10724 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| | 10725 | .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ }, |
| | 10726 | .{ ._, .f_p, .add, ._, ._, ._, ._ }, |
| | 10727 | .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 10728 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 10729 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 10730 | } }, |
| | 10731 | }, .{ |
| | 10732 | .required_features = .{ .@"64bit", .avx, null, null }, |
| | 10733 | .src_constraints = .{ |
| | 10734 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10735 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10736 | .any, |
| | 10737 | }, |
| | 10738 | .patterns = &.{ |
| | 10739 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 10740 | }, |
| | 10741 | .call_frame = .{ .alignment = .@"16" }, |
| | 10742 | .extra_temps = .{ |
| | 10743 | .{ .type = .f128, .kind = .mem }, |
| | 10744 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, |
| | 10745 | .{ .type = .f128, .kind = .{ .reg = .rcx } }, |
| | 10746 | .{ .type = .f128, .kind = .{ .reg = .rdx } }, |
| | 10747 | .{ .type = .f128, .kind = .{ .reg = .rax } }, |
| | 10748 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, |
| | 10749 | .unused, |
| | 10750 | .unused, |
| | 10751 | .unused, |
| | 10752 | }, |
| | 10753 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 10754 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10755 | .each = .{ .once = &.{ |
| | 10756 | .{ ._, .v_dqa, .mov, .mem(.tmp0x), .src1x, ._, ._ }, |
| | 10757 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 10758 | .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, |
| | 10759 | .{ ._, .vp_q, .extr, .tmp3q, .dst0x, .ui(1), ._ }, |
| | 10760 | .{ ._, ._, .mov, .tmp4q, .tmp2q, ._, ._ }, |
| | 10761 | .{ ._, ._, .@"and", .tmp4q, .memd(.tmp0q, 8), ._, ._ }, |
| | 10762 | .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ }, |
| | 10763 | .{ ._, .v_q, .mov, .tmp3q, .dst0x, ._, ._ }, |
| | 10764 | .{ ._, ._, .cmp, .tmp3q, .si(1), ._, ._ }, |
| | 10765 | .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ }, |
| | 10766 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 10767 | .{ ._, .v_dqa, .mov, .src1x, .mem(.tmp0x), ._, ._ }, |
| | 10768 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 10769 | } }, |
| | 10770 | }, .{ |
| | 10771 | .required_features = .{ .@"64bit", .sse4_1, null, null }, |
| | 10772 | .src_constraints = .{ |
| | 10773 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10774 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10775 | .any, |
| | 10776 | }, |
| | 10777 | .patterns = &.{ |
| | 10778 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 10779 | }, |
| | 10780 | .call_frame = .{ .alignment = .@"16" }, |
| | 10781 | .extra_temps = .{ |
| | 10782 | .{ .type = .f128, .kind = .mem }, |
| | 10783 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, |
| | 10784 | .{ .type = .f128, .kind = .{ .reg = .rcx } }, |
| | 10785 | .{ .type = .f128, .kind = .{ .reg = .rdx } }, |
| | 10786 | .{ .type = .f128, .kind = .{ .reg = .rax } }, |
| | 10787 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, |
| | 10788 | .unused, |
| | 10789 | .unused, |
| | 10790 | .unused, |
| | 10791 | }, |
| | 10792 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 10793 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10794 | .each = .{ .once = &.{ |
| | 10795 | .{ ._, ._dqa, .mov, .mem(.tmp0x), .src1x, ._, ._ }, |
| | 10796 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 10797 | .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, |
| | 10798 | .{ ._, .p_q, .extr, .tmp3q, .dst0x, .ui(1), ._ }, |
| | 10799 | .{ ._, ._, .mov, .tmp4q, .tmp2q, ._, ._ }, |
| | 10800 | .{ ._, ._, .@"and", .tmp4q, .memd(.tmp0q, 8), ._, ._ }, |
| | 10801 | .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ }, |
| | 10802 | .{ ._, ._q, .mov, .tmp3q, .dst0x, ._, ._ }, |
| | 10803 | .{ ._, ._, .cmp, .tmp3q, .si(1), ._, ._ }, |
| | 10804 | .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ }, |
| | 10805 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 10806 | .{ ._, ._dqa, .mov, .src1x, .mem(.tmp0x), ._, ._ }, |
| | 10807 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 10808 | } }, |
| | 10809 | }, .{ |
| | 10810 | .required_features = .{ .@"64bit", .sse2, null, null }, |
| | 10811 | .src_constraints = .{ |
| | 10812 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10813 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10814 | .any, |
| | 10815 | }, |
| | 10816 | .patterns = &.{ |
| | 10817 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 10818 | }, |
| | 10819 | .call_frame = .{ .alignment = .@"16" }, |
| | 10820 | .extra_temps = .{ |
| | 10821 | .{ .type = .f128, .kind = .mem }, |
| | 10822 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, |
| | 10823 | .{ .type = .f128, .kind = .{ .reg = .rcx } }, |
| | 10824 | .{ .type = .f128, .kind = .{ .reg = .rdx } }, |
| | 10825 | .{ .type = .f128, .kind = .{ .reg = .rax } }, |
| | 10826 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, |
| | 10827 | .unused, |
| | 10828 | .unused, |
| | 10829 | .unused, |
| | 10830 | }, |
| | 10831 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 10832 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10833 | .each = .{ .once = &.{ |
| | 10834 | .{ ._, ._dqa, .mov, .mem(.tmp0x), .src1x, ._, ._ }, |
| | 10835 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 10836 | .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, |
| | 10837 | .{ ._, .p_d, .shuf, .src1x, .dst0x, .ui(0b11_10_11_10), ._ }, |
| | 10838 | .{ ._, ._q, .mov, .tmp3q, .src1x, ._, ._ }, |
| | 10839 | .{ ._, ._, .mov, .tmp4q, .tmp2q, ._, ._ }, |
| | 10840 | .{ ._, ._, .@"and", .tmp4q, .memd(.tmp0q, 8), ._, ._ }, |
| | 10841 | .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ }, |
| | 10842 | .{ ._, ._q, .mov, .tmp3q, .dst0x, ._, ._ }, |
| | 10843 | .{ ._, ._, .cmp, .tmp3q, .si(1), ._, ._ }, |
| | 10844 | .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ }, |
| | 10845 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 10846 | .{ ._, ._dqa, .mov, .src1x, .mem(.tmp0x), ._, ._ }, |
| | 10847 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 10848 | } }, |
| | 10849 | }, .{ |
| | 10850 | .required_features = .{ .@"64bit", .sse, null, null }, |
| | 10851 | .src_constraints = .{ |
| | 10852 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10853 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10854 | .any, |
| | 10855 | }, |
| | 10856 | .patterns = &.{ |
| | 10857 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 10858 | }, |
| | 10859 | .call_frame = .{ .alignment = .@"16" }, |
| | 10860 | .extra_temps = .{ |
| | 10861 | .{ .type = .f128, .kind = .mem }, |
| | 10862 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, |
| | 10863 | .{ .type = .f128, .kind = .{ .reg = .rdx } }, |
| | 10864 | .{ .type = .f128, .kind = .mem }, |
| | 10865 | .{ .type = .f128, .kind = .{ .reg = .rax } }, |
| | 10866 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, |
| | 10867 | .unused, |
| | 10868 | .unused, |
| | 10869 | .unused, |
| | 10870 | }, |
| | 10871 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 10872 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10873 | .each = .{ .once = &.{ |
| | 10874 | .{ ._, ._ps, .mova, .mem(.tmp0x), .src1x, ._, ._ }, |
| | 10875 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 10876 | .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, |
| | 10877 | .{ ._, ._ps, .mova, .mem(.tmp3x), .dst0x, ._, ._ }, |
| | 10878 | .{ ._, ._, .mov, .tmp4q, .tmp2q, ._, ._ }, |
| | 10879 | .{ ._, ._, .@"and", .tmp4q, .memd(.tmp0q, 8), ._, ._ }, |
| | 10880 | .{ ._, ._, .xor, .tmp4q, .memd(.tmp3q, 8), ._, ._ }, |
| | 10881 | .{ ._, ._, .cmp, .mem(.tmp3q), .si(1), ._, ._ }, |
| | 10882 | .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ }, |
| | 10883 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 10884 | .{ ._, ._ps, .mova, .src1x, .mem(.tmp0x), ._, ._ }, |
| | 10885 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 10886 | } }, |
| | 10887 | }, .{ |
| | 10888 | .required_features = .{ .@"64bit", .avx, null, null }, |
| | 10889 | .src_constraints = .{ |
| | 10890 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10891 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10892 | .any, |
| | 10893 | }, |
| | 10894 | .patterns = &.{ |
| | 10895 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10896 | }, |
| | 10897 | .call_frame = .{ .alignment = .@"16" }, |
| | 10898 | .extra_temps = .{ |
| | 10899 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 10900 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 10901 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 10902 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, |
| | 10903 | .{ .type = .f128, .kind = .{ .reg = .rcx } }, |
| | 10904 | .{ .type = .f128, .kind = .{ .reg = .rdx } }, |
| | 10905 | .{ .type = .f128, .kind = .{ .reg = .rax } }, |
| | 10906 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, |
| | 10907 | .unused, |
| | 10908 | }, |
| | 10909 | .dst_temps = .{.mem}, |
| | 10910 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10911 | .each = .{ .once = &.{ |
| | 10912 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 10913 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10914 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10915 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 10916 | .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ }, |
| | 10917 | .{ ._, .vp_q, .extr, .tmp5q, .tmp1x, .ui(1), ._ }, |
| | 10918 | .{ ._, ._, .mov, .tmp6q, .tmp4q, ._, ._ }, |
| | 10919 | .{ ._, ._, .@"and", .tmp6q, .memiad(.src1q, .tmp0, .add_unaligned_size, 8), ._, ._ }, |
| | 10920 | .{ ._, ._, .xor, .tmp6q, .tmp5q, ._, ._ }, |
| | 10921 | .{ ._, .v_q, .mov, .tmp5q, .tmp1x, ._, ._ }, |
| | 10922 | .{ ._, ._, .cmp, .tmp5q, .si(1), ._, ._ }, |
| | 10923 | .{ ._, ._, .sbb, .tmp6q, .tmp4q, ._, ._ }, |
| | 10924 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| | 10925 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10926 | .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, |
| | 10927 | .{ .@"1:", .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 10928 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 10929 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 10930 | } }, |
| | 10931 | }, .{ |
| | 10932 | .required_features = .{ .@"64bit", .sse4_1, null, null }, |
| | 10933 | .src_constraints = .{ |
| | 10934 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10935 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10936 | .any, |
| | 10937 | }, |
| | 10938 | .patterns = &.{ |
| | 10939 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10940 | }, |
| | 10941 | .call_frame = .{ .alignment = .@"16" }, |
| | 10942 | .extra_temps = .{ |
| | 10943 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 10944 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 10945 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 10946 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, |
| | 10947 | .{ .type = .f128, .kind = .{ .reg = .rcx } }, |
| | 10948 | .{ .type = .f128, .kind = .{ .reg = .rdx } }, |
| | 10949 | .{ .type = .f128, .kind = .{ .reg = .rax } }, |
| | 10950 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, |
| | 10951 | .unused, |
| | 10952 | }, |
| | 10953 | .dst_temps = .{.mem}, |
| | 10954 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10955 | .each = .{ .once = &.{ |
| | 10956 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 10957 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10958 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10959 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 10960 | .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ }, |
| | 10961 | .{ ._, .p_q, .extr, .tmp5q, .tmp1x, .ui(1), ._ }, |
| | 10962 | .{ ._, ._, .mov, .tmp6q, .tmp4q, ._, ._ }, |
| | 10963 | .{ ._, ._, .@"and", .tmp6q, .memiad(.src1q, .tmp0, .add_unaligned_size, 8), ._, ._ }, |
| | 10964 | .{ ._, ._, .xor, .tmp6q, .tmp5q, ._, ._ }, |
| | 10965 | .{ ._, ._q, .mov, .tmp5q, .tmp1x, ._, ._ }, |
| | 10966 | .{ ._, ._, .cmp, .tmp5q, .si(1), ._, ._ }, |
| | 10967 | .{ ._, ._, .sbb, .tmp6q, .tmp4q, ._, ._ }, |
| | 10968 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| | 10969 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 10970 | .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, |
| | 10971 | .{ .@"1:", ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 10972 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 10973 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 10974 | } }, |
| | 10975 | }, .{ |
| | 10976 | .required_features = .{ .@"64bit", .sse2, null, null }, |
| | 10977 | .src_constraints = .{ |
| | 10978 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10979 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 10980 | .any, |
| | 10981 | }, |
| | 10982 | .patterns = &.{ |
| | 10983 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 10984 | }, |
| | 10985 | .call_frame = .{ .alignment = .@"16" }, |
| | 10986 | .extra_temps = .{ |
| | 10987 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 10988 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 10989 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 10990 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, |
| | 10991 | .{ .type = .f128, .kind = .{ .reg = .rcx } }, |
| | 10992 | .{ .type = .f128, .kind = .{ .reg = .rdx } }, |
| | 10993 | .{ .type = .f128, .kind = .{ .reg = .rax } }, |
| | 10994 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, |
| | 10995 | .unused, |
| | 10996 | }, |
| | 10997 | .dst_temps = .{.mem}, |
| | 10998 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 10999 | .each = .{ .once = &.{ |
| | 11000 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 11001 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 11002 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 11003 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 11004 | .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ }, |
| | 11005 | .{ ._, .p_d, .shuf, .tmp2x, .tmp1x, .ui(0b11_10_11_10), ._ }, |
| | 11006 | .{ ._, ._q, .mov, .tmp5q, .tmp2x, ._, ._ }, |
| | 11007 | .{ ._, ._, .mov, .tmp6q, .tmp4q, ._, ._ }, |
| | 11008 | .{ ._, ._, .@"and", .tmp6q, .memiad(.src1q, .tmp0, .add_unaligned_size, 8), ._, ._ }, |
| | 11009 | .{ ._, ._, .xor, .tmp6q, .tmp5q, ._, ._ }, |
| | 11010 | .{ ._, ._q, .mov, .tmp5q, .tmp1x, ._, ._ }, |
| | 11011 | .{ ._, ._, .cmp, .tmp5q, .si(1), ._, ._ }, |
| | 11012 | .{ ._, ._, .sbb, .tmp6q, .tmp4q, ._, ._ }, |
| | 11013 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| | 11014 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 11015 | .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, |
| | 11016 | .{ .@"1:", ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 11017 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 11018 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 11019 | } }, |
| | 11020 | }, .{ |
| | 11021 | .required_features = .{ .@"64bit", .sse, null, null }, |
| | 11022 | .src_constraints = .{ |
| | 11023 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 11024 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 11025 | .any, |
| | 11026 | }, |
| | 11027 | .patterns = &.{ |
| | 11028 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11029 | }, |
| | 11030 | .call_frame = .{ .alignment = .@"16" }, |
| | 11031 | .extra_temps = .{ |
| | 11032 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 11033 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 11034 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 11035 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, |
| | 11036 | .{ .type = .f128, .kind = .{ .reg = .rdx } }, |
| | 11037 | .{ .type = .f128, .kind = .mem }, |
| | 11038 | .{ .type = .f128, .kind = .{ .reg = .rax } }, |
| | 11039 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, |
| | 11040 | .unused, |
| | 11041 | }, |
| | 11042 | .dst_temps = .{.mem}, |
| | 11043 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 11044 | .each = .{ .once = &.{ |
| | 11045 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 11046 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 11047 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 11048 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 11049 | .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ }, |
| | 11050 | .{ ._, ._ps, .mova, .mem(.tmp5x), .tmp1x, ._, ._ }, |
| | 11051 | .{ ._, ._, .mov, .tmp6q, .tmp4q, ._, ._ }, |
| | 11052 | .{ ._, ._, .@"and", .tmp6q, .memiad(.src1q, .tmp0, .add_unaligned_size, 8), ._, ._ }, |
| | 11053 | .{ ._, ._, .xor, .tmp6q, .memd(.tmp5q, 8), ._, ._ }, |
| | 11054 | .{ ._, ._, .cmp, .mem(.tmp5q), .si(1), ._, ._ }, |
| | 11055 | .{ ._, ._, .sbb, .tmp6q, .tmp4q, ._, ._ }, |
| | 11056 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| | 11057 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 11058 | .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, |
| | 11059 | .{ .@"1:", ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 11060 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 11061 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 11062 | } }, |
| | 11063 | } }) catch |err| switch (err) { |
| | 11064 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 11065 | @tagName(air_tag), |
| | 11066 | cg.typeOf(bin_op.lhs).fmt(pt), |
| | 11067 | ops[0].tracking(cg), |
| | 11068 | ops[1].tracking(cg), |
| | 11069 | }), |
| | 11070 | else => |e| return e, |
| | 11071 | }; |
| | 11072 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 11073 | }, |
| | 11074 | .ptr_add => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else { |
| | 11075 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; |
| | 11076 | const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data; |
| | 11077 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 11078 | try ops[0].toSlicePtr(cg); |
| | 11079 | var res: [1]Temp = undefined; |
| | 11080 | if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{ |
| | 11081 | .patterns = &.{ |
| | 11082 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| | 11083 | }, |
| | 11084 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 11085 | .each = .{ .once = &.{ |
| | 11086 | .{ ._, ._, .lea, .dst0p, .leaa(.src0, .add_src0_elem_size_times_src1), ._, ._ }, |
| | 11087 | } }, |
| | 11088 | }, .{ |
| | 11089 | .dst_constraints = .{.{ .elem_size_is = 1 }}, |
| | 11090 | .patterns = &.{ |
| | 11091 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 11092 | }, |
| | 11093 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 11094 | .each = .{ .once = &.{ |
| | 11095 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ }, |
| | 11096 | } }, |
| | 11097 | }, .{ |
| | 11098 | .dst_constraints = .{.{ .elem_size_is = 2 }}, |
| | 11099 | .patterns = &.{ |
| | 11100 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 11101 | }, |
| | 11102 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 11103 | .each = .{ .once = &.{ |
| | 11104 | .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ }, |
| | 11105 | } }, |
| | 11106 | }, .{ |
| | 11107 | .dst_constraints = .{.{ .elem_size_is = 2 + 1 }}, |
| | 11108 | .patterns = &.{ |
| | 11109 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 11110 | }, |
| | 11111 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 11112 | .each = .{ .once = &.{ |
| | 11113 | .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ }, |
| | 11114 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, |
| | 11115 | } }, |
| | 11116 | }, .{ |
| | 11117 | .dst_constraints = .{.{ .elem_size_is = 4 }}, |
| | 11118 | .patterns = &.{ |
| | 11119 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 11120 | }, |
| | 11121 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 11122 | .each = .{ .once = &.{ |
| | 11123 | .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ }, |
| | 11124 | } }, |
| | 11125 | }, .{ |
| | 11126 | .dst_constraints = .{.{ .elem_size_is = 4 + 1 }}, |
| | 11127 | .patterns = &.{ |
| | 11128 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 11129 | }, |
| | 11130 | .dst_temps = .{.{ .ref = .src1 }}, |
| | 11131 | .each = .{ .once = &.{ |
| | 11132 | .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ }, |
| | 11133 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, |
| | 11134 | } }, |
| | 11135 | }, .{ |
| | 11136 | .required_features = .{ .@"64bit", null, null, null }, |
| | 11137 | .dst_constraints = .{.{ .elem_size_is = 8 }}, |
| | 11138 | .patterns = &.{ |
| | 11139 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 11140 | }, |
| | 11141 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 11142 | .each = .{ .once = &.{ |
| | 11143 | .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ }, |
| | 11144 | } }, |
| | 11145 | }, .{ |
| | 11146 | .required_features = .{ .@"64bit", null, null, null }, |
| | 11147 | .dst_constraints = .{.{ .elem_size_is = 8 + 1 }}, |
| | 11148 | .patterns = &.{ |
| | 11149 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 11150 | }, |
| | 11151 | .dst_temps = .{.{ .ref = .src1 }}, |
| | 11152 | .each = .{ .once = &.{ |
| | 11153 | .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ }, |
| | 11154 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, |
| | 11155 | } }, |
| | 11156 | }, .{ |
| | 11157 | .dst_constraints = .{.po2_elem_size}, |
| | 11158 | .patterns = &.{ |
| | 11159 | .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, |
| | 11160 | }, |
| | 11161 | .dst_temps = .{.{ .ref = .src1 }}, |
| | 11162 | .clobbers = .{ .eflags = true }, |
| | 11163 | .each = .{ .once = &.{ |
| | 11164 | .{ ._, ._l, .sh, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ }, |
| | 11165 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ }, |
| | 11166 | } }, |
| | 11167 | }, .{ |
| | 11168 | .patterns = &.{ |
| | 11169 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 11170 | }, |
| | 11171 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 11172 | .clobbers = .{ .eflags = true }, |
| | 11173 | .each = .{ .once = &.{ |
| | 11174 | .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .add_src0_elem_size), ._ }, |
| | 11175 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, |
| | 11176 | } }, |
| | 11177 | } }) catch |err| switch (err) { |
| | 11178 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 11179 | @tagName(air_tag), |
| | 11180 | cg.typeOf(bin_op.lhs).fmt(pt), |
| | 11181 | ops[0].tracking(cg), |
| | 11182 | ops[1].tracking(cg), |
| | 11183 | }), |
| | 11184 | else => |e| return e, |
| | 11185 | } else { // hack around Sema OPV bugs |
| | 11186 | res[0] = ops[0]; |
| | 11187 | } |
| | 11188 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 11189 | }, |
| | 11190 | .ptr_sub => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else { |
| | 11191 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; |
| | 11192 | const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data; |
| | 11193 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 11194 | try ops[0].toSlicePtr(cg); |
| | 11195 | var res: [1]Temp = undefined; |
| | 11196 | if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{ |
| | 11197 | .patterns = &.{ |
| | 11198 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| | 11199 | }, |
| | 11200 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 11201 | .each = .{ .once = &.{ |
| | 11202 | .{ ._, ._, .lea, .dst0p, .leaa(.src0, .sub_src0_elem_size_times_src1), ._, ._ }, |
| | 11203 | } }, |
| | 11204 | }, .{ |
| | 11205 | .dst_constraints = .{.{ .elem_size_is = 1 }}, |
| | 11206 | .patterns = &.{ |
| | 11207 | .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, |
| | 11208 | }, |
| | 11209 | .dst_temps = .{.{ .ref = .src1 }}, |
| | 11210 | .clobbers = .{ .eflags = true }, |
| | 11211 | .each = .{ .once = &.{ |
| | 11212 | .{ ._, ._, .neg, .src1p, ._, ._, ._ }, |
| | 11213 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ }, |
| | 11214 | } }, |
| | 11215 | }, .{ |
| | 11216 | .dst_constraints = .{.{ .elem_size_is = 2 }}, |
| | 11217 | .patterns = &.{ |
| | 11218 | .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, |
| | 11219 | }, |
| | 11220 | .dst_temps = .{.{ .ref = .src1 }}, |
| | 11221 | .clobbers = .{ .eflags = true }, |
| | 11222 | .each = .{ .once = &.{ |
| | 11223 | .{ ._, ._, .neg, .src1p, ._, ._, ._ }, |
| | 11224 | .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ }, |
| | 11225 | } }, |
| | 11226 | }, .{ |
| | 11227 | .dst_constraints = .{.{ .elem_size_is = 2 + 1 }}, |
| | 11228 | .patterns = &.{ |
| | 11229 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 11230 | }, |
| | 11231 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 11232 | .clobbers = .{ .eflags = true }, |
| | 11233 | .each = .{ .once = &.{ |
| | 11234 | .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ }, |
| | 11235 | .{ ._, ._, .neg, .dst0p, ._, ._, ._ }, |
| | 11236 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, |
| | 11237 | } }, |
| | 11238 | }, .{ |
| | 11239 | .dst_constraints = .{.{ .elem_size_is = 4 }}, |
| | 11240 | .patterns = &.{ |
| | 11241 | .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, |
| | 11242 | }, |
| | 11243 | .dst_temps = .{.{ .ref = .src1 }}, |
| | 11244 | .clobbers = .{ .eflags = true }, |
| | 11245 | .each = .{ .once = &.{ |
| | 11246 | .{ ._, ._, .neg, .src1p, ._, ._, ._ }, |
| | 11247 | .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ }, |
| | 11248 | } }, |
| | 11249 | }, .{ |
| | 11250 | .dst_constraints = .{.{ .elem_size_is = 4 + 1 }}, |
| | 11251 | .patterns = &.{ |
| | 11252 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 11253 | }, |
| | 11254 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 11255 | .clobbers = .{ .eflags = true }, |
| | 11256 | .each = .{ .once = &.{ |
| | 11257 | .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ }, |
| | 11258 | .{ ._, ._, .neg, .dst0p, ._, ._, ._ }, |
| | 11259 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, |
| | 11260 | } }, |
| | 11261 | }, .{ |
| | 11262 | .required_features = .{ .@"64bit", null, null, null }, |
| | 11263 | .dst_constraints = .{.{ .elem_size_is = 8 }}, |
| | 11264 | .patterns = &.{ |
| | 11265 | .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, |
| | 11266 | }, |
| | 11267 | .dst_temps = .{.{ .ref = .src1 }}, |
| | 11268 | .clobbers = .{ .eflags = true }, |
| | 11269 | .each = .{ .once = &.{ |
| | 11270 | .{ ._, ._, .neg, .src1p, ._, ._, ._ }, |
| | 11271 | .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ }, |
| | 11272 | } }, |
| | 11273 | }, .{ |
| | 11274 | .required_features = .{ .@"64bit", null, null, null }, |
| | 11275 | .dst_constraints = .{.{ .elem_size_is = 8 + 1 }}, |
| | 11276 | .patterns = &.{ |
| | 11277 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 11278 | }, |
| | 11279 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 11280 | .clobbers = .{ .eflags = true }, |
| | 11281 | .each = .{ .once = &.{ |
| | 11282 | .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ }, |
| | 11283 | .{ ._, ._, .neg, .dst0p, ._, ._, ._ }, |
| | 11284 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, |
| | 11285 | } }, |
| | 11286 | }, .{ |
| | 11287 | .dst_constraints = .{.po2_elem_size}, |
| | 11288 | .patterns = &.{ |
| | 11289 | .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, |
| | 11290 | }, |
| | 11291 | .dst_temps = .{.{ .ref = .src1 }}, |
| | 11292 | .clobbers = .{ .eflags = true }, |
| | 11293 | .each = .{ .once = &.{ |
| | 11294 | .{ ._, ._l, .sa, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ }, |
| | 11295 | .{ ._, ._, .neg, .src1p, ._, ._, ._ }, |
| | 11296 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ }, |
| | 11297 | } }, |
| | 11298 | }, .{ |
| | 11299 | .patterns = &.{ |
| | 11300 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 11301 | }, |
| | 11302 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 11303 | .clobbers = .{ .eflags = true }, |
| | 11304 | .each = .{ .once = &.{ |
| | 11305 | .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .sub_src0_elem_size), ._ }, |
| | 11306 | .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ }, |
| | 11307 | } }, |
| | 11308 | } }) catch |err| switch (err) { |
| | 11309 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 11310 | @tagName(air_tag), |
| | 11311 | cg.typeOf(bin_op.lhs).fmt(pt), |
| | 11312 | ops[0].tracking(cg), |
| | 11313 | ops[1].tracking(cg), |
| | 11314 | }), |
| | 11315 | else => |e| return e, |
| | 11316 | } else { |
| | 11317 | // hack around Sema OPV bugs |
| | 11318 | res[0] = ops[0]; |
| | 11319 | } |
| | 11320 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 11321 | }, |
| | 11322 | .max => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else { |
| | 11323 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| | 11324 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 11325 | var res: [1]Temp = undefined; |
| | 11326 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ |
| | 11327 | .required_features = .{ .cmov, null, null, null }, |
| | 11328 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| | 11329 | .patterns = &.{ |
| | 11330 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11331 | }, |
| | 11332 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11333 | .clobbers = .{ .eflags = true }, |
| | 11334 | .each = .{ .once = &.{ |
| | 11335 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 11336 | .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ }, |
| | 11337 | } }, |
| | 11338 | }, .{ |
| | 11339 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| | 11340 | .patterns = &.{ |
| | 11341 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11342 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11343 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11344 | }, |
| | 11345 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11346 | .clobbers = .{ .eflags = true }, |
| | 11347 | .each = .{ .once = &.{ |
| | 11348 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 11349 | .{ ._, ._nl, .j, .@"0f", ._, ._, ._ }, |
| | 11350 | .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ }, |
| | 11351 | } }, |
| | 11352 | }, .{ |
| | 11353 | .required_features = .{ .cmov, null, null, null }, |
| | 11354 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| | 11355 | .patterns = &.{ |
| | 11356 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11357 | }, |
| | 11358 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11359 | .clobbers = .{ .eflags = true }, |
| | 11360 | .each = .{ .once = &.{ |
| | 11361 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 11362 | .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ }, |
| | 11363 | } }, |
| | 11364 | }, .{ |
| | 11365 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| | 11366 | .patterns = &.{ |
| | 11367 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11368 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11369 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11370 | }, |
| | 11371 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11372 | .clobbers = .{ .eflags = true }, |
| | 11373 | .each = .{ .once = &.{ |
| | 11374 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 11375 | .{ ._, ._nb, .j, .@"0f", ._, ._, ._ }, |
| | 11376 | .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ }, |
| | 11377 | } }, |
| | 11378 | }, .{ |
| | 11379 | .required_features = .{ .cmov, null, null, null }, |
| | 11380 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| | 11381 | .patterns = &.{ |
| | 11382 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11383 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11384 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11385 | }, |
| | 11386 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11387 | .clobbers = .{ .eflags = true }, |
| | 11388 | .each = .{ .once = &.{ |
| | 11389 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 11390 | .{ ._, ._l, .cmov, .dst0w, .src1w, ._, ._ }, |
| | 11391 | } }, |
| | 11392 | }, .{ |
| | 11393 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| | 11394 | .patterns = &.{ |
| | 11395 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11396 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11397 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11398 | }, |
| | 11399 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11400 | .clobbers = .{ .eflags = true }, |
| | 11401 | .each = .{ .once = &.{ |
| | 11402 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 11403 | .{ ._, ._nl, .j, .@"0f", ._, ._, ._ }, |
| | 11404 | .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ }, |
| | 11405 | } }, |
| | 11406 | }, .{ |
| | 11407 | .required_features = .{ .cmov, null, null, null }, |
| | 11408 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| | 11409 | .patterns = &.{ |
| | 11410 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11411 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11412 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11413 | }, |
| | 11414 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11415 | .clobbers = .{ .eflags = true }, |
| | 11416 | .each = .{ .once = &.{ |
| | 11417 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 11418 | .{ ._, ._b, .cmov, .dst0w, .src1w, ._, ._ }, |
| | 11419 | } }, |
| | 11420 | }, .{ |
| | 11421 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| | 11422 | .patterns = &.{ |
| | 11423 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11424 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11425 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11426 | }, |
| | 11427 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11428 | .clobbers = .{ .eflags = true }, |
| | 11429 | .each = .{ .once = &.{ |
| | 11430 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 11431 | .{ ._, ._nb, .j, .@"0f", ._, ._, ._ }, |
| | 11432 | .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ }, |
| | 11433 | } }, |
| | 11434 | }, .{ |
| | 11435 | .required_features = .{ .cmov, null, null, null }, |
| | 11436 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| | 11437 | .patterns = &.{ |
| | 11438 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11439 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11440 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11441 | }, |
| | 11442 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11443 | .clobbers = .{ .eflags = true }, |
| | 11444 | .each = .{ .once = &.{ |
| | 11445 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 11446 | .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ }, |
| | 11447 | } }, |
| | 11448 | }, .{ |
| | 11449 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| | 11450 | .patterns = &.{ |
| | 11451 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11452 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11453 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11454 | }, |
| | 11455 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11456 | .clobbers = .{ .eflags = true }, |
| | 11457 | .each = .{ .once = &.{ |
| | 11458 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 11459 | .{ ._, ._nl, .j, .@"0f", ._, ._, ._ }, |
| | 11460 | .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ }, |
| | 11461 | } }, |
| | 11462 | }, .{ |
| | 11463 | .required_features = .{ .cmov, null, null, null }, |
| | 11464 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| | 11465 | .patterns = &.{ |
| | 11466 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11467 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11468 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11469 | }, |
| | 11470 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11471 | .clobbers = .{ .eflags = true }, |
| | 11472 | .each = .{ .once = &.{ |
| | 11473 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 11474 | .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ }, |
| | 11475 | } }, |
| | 11476 | }, .{ |
| | 11477 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| | 11478 | .patterns = &.{ |
| | 11479 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11480 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11481 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11482 | }, |
| | 11483 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11484 | .clobbers = .{ .eflags = true }, |
| | 11485 | .each = .{ .once = &.{ |
| | 11486 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 11487 | .{ ._, ._nb, .j, .@"0f", ._, ._, ._ }, |
| | 11488 | .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ }, |
| | 11489 | } }, |
| | 11490 | }, .{ |
| | 11491 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 11492 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| | 11493 | .patterns = &.{ |
| | 11494 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11495 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11496 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11497 | }, |
| | 11498 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11499 | .clobbers = .{ .eflags = true }, |
| | 11500 | .each = .{ .once = &.{ |
| | 11501 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 11502 | .{ ._, ._l, .cmov, .dst0q, .src1q, ._, ._ }, |
| | 11503 | } }, |
| | 11504 | }, .{ |
| | 11505 | .required_features = .{ .@"64bit", null, null, null }, |
| | 11506 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| | 11507 | .patterns = &.{ |
| | 11508 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11509 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11510 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11511 | }, |
| | 11512 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11513 | .clobbers = .{ .eflags = true }, |
| | 11514 | .each = .{ .once = &.{ |
| | 11515 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 11516 | .{ ._, ._nl, .j, .@"0f", ._, ._, ._ }, |
| | 11517 | .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ }, |
| | 11518 | } }, |
| | 11519 | }, .{ |
| | 11520 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 11521 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| | 11522 | .patterns = &.{ |
| | 11523 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11524 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11525 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11526 | }, |
| | 11527 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11528 | .clobbers = .{ .eflags = true }, |
| | 11529 | .each = .{ .once = &.{ |
| | 11530 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 11531 | .{ ._, ._b, .cmov, .dst0q, .src1q, ._, ._ }, |
| | 11532 | } }, |
| | 11533 | }, .{ |
| | 11534 | .required_features = .{ .@"64bit", null, null, null }, |
| | 11535 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| | 11536 | .patterns = &.{ |
| | 11537 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 11538 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 11539 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 11540 | }, |
| | 11541 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11542 | .clobbers = .{ .eflags = true }, |
| | 11543 | .each = .{ .once = &.{ |
| | 11544 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 11545 | .{ ._, ._nb, .j, .@"0f", ._, ._, ._ }, |
| | 11546 | .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ }, |
| | 11547 | } }, |
| | 11548 | }, .{ |
| | 11549 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 11550 | .src_constraints = .{ .any_signed_int, .any_signed_int, .any }, |
| | 11551 | .patterns = &.{ |
| | 11552 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11553 | }, |
| | 11554 | .extra_temps = .{ |
| | 11555 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, |
| | 11556 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, |
| | 11557 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| | 11558 | .unused, |
| | 11559 | .unused, |
| | 11560 | .unused, |
| | 11561 | .unused, |
| | 11562 | .unused, |
| | 11563 | .unused, |
| | 11564 | }, |
| | 11565 | .dst_temps = .{.mem}, |
| | 11566 | .clobbers = .{ .eflags = true }, |
| | 11567 | .each = .{ .once = &.{ |
| | 11568 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, |
| | 11569 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 11570 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| | 11571 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| | 11572 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 11573 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 11574 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| | 11575 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, |
| | 11576 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| | 11577 | .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ }, |
| | 11578 | .{ ._, ._l, .cmov, .tmp0p, .tmp1p, ._, ._ }, |
| | 11579 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 11580 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, |
| | 11581 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 11582 | } }, |
| | 11583 | }, .{ |
| | 11584 | .required_features = .{ .@"64bit", null, null, null }, |
| | 11585 | .src_constraints = .{ .any_signed_int, .any_signed_int, .any }, |
| | 11586 | .patterns = &.{ |
| | 11587 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11588 | }, |
| | 11589 | .extra_temps = .{ |
| | 11590 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, |
| | 11591 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, |
| | 11592 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| | 11593 | .unused, |
| | 11594 | .unused, |
| | 11595 | .unused, |
| | 11596 | .unused, |
| | 11597 | .unused, |
| | 11598 | .unused, |
| | 11599 | }, |
| | 11600 | .dst_temps = .{.mem}, |
| | 11601 | .clobbers = .{ .eflags = true }, |
| | 11602 | .each = .{ .once = &.{ |
| | 11603 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, |
| | 11604 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 11605 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| | 11606 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| | 11607 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 11608 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 11609 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| | 11610 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, |
| | 11611 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| | 11612 | .{ ._, ._nl, .j, .@"0f", ._, ._, ._ }, |
| | 11613 | .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ }, |
| | 11614 | .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 11615 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, |
| | 11616 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 11617 | } }, |
| | 11618 | }, .{ |
| | 11619 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 11620 | .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any }, |
| | 11621 | .patterns = &.{ |
| | 11622 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11623 | }, |
| | 11624 | .extra_temps = .{ |
| | 11625 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, |
| | 11626 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, |
| | 11627 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| | 11628 | .unused, |
| | 11629 | .unused, |
| | 11630 | .unused, |
| | 11631 | .unused, |
| | 11632 | .unused, |
| | 11633 | .unused, |
| | 11634 | }, |
| | 11635 | .dst_temps = .{.mem}, |
| | 11636 | .clobbers = .{ .eflags = true }, |
| | 11637 | .each = .{ .once = &.{ |
| | 11638 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, |
| | 11639 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 11640 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, |
| | 11641 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, |
| | 11642 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 11643 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 11644 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| | 11645 | .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ }, |
| | 11646 | .{ ._, ._b, .cmov, .tmp0p, .tmp1p, ._, ._ }, |
| | 11647 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 11648 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, |
| | 11649 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 11650 | } }, |
| | 11651 | }, .{ |
| | 11652 | .required_features = .{ .@"64bit", null, null, null }, |
| | 11653 | .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any }, |
| | 11654 | .patterns = &.{ |
| | 11655 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11656 | }, |
| | 11657 | .extra_temps = .{ |
| | 11658 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, |
| | 11659 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, |
| | 11660 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| | 11661 | .unused, |
| | 11662 | .unused, |
| | 11663 | .unused, |
| | 11664 | .unused, |
| | 11665 | .unused, |
| | 11666 | .unused, |
| | 11667 | }, |
| | 11668 | .dst_temps = .{.mem}, |
| | 11669 | .clobbers = .{ .eflags = true }, |
| | 11670 | .each = .{ .once = &.{ |
| | 11671 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, |
| | 11672 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 11673 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, |
| | 11674 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, |
| | 11675 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 11676 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 11677 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| | 11678 | .{ ._, ._nb, .j, .@"0f", ._, ._, ._ }, |
| | 11679 | .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ }, |
| | 11680 | .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 11681 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, |
| | 11682 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 11683 | } }, |
| | 11684 | }, .{ |
| | 11685 | .required_features = .{ .avx, null, null, null }, |
| | 11686 | .src_constraints = .{ |
| | 11687 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 11688 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 11689 | .any, |
| | 11690 | }, |
| | 11691 | .patterns = &.{ |
| | 11692 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 11693 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 11694 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 11695 | }, |
| | 11696 | .dst_temps = .{.{ .rc = .sse }}, |
| | 11697 | .each = .{ .once = &.{ |
| | 11698 | .{ ._, .vp_b, .maxs, .dst0x, .src0x, .src1x, ._ }, |
| | 11699 | } }, |
| | 11700 | }, .{ |
| | 11701 | .required_features = .{ .sse4_1, null, null, null }, |
| | 11702 | .src_constraints = .{ |
| | 11703 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 11704 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 11705 | .any, |
| | 11706 | }, |
| | 11707 | .patterns = &.{ |
| | 11708 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 11709 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 11710 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 11711 | }, |
| | 11712 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 11713 | .each = .{ .once = &.{ |
| | 11714 | .{ ._, .p_b, .maxs, .dst0x, .src1x, ._, ._ }, |
| | 11715 | } }, |
| | 11716 | }, .{ |
| | 11717 | .required_features = .{ .sse2, null, null, null }, |
| | 11718 | .src_constraints = .{ |
| | 11719 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 11720 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 11721 | .any, |
| | 11722 | }, |
| | 11723 | .patterns = &.{ |
| | 11724 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 11725 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 11726 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 11727 | }, |
| | 11728 | .dst_temps = .{.{ .rc = .sse }}, |
| | 11729 | .each = .{ .once = &.{ |
| | 11730 | .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ }, |
| | 11731 | .{ ._, .p_b, .cmpgt, .dst0x, .src1x, ._, ._ }, |
| | 11732 | .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ }, |
| | 11733 | .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ }, |
| | 11734 | .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ }, |
| | 11735 | } }, |
| | 11736 | }, .{ |
| | 11737 | .required_features = .{ .avx2, null, null, null }, |
| | 11738 | .src_constraints = .{ |
| | 11739 | .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, |
| | 11740 | .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, |
| | 11741 | .any, |
| | 11742 | }, |
| | 11743 | .patterns = &.{ |
| | 11744 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 11745 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 11746 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 11747 | }, |
| | 11748 | .dst_temps = .{.{ .rc = .sse }}, |
| | 11749 | .each = .{ .once = &.{ |
| | 11750 | .{ ._, .vp_b, .maxs, .dst0y, .src0y, .src1y, ._ }, |
| | 11751 | } }, |
| | 11752 | }, .{ |
| | 11753 | .required_features = .{ .avx2, null, null, null }, |
| | 11754 | .src_constraints = .{ |
| | 11755 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, |
| | 11756 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, |
| | 11757 | .any, |
| | 11758 | }, |
| | 11759 | .patterns = &.{ |
| | 11760 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11761 | }, |
| | 11762 | .extra_temps = .{ |
| | 11763 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 11764 | .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, |
| | 11765 | .unused, |
| | 11766 | .unused, |
| | 11767 | .unused, |
| | 11768 | .unused, |
| | 11769 | .unused, |
| | 11770 | .unused, |
| | 11771 | .unused, |
| | 11772 | }, |
| | 11773 | .dst_temps = .{.mem}, |
| | 11774 | .clobbers = .{ .eflags = true }, |
| | 11775 | .each = .{ .once = &.{ |
| | 11776 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 11777 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 11778 | .{ ._, .vp_b, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ }, |
| | 11779 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| | 11780 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 11781 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 11782 | } }, |
| | 11783 | }, .{ |
| | 11784 | .required_features = .{ .avx, null, null, null }, |
| | 11785 | .src_constraints = .{ |
| | 11786 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 11787 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 11788 | .any, |
| | 11789 | }, |
| | 11790 | .patterns = &.{ |
| | 11791 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11792 | }, |
| | 11793 | .extra_temps = .{ |
| | 11794 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 11795 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 11796 | .unused, |
| | 11797 | .unused, |
| | 11798 | .unused, |
| | 11799 | .unused, |
| | 11800 | .unused, |
| | 11801 | .unused, |
| | 11802 | .unused, |
| | 11803 | }, |
| | 11804 | .dst_temps = .{.mem}, |
| | 11805 | .clobbers = .{ .eflags = true }, |
| | 11806 | .each = .{ .once = &.{ |
| | 11807 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 11808 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 11809 | .{ ._, .vp_b, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ }, |
| | 11810 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 11811 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 11812 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 11813 | } }, |
| | 11814 | }, .{ |
| | 11815 | .required_features = .{ .sse4_1, null, null, null }, |
| | 11816 | .src_constraints = .{ |
| | 11817 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 11818 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 11819 | .any, |
| | 11820 | }, |
| | 11821 | .patterns = &.{ |
| | 11822 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11823 | }, |
| | 11824 | .extra_temps = .{ |
| | 11825 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 11826 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 11827 | .unused, |
| | 11828 | .unused, |
| | 11829 | .unused, |
| | 11830 | .unused, |
| | 11831 | .unused, |
| | 11832 | .unused, |
| | 11833 | .unused, |
| | 11834 | }, |
| | 11835 | .dst_temps = .{.mem}, |
| | 11836 | .clobbers = .{ .eflags = true }, |
| | 11837 | .each = .{ .once = &.{ |
| | 11838 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 11839 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 11840 | .{ ._, .p_b, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 11841 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 11842 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 11843 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 11844 | } }, |
| | 11845 | }, .{ |
| | 11846 | .required_features = .{ .sse2, null, null, null }, |
| | 11847 | .src_constraints = .{ |
| | 11848 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 11849 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 11850 | .any, |
| | 11851 | }, |
| | 11852 | .patterns = &.{ |
| | 11853 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11854 | }, |
| | 11855 | .extra_temps = .{ |
| | 11856 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 11857 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 11858 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 11859 | .unused, |
| | 11860 | .unused, |
| | 11861 | .unused, |
| | 11862 | .unused, |
| | 11863 | .unused, |
| | 11864 | .unused, |
| | 11865 | }, |
| | 11866 | .dst_temps = .{.mem}, |
| | 11867 | .clobbers = .{ .eflags = true }, |
| | 11868 | .each = .{ .once = &.{ |
| | 11869 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 11870 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 11871 | .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| | 11872 | .{ ._, .p_b, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 11873 | .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ }, |
| | 11874 | .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 11875 | .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ }, |
| | 11876 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 11877 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 11878 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 11879 | } }, |
| | 11880 | }, .{ |
| | 11881 | .required_features = .{ .cmov, .slow_incdec, null, null }, |
| | 11882 | .src_constraints = .{ |
| | 11883 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| | 11884 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| | 11885 | .any, |
| | 11886 | }, |
| | 11887 | .patterns = &.{ |
| | 11888 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11889 | }, |
| | 11890 | .extra_temps = .{ |
| | 11891 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 11892 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| | 11893 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| | 11894 | .unused, |
| | 11895 | .unused, |
| | 11896 | .unused, |
| | 11897 | .unused, |
| | 11898 | .unused, |
| | 11899 | .unused, |
| | 11900 | }, |
| | 11901 | .dst_temps = .{.mem}, |
| | 11902 | .clobbers = .{ .eflags = true }, |
| | 11903 | .each = .{ .once = &.{ |
| | 11904 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 11905 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, |
| | 11906 | .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ }, |
| | 11907 | .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ }, |
| | 11908 | .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ }, |
| | 11909 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, |
| | 11910 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 11911 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 11912 | } }, |
| | 11913 | }, .{ |
| | 11914 | .required_features = .{ .cmov, null, null, null }, |
| | 11915 | .src_constraints = .{ |
| | 11916 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| | 11917 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| | 11918 | .any, |
| | 11919 | }, |
| | 11920 | .patterns = &.{ |
| | 11921 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11922 | }, |
| | 11923 | .extra_temps = .{ |
| | 11924 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 11925 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| | 11926 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| | 11927 | .unused, |
| | 11928 | .unused, |
| | 11929 | .unused, |
| | 11930 | .unused, |
| | 11931 | .unused, |
| | 11932 | .unused, |
| | 11933 | }, |
| | 11934 | .dst_temps = .{.mem}, |
| | 11935 | .clobbers = .{ .eflags = true }, |
| | 11936 | .each = .{ .once = &.{ |
| | 11937 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 11938 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, |
| | 11939 | .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ }, |
| | 11940 | .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ }, |
| | 11941 | .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ }, |
| | 11942 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, |
| | 11943 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 11944 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 11945 | } }, |
| | 11946 | }, .{ |
| | 11947 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 11948 | .src_constraints = .{ |
| | 11949 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| | 11950 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| | 11951 | .any, |
| | 11952 | }, |
| | 11953 | .patterns = &.{ |
| | 11954 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11955 | }, |
| | 11956 | .extra_temps = .{ |
| | 11957 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 11958 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| | 11959 | .unused, |
| | 11960 | .unused, |
| | 11961 | .unused, |
| | 11962 | .unused, |
| | 11963 | .unused, |
| | 11964 | .unused, |
| | 11965 | .unused, |
| | 11966 | }, |
| | 11967 | .dst_temps = .{.mem}, |
| | 11968 | .clobbers = .{ .eflags = true }, |
| | 11969 | .each = .{ .once = &.{ |
| | 11970 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 11971 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, |
| | 11972 | .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, |
| | 11973 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, |
| | 11974 | .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, |
| | 11975 | .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, |
| | 11976 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 11977 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 11978 | } }, |
| | 11979 | }, .{ |
| | 11980 | .src_constraints = .{ |
| | 11981 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| | 11982 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| | 11983 | .any, |
| | 11984 | }, |
| | 11985 | .patterns = &.{ |
| | 11986 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 11987 | }, |
| | 11988 | .extra_temps = .{ |
| | 11989 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 11990 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| | 11991 | .unused, |
| | 11992 | .unused, |
| | 11993 | .unused, |
| | 11994 | .unused, |
| | 11995 | .unused, |
| | 11996 | .unused, |
| | 11997 | .unused, |
| | 11998 | }, |
| | 11999 | .dst_temps = .{.mem}, |
| | 12000 | .clobbers = .{ .eflags = true }, |
| | 12001 | .each = .{ .once = &.{ |
| | 12002 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12003 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, |
| | 12004 | .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, |
| | 12005 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, |
| | 12006 | .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, |
| | 12007 | .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, |
| | 12008 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 12009 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 12010 | } }, |
| | 12011 | }, .{ |
| | 12012 | .required_features = .{ .sse, .mmx, null, null }, |
| | 12013 | .src_constraints = .{ |
| | 12014 | .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, |
| | 12015 | .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, |
| | 12016 | .any, |
| | 12017 | }, |
| | 12018 | .patterns = &.{ |
| | 12019 | .{ .src = .{ .to_mut_mmx, .mem, .none } }, |
| | 12020 | .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, |
| | 12021 | .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, |
| | 12022 | }, |
| | 12023 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 12024 | .each = .{ .once = &.{ |
| | 12025 | .{ ._, .p_b, .maxu, .dst0q, .src1q, ._, ._ }, |
| | 12026 | } }, |
| | 12027 | }, .{ |
| | 12028 | .required_features = .{ .avx, null, null, null }, |
| | 12029 | .src_constraints = .{ |
| | 12030 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| | 12031 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| | 12032 | .any, |
| | 12033 | }, |
| | 12034 | .patterns = &.{ |
| | 12035 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 12036 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12037 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 12038 | }, |
| | 12039 | .dst_temps = .{.{ .rc = .sse }}, |
| | 12040 | .each = .{ .once = &.{ |
| | 12041 | .{ ._, .vp_b, .maxu, .dst0x, .src0x, .src1x, ._ }, |
| | 12042 | } }, |
| | 12043 | }, .{ |
| | 12044 | .required_features = .{ .sse2, null, null, null }, |
| | 12045 | .src_constraints = .{ |
| | 12046 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| | 12047 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| | 12048 | .any, |
| | 12049 | }, |
| | 12050 | .patterns = &.{ |
| | 12051 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 12052 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12053 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 12054 | }, |
| | 12055 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 12056 | .each = .{ .once = &.{ |
| | 12057 | .{ ._, .p_b, .maxu, .dst0x, .src1x, ._, ._ }, |
| | 12058 | } }, |
| | 12059 | }, .{ |
| | 12060 | .required_features = .{ .avx2, null, null, null }, |
| | 12061 | .src_constraints = .{ |
| | 12062 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, |
| | 12063 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, |
| | 12064 | .any, |
| | 12065 | }, |
| | 12066 | .patterns = &.{ |
| | 12067 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 12068 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12069 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 12070 | }, |
| | 12071 | .dst_temps = .{.{ .rc = .sse }}, |
| | 12072 | .each = .{ .once = &.{ |
| | 12073 | .{ ._, .vp_b, .maxu, .dst0y, .src0y, .src1y, ._ }, |
| | 12074 | } }, |
| | 12075 | }, .{ |
| | 12076 | .required_features = .{ .avx2, null, null, null }, |
| | 12077 | .src_constraints = .{ |
| | 12078 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, |
| | 12079 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, |
| | 12080 | .any, |
| | 12081 | }, |
| | 12082 | .patterns = &.{ |
| | 12083 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12084 | }, |
| | 12085 | .extra_temps = .{ |
| | 12086 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12087 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| | 12088 | .unused, |
| | 12089 | .unused, |
| | 12090 | .unused, |
| | 12091 | .unused, |
| | 12092 | .unused, |
| | 12093 | .unused, |
| | 12094 | .unused, |
| | 12095 | }, |
| | 12096 | .dst_temps = .{.mem}, |
| | 12097 | .clobbers = .{ .eflags = true }, |
| | 12098 | .each = .{ .once = &.{ |
| | 12099 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12100 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 12101 | .{ ._, .vp_b, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ }, |
| | 12102 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| | 12103 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 12104 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12105 | } }, |
| | 12106 | }, .{ |
| | 12107 | .required_features = .{ .avx, null, null, null }, |
| | 12108 | .src_constraints = .{ |
| | 12109 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| | 12110 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| | 12111 | .any, |
| | 12112 | }, |
| | 12113 | .patterns = &.{ |
| | 12114 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12115 | }, |
| | 12116 | .extra_temps = .{ |
| | 12117 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12118 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 12119 | .unused, |
| | 12120 | .unused, |
| | 12121 | .unused, |
| | 12122 | .unused, |
| | 12123 | .unused, |
| | 12124 | .unused, |
| | 12125 | .unused, |
| | 12126 | }, |
| | 12127 | .dst_temps = .{.mem}, |
| | 12128 | .clobbers = .{ .eflags = true }, |
| | 12129 | .each = .{ .once = &.{ |
| | 12130 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12131 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 12132 | .{ ._, .vp_b, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ }, |
| | 12133 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 12134 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 12135 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12136 | } }, |
| | 12137 | }, .{ |
| | 12138 | .required_features = .{ .sse2, null, null, null }, |
| | 12139 | .src_constraints = .{ |
| | 12140 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| | 12141 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| | 12142 | .any, |
| | 12143 | }, |
| | 12144 | .patterns = &.{ |
| | 12145 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12146 | }, |
| | 12147 | .extra_temps = .{ |
| | 12148 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12149 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 12150 | .unused, |
| | 12151 | .unused, |
| | 12152 | .unused, |
| | 12153 | .unused, |
| | 12154 | .unused, |
| | 12155 | .unused, |
| | 12156 | .unused, |
| | 12157 | }, |
| | 12158 | .dst_temps = .{.mem}, |
| | 12159 | .clobbers = .{ .eflags = true }, |
| | 12160 | .each = .{ .once = &.{ |
| | 12161 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12162 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 12163 | .{ ._, .p_b, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 12164 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 12165 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 12166 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12167 | } }, |
| | 12168 | }, .{ |
| | 12169 | .required_features = .{ .cmov, .slow_incdec, null, null }, |
| | 12170 | .src_constraints = .{ |
| | 12171 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| | 12172 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| | 12173 | .any, |
| | 12174 | }, |
| | 12175 | .patterns = &.{ |
| | 12176 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12177 | }, |
| | 12178 | .extra_temps = .{ |
| | 12179 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12180 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 12181 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 12182 | .unused, |
| | 12183 | .unused, |
| | 12184 | .unused, |
| | 12185 | .unused, |
| | 12186 | .unused, |
| | 12187 | .unused, |
| | 12188 | }, |
| | 12189 | .dst_temps = .{.mem}, |
| | 12190 | .clobbers = .{ .eflags = true }, |
| | 12191 | .each = .{ .once = &.{ |
| | 12192 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12193 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, |
| | 12194 | .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ }, |
| | 12195 | .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ }, |
| | 12196 | .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ }, |
| | 12197 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, |
| | 12198 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 12199 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12200 | } }, |
| | 12201 | }, .{ |
| | 12202 | .required_features = .{ .cmov, null, null, null }, |
| | 12203 | .src_constraints = .{ |
| | 12204 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| | 12205 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| | 12206 | .any, |
| | 12207 | }, |
| | 12208 | .patterns = &.{ |
| | 12209 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12210 | }, |
| | 12211 | .extra_temps = .{ |
| | 12212 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12213 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 12214 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 12215 | .unused, |
| | 12216 | .unused, |
| | 12217 | .unused, |
| | 12218 | .unused, |
| | 12219 | .unused, |
| | 12220 | .unused, |
| | 12221 | }, |
| | 12222 | .dst_temps = .{.mem}, |
| | 12223 | .clobbers = .{ .eflags = true }, |
| | 12224 | .each = .{ .once = &.{ |
| | 12225 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12226 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, |
| | 12227 | .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ }, |
| | 12228 | .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ }, |
| | 12229 | .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ }, |
| | 12230 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, |
| | 12231 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 12232 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 12233 | } }, |
| | 12234 | }, .{ |
| | 12235 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 12236 | .src_constraints = .{ |
| | 12237 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| | 12238 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| | 12239 | .any, |
| | 12240 | }, |
| | 12241 | .patterns = &.{ |
| | 12242 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12243 | }, |
| | 12244 | .extra_temps = .{ |
| | 12245 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12246 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 12247 | .unused, |
| | 12248 | .unused, |
| | 12249 | .unused, |
| | 12250 | .unused, |
| | 12251 | .unused, |
| | 12252 | .unused, |
| | 12253 | .unused, |
| | 12254 | }, |
| | 12255 | .dst_temps = .{.mem}, |
| | 12256 | .clobbers = .{ .eflags = true }, |
| | 12257 | .each = .{ .once = &.{ |
| | 12258 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12259 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, |
| | 12260 | .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, |
| | 12261 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, |
| | 12262 | .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, |
| | 12263 | .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, |
| | 12264 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 12265 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12266 | } }, |
| | 12267 | }, .{ |
| | 12268 | .src_constraints = .{ |
| | 12269 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| | 12270 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| | 12271 | .any, |
| | 12272 | }, |
| | 12273 | .patterns = &.{ |
| | 12274 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12275 | }, |
| | 12276 | .extra_temps = .{ |
| | 12277 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12278 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 12279 | .unused, |
| | 12280 | .unused, |
| | 12281 | .unused, |
| | 12282 | .unused, |
| | 12283 | .unused, |
| | 12284 | .unused, |
| | 12285 | .unused, |
| | 12286 | }, |
| | 12287 | .dst_temps = .{.mem}, |
| | 12288 | .clobbers = .{ .eflags = true }, |
| | 12289 | .each = .{ .once = &.{ |
| | 12290 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12291 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, |
| | 12292 | .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, |
| | 12293 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, |
| | 12294 | .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ }, |
| | 12295 | .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, |
| | 12296 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 12297 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 12298 | } }, |
| | 12299 | }, .{ |
| | 12300 | .required_features = .{ .sse, .mmx, null, null }, |
| | 12301 | .src_constraints = .{ |
| | 12302 | .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, |
| | 12303 | .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, |
| | 12304 | .any, |
| | 12305 | }, |
| | 12306 | .patterns = &.{ |
| | 12307 | .{ .src = .{ .to_mut_mmx, .mem, .none } }, |
| | 12308 | .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, |
| | 12309 | .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, |
| | 12310 | }, |
| | 12311 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 12312 | .each = .{ .once = &.{ |
| | 12313 | .{ ._, .p_w, .maxs, .dst0q, .src1q, ._, ._ }, |
| | 12314 | } }, |
| | 12315 | }, .{ |
| | 12316 | .required_features = .{ .avx, null, null, null }, |
| | 12317 | .src_constraints = .{ |
| | 12318 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| | 12319 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| | 12320 | .any, |
| | 12321 | }, |
| | 12322 | .patterns = &.{ |
| | 12323 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 12324 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12325 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 12326 | }, |
| | 12327 | .dst_temps = .{.{ .rc = .sse }}, |
| | 12328 | .each = .{ .once = &.{ |
| | 12329 | .{ ._, .vp_w, .maxs, .dst0x, .src0x, .src1x, ._ }, |
| | 12330 | } }, |
| | 12331 | }, .{ |
| | 12332 | .required_features = .{ .sse2, null, null, null }, |
| | 12333 | .src_constraints = .{ |
| | 12334 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| | 12335 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| | 12336 | .any, |
| | 12337 | }, |
| | 12338 | .patterns = &.{ |
| | 12339 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 12340 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12341 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 12342 | }, |
| | 12343 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 12344 | .each = .{ .once = &.{ |
| | 12345 | .{ ._, .p_w, .maxs, .dst0x, .src1x, ._, ._ }, |
| | 12346 | } }, |
| | 12347 | }, .{ |
| | 12348 | .required_features = .{ .avx2, null, null, null }, |
| | 12349 | .src_constraints = .{ |
| | 12350 | .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, |
| | 12351 | .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, |
| | 12352 | .any, |
| | 12353 | }, |
| | 12354 | .patterns = &.{ |
| | 12355 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 12356 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12357 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 12358 | }, |
| | 12359 | .dst_temps = .{.{ .rc = .sse }}, |
| | 12360 | .each = .{ .once = &.{ |
| | 12361 | .{ ._, .vp_w, .maxs, .dst0y, .src0y, .src1y, ._ }, |
| | 12362 | } }, |
| | 12363 | }, .{ |
| | 12364 | .required_features = .{ .avx2, null, null, null }, |
| | 12365 | .src_constraints = .{ |
| | 12366 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, |
| | 12367 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, |
| | 12368 | .any, |
| | 12369 | }, |
| | 12370 | .patterns = &.{ |
| | 12371 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12372 | }, |
| | 12373 | .extra_temps = .{ |
| | 12374 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12375 | .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, |
| | 12376 | .unused, |
| | 12377 | .unused, |
| | 12378 | .unused, |
| | 12379 | .unused, |
| | 12380 | .unused, |
| | 12381 | .unused, |
| | 12382 | .unused, |
| | 12383 | }, |
| | 12384 | .dst_temps = .{.mem}, |
| | 12385 | .clobbers = .{ .eflags = true }, |
| | 12386 | .each = .{ .once = &.{ |
| | 12387 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12388 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 12389 | .{ ._, .vp_w, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ }, |
| | 12390 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| | 12391 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 12392 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12393 | } }, |
| | 12394 | }, .{ |
| | 12395 | .required_features = .{ .avx, null, null, null }, |
| | 12396 | .src_constraints = .{ |
| | 12397 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| | 12398 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| | 12399 | .any, |
| | 12400 | }, |
| | 12401 | .patterns = &.{ |
| | 12402 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12403 | }, |
| | 12404 | .extra_temps = .{ |
| | 12405 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12406 | .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, |
| | 12407 | .unused, |
| | 12408 | .unused, |
| | 12409 | .unused, |
| | 12410 | .unused, |
| | 12411 | .unused, |
| | 12412 | .unused, |
| | 12413 | .unused, |
| | 12414 | }, |
| | 12415 | .dst_temps = .{.mem}, |
| | 12416 | .clobbers = .{ .eflags = true }, |
| | 12417 | .each = .{ .once = &.{ |
| | 12418 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12419 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 12420 | .{ ._, .vp_w, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ }, |
| | 12421 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 12422 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 12423 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12424 | } }, |
| | 12425 | }, .{ |
| | 12426 | .required_features = .{ .sse2, null, null, null }, |
| | 12427 | .src_constraints = .{ |
| | 12428 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| | 12429 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| | 12430 | .any, |
| | 12431 | }, |
| | 12432 | .patterns = &.{ |
| | 12433 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12434 | }, |
| | 12435 | .extra_temps = .{ |
| | 12436 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12437 | .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, |
| | 12438 | .unused, |
| | 12439 | .unused, |
| | 12440 | .unused, |
| | 12441 | .unused, |
| | 12442 | .unused, |
| | 12443 | .unused, |
| | 12444 | .unused, |
| | 12445 | }, |
| | 12446 | .dst_temps = .{.mem}, |
| | 12447 | .clobbers = .{ .eflags = true }, |
| | 12448 | .each = .{ .once = &.{ |
| | 12449 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12450 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 12451 | .{ ._, .p_w, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 12452 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 12453 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 12454 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12455 | } }, |
| | 12456 | }, .{ |
| | 12457 | .required_features = .{ .cmov, null, null, null }, |
| | 12458 | .src_constraints = .{ |
| | 12459 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, |
| | 12460 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, |
| | 12461 | .any, |
| | 12462 | }, |
| | 12463 | .patterns = &.{ |
| | 12464 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12465 | }, |
| | 12466 | .extra_temps = .{ |
| | 12467 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12468 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| | 12469 | .unused, |
| | 12470 | .unused, |
| | 12471 | .unused, |
| | 12472 | .unused, |
| | 12473 | .unused, |
| | 12474 | .unused, |
| | 12475 | .unused, |
| | 12476 | }, |
| | 12477 | .dst_temps = .{.mem}, |
| | 12478 | .clobbers = .{ .eflags = true }, |
| | 12479 | .each = .{ .once = &.{ |
| | 12480 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12481 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, |
| | 12482 | .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, |
| | 12483 | .{ ._, ._l, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, |
| | 12484 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, |
| | 12485 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 12486 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12487 | } }, |
| | 12488 | }, .{ |
| | 12489 | .src_constraints = .{ |
| | 12490 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, |
| | 12491 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, |
| | 12492 | .any, |
| | 12493 | }, |
| | 12494 | .patterns = &.{ |
| | 12495 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12496 | }, |
| | 12497 | .extra_temps = .{ |
| | 12498 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12499 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| | 12500 | .unused, |
| | 12501 | .unused, |
| | 12502 | .unused, |
| | 12503 | .unused, |
| | 12504 | .unused, |
| | 12505 | .unused, |
| | 12506 | .unused, |
| | 12507 | }, |
| | 12508 | .dst_temps = .{.mem}, |
| | 12509 | .clobbers = .{ .eflags = true }, |
| | 12510 | .each = .{ .once = &.{ |
| | 12511 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12512 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, |
| | 12513 | .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, |
| | 12514 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, |
| | 12515 | .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, |
| | 12516 | .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, |
| | 12517 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 12518 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12519 | } }, |
| | 12520 | }, .{ |
| | 12521 | .required_features = .{ .avx, null, null, null }, |
| | 12522 | .src_constraints = .{ |
| | 12523 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 12524 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 12525 | .any, |
| | 12526 | }, |
| | 12527 | .patterns = &.{ |
| | 12528 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 12529 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12530 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 12531 | }, |
| | 12532 | .dst_temps = .{.{ .rc = .sse }}, |
| | 12533 | .each = .{ .once = &.{ |
| | 12534 | .{ ._, .vp_w, .maxu, .dst0x, .src0x, .src1x, ._ }, |
| | 12535 | } }, |
| | 12536 | }, .{ |
| | 12537 | .required_features = .{ .sse4_1, null, null, null }, |
| | 12538 | .src_constraints = .{ |
| | 12539 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 12540 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 12541 | .any, |
| | 12542 | }, |
| | 12543 | .patterns = &.{ |
| | 12544 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 12545 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12546 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 12547 | }, |
| | 12548 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 12549 | .each = .{ .once = &.{ |
| | 12550 | .{ ._, .p_w, .maxu, .dst0x, .src1x, ._, ._ }, |
| | 12551 | } }, |
| | 12552 | }, .{ |
| | 12553 | .required_features = .{ .sse2, null, null, null }, |
| | 12554 | .src_constraints = .{ |
| | 12555 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 12556 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 12557 | .any, |
| | 12558 | }, |
| | 12559 | .patterns = &.{ |
| | 12560 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 12561 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12562 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 12563 | }, |
| | 12564 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 12565 | .each = .{ .once = &.{ |
| | 12566 | .{ ._, .p_w, .subus, .dst0x, .src1x, ._, ._ }, |
| | 12567 | .{ ._, .p_w, .add, .dst0x, .src1x, ._, ._ }, |
| | 12568 | } }, |
| | 12569 | }, .{ |
| | 12570 | .required_features = .{ .avx2, null, null, null }, |
| | 12571 | .src_constraints = .{ |
| | 12572 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, |
| | 12573 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, |
| | 12574 | .any, |
| | 12575 | }, |
| | 12576 | .patterns = &.{ |
| | 12577 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 12578 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12579 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 12580 | }, |
| | 12581 | .dst_temps = .{.{ .rc = .sse }}, |
| | 12582 | .each = .{ .once = &.{ |
| | 12583 | .{ ._, .vp_w, .maxu, .dst0y, .src0y, .src1y, ._ }, |
| | 12584 | } }, |
| | 12585 | }, .{ |
| | 12586 | .required_features = .{ .avx2, null, null, null }, |
| | 12587 | .src_constraints = .{ |
| | 12588 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, |
| | 12589 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, |
| | 12590 | .any, |
| | 12591 | }, |
| | 12592 | .patterns = &.{ |
| | 12593 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12594 | }, |
| | 12595 | .extra_temps = .{ |
| | 12596 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12597 | .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, |
| | 12598 | .unused, |
| | 12599 | .unused, |
| | 12600 | .unused, |
| | 12601 | .unused, |
| | 12602 | .unused, |
| | 12603 | .unused, |
| | 12604 | .unused, |
| | 12605 | }, |
| | 12606 | .dst_temps = .{.mem}, |
| | 12607 | .clobbers = .{ .eflags = true }, |
| | 12608 | .each = .{ .once = &.{ |
| | 12609 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12610 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 12611 | .{ ._, .vp_w, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ }, |
| | 12612 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| | 12613 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 12614 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12615 | } }, |
| | 12616 | }, .{ |
| | 12617 | .required_features = .{ .avx, null, null, null }, |
| | 12618 | .src_constraints = .{ |
| | 12619 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 12620 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 12621 | .any, |
| | 12622 | }, |
| | 12623 | .patterns = &.{ |
| | 12624 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12625 | }, |
| | 12626 | .extra_temps = .{ |
| | 12627 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12628 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 12629 | .unused, |
| | 12630 | .unused, |
| | 12631 | .unused, |
| | 12632 | .unused, |
| | 12633 | .unused, |
| | 12634 | .unused, |
| | 12635 | .unused, |
| | 12636 | }, |
| | 12637 | .dst_temps = .{.mem}, |
| | 12638 | .clobbers = .{ .eflags = true }, |
| | 12639 | .each = .{ .once = &.{ |
| | 12640 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12641 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 12642 | .{ ._, .vp_w, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ }, |
| | 12643 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 12644 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 12645 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12646 | } }, |
| | 12647 | }, .{ |
| | 12648 | .required_features = .{ .sse4_1, null, null, null }, |
| | 12649 | .src_constraints = .{ |
| | 12650 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 12651 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 12652 | .any, |
| | 12653 | }, |
| | 12654 | .patterns = &.{ |
| | 12655 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12656 | }, |
| | 12657 | .extra_temps = .{ |
| | 12658 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12659 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 12660 | .unused, |
| | 12661 | .unused, |
| | 12662 | .unused, |
| | 12663 | .unused, |
| | 12664 | .unused, |
| | 12665 | .unused, |
| | 12666 | .unused, |
| | 12667 | }, |
| | 12668 | .dst_temps = .{.mem}, |
| | 12669 | .clobbers = .{ .eflags = true }, |
| | 12670 | .each = .{ .once = &.{ |
| | 12671 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12672 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 12673 | .{ ._, .p_w, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 12674 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 12675 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 12676 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12677 | } }, |
| | 12678 | }, .{ |
| | 12679 | .required_features = .{ .sse2, null, null, null }, |
| | 12680 | .src_constraints = .{ |
| | 12681 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 12682 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 12683 | .any, |
| | 12684 | }, |
| | 12685 | .patterns = &.{ |
| | 12686 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12687 | }, |
| | 12688 | .extra_temps = .{ |
| | 12689 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12690 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 12691 | .unused, |
| | 12692 | .unused, |
| | 12693 | .unused, |
| | 12694 | .unused, |
| | 12695 | .unused, |
| | 12696 | .unused, |
| | 12697 | .unused, |
| | 12698 | }, |
| | 12699 | .dst_temps = .{.mem}, |
| | 12700 | .clobbers = .{ .eflags = true }, |
| | 12701 | .each = .{ .once = &.{ |
| | 12702 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12703 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 12704 | .{ ._, .p_w, .subus, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 12705 | .{ ._, .p_w, .add, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 12706 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 12707 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 12708 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12709 | } }, |
| | 12710 | }, .{ |
| | 12711 | .required_features = .{ .cmov, null, null, null }, |
| | 12712 | .src_constraints = .{ |
| | 12713 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, |
| | 12714 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, |
| | 12715 | .any, |
| | 12716 | }, |
| | 12717 | .patterns = &.{ |
| | 12718 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12719 | }, |
| | 12720 | .extra_temps = .{ |
| | 12721 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12722 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 12723 | .unused, |
| | 12724 | .unused, |
| | 12725 | .unused, |
| | 12726 | .unused, |
| | 12727 | .unused, |
| | 12728 | .unused, |
| | 12729 | .unused, |
| | 12730 | }, |
| | 12731 | .dst_temps = .{.mem}, |
| | 12732 | .clobbers = .{ .eflags = true }, |
| | 12733 | .each = .{ .once = &.{ |
| | 12734 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12735 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, |
| | 12736 | .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, |
| | 12737 | .{ ._, ._b, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, |
| | 12738 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, |
| | 12739 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 12740 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12741 | } }, |
| | 12742 | }, .{ |
| | 12743 | .src_constraints = .{ |
| | 12744 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, |
| | 12745 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, |
| | 12746 | .any, |
| | 12747 | }, |
| | 12748 | .patterns = &.{ |
| | 12749 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12750 | }, |
| | 12751 | .extra_temps = .{ |
| | 12752 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12753 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 12754 | .unused, |
| | 12755 | .unused, |
| | 12756 | .unused, |
| | 12757 | .unused, |
| | 12758 | .unused, |
| | 12759 | .unused, |
| | 12760 | .unused, |
| | 12761 | }, |
| | 12762 | .dst_temps = .{.mem}, |
| | 12763 | .clobbers = .{ .eflags = true }, |
| | 12764 | .each = .{ .once = &.{ |
| | 12765 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12766 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, |
| | 12767 | .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, |
| | 12768 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, |
| | 12769 | .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, |
| | 12770 | .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, |
| | 12771 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 12772 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12773 | } }, |
| | 12774 | }, .{ |
| | 12775 | .required_features = .{ .avx, null, null, null }, |
| | 12776 | .src_constraints = .{ |
| | 12777 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 12778 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 12779 | .any, |
| | 12780 | }, |
| | 12781 | .patterns = &.{ |
| | 12782 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 12783 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12784 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 12785 | }, |
| | 12786 | .dst_temps = .{.{ .rc = .sse }}, |
| | 12787 | .each = .{ .once = &.{ |
| | 12788 | .{ ._, .vp_d, .maxs, .dst0x, .src0x, .src1x, ._ }, |
| | 12789 | } }, |
| | 12790 | }, .{ |
| | 12791 | .required_features = .{ .sse4_1, null, null, null }, |
| | 12792 | .src_constraints = .{ |
| | 12793 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 12794 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 12795 | .any, |
| | 12796 | }, |
| | 12797 | .patterns = &.{ |
| | 12798 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 12799 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12800 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 12801 | }, |
| | 12802 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 12803 | .each = .{ .once = &.{ |
| | 12804 | .{ ._, .p_d, .maxs, .dst0x, .src1x, ._, ._ }, |
| | 12805 | } }, |
| | 12806 | }, .{ |
| | 12807 | .required_features = .{ .sse2, null, null, null }, |
| | 12808 | .src_constraints = .{ |
| | 12809 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 12810 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 12811 | .any, |
| | 12812 | }, |
| | 12813 | .patterns = &.{ |
| | 12814 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 12815 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12816 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 12817 | }, |
| | 12818 | .dst_temps = .{.{ .rc = .sse }}, |
| | 12819 | .each = .{ .once = &.{ |
| | 12820 | .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ }, |
| | 12821 | .{ ._, .p_d, .cmpgt, .dst0x, .src1x, ._, ._ }, |
| | 12822 | .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ }, |
| | 12823 | .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ }, |
| | 12824 | .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ }, |
| | 12825 | } }, |
| | 12826 | }, .{ |
| | 12827 | .required_features = .{ .avx2, null, null, null }, |
| | 12828 | .src_constraints = .{ |
| | 12829 | .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, |
| | 12830 | .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, |
| | 12831 | .any, |
| | 12832 | }, |
| | 12833 | .patterns = &.{ |
| | 12834 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 12835 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 12836 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 12837 | }, |
| | 12838 | .dst_temps = .{.{ .rc = .sse }}, |
| | 12839 | .each = .{ .once = &.{ |
| | 12840 | .{ ._, .vp_d, .maxs, .dst0y, .src0y, .src1y, ._ }, |
| | 12841 | } }, |
| | 12842 | }, .{ |
| | 12843 | .required_features = .{ .avx2, null, null, null }, |
| | 12844 | .src_constraints = .{ |
| | 12845 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, |
| | 12846 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, |
| | 12847 | .any, |
| | 12848 | }, |
| | 12849 | .patterns = &.{ |
| | 12850 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12851 | }, |
| | 12852 | .extra_temps = .{ |
| | 12853 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12854 | .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, |
| | 12855 | .unused, |
| | 12856 | .unused, |
| | 12857 | .unused, |
| | 12858 | .unused, |
| | 12859 | .unused, |
| | 12860 | .unused, |
| | 12861 | .unused, |
| | 12862 | }, |
| | 12863 | .dst_temps = .{.mem}, |
| | 12864 | .clobbers = .{ .eflags = true }, |
| | 12865 | .each = .{ .once = &.{ |
| | 12866 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12867 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 12868 | .{ ._, .vp_d, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ }, |
| | 12869 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| | 12870 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 12871 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12872 | } }, |
| | 12873 | }, .{ |
| | 12874 | .required_features = .{ .avx, null, null, null }, |
| | 12875 | .src_constraints = .{ |
| | 12876 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 12877 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 12878 | .any, |
| | 12879 | }, |
| | 12880 | .patterns = &.{ |
| | 12881 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12882 | }, |
| | 12883 | .extra_temps = .{ |
| | 12884 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12885 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| | 12886 | .unused, |
| | 12887 | .unused, |
| | 12888 | .unused, |
| | 12889 | .unused, |
| | 12890 | .unused, |
| | 12891 | .unused, |
| | 12892 | .unused, |
| | 12893 | }, |
| | 12894 | .dst_temps = .{.mem}, |
| | 12895 | .clobbers = .{ .eflags = true }, |
| | 12896 | .each = .{ .once = &.{ |
| | 12897 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12898 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 12899 | .{ ._, .vp_d, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ }, |
| | 12900 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 12901 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 12902 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12903 | } }, |
| | 12904 | }, .{ |
| | 12905 | .required_features = .{ .sse4_1, null, null, null }, |
| | 12906 | .src_constraints = .{ |
| | 12907 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 12908 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 12909 | .any, |
| | 12910 | }, |
| | 12911 | .patterns = &.{ |
| | 12912 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12913 | }, |
| | 12914 | .extra_temps = .{ |
| | 12915 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12916 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| | 12917 | .unused, |
| | 12918 | .unused, |
| | 12919 | .unused, |
| | 12920 | .unused, |
| | 12921 | .unused, |
| | 12922 | .unused, |
| | 12923 | .unused, |
| | 12924 | }, |
| | 12925 | .dst_temps = .{.mem}, |
| | 12926 | .clobbers = .{ .eflags = true }, |
| | 12927 | .each = .{ .once = &.{ |
| | 12928 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12929 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 12930 | .{ ._, .p_d, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 12931 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 12932 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 12933 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12934 | } }, |
| | 12935 | }, .{ |
| | 12936 | .required_features = .{ .sse2, null, null, null }, |
| | 12937 | .src_constraints = .{ |
| | 12938 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 12939 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 12940 | .any, |
| | 12941 | }, |
| | 12942 | .patterns = &.{ |
| | 12943 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12944 | }, |
| | 12945 | .extra_temps = .{ |
| | 12946 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12947 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| | 12948 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| | 12949 | .unused, |
| | 12950 | .unused, |
| | 12951 | .unused, |
| | 12952 | .unused, |
| | 12953 | .unused, |
| | 12954 | .unused, |
| | 12955 | }, |
| | 12956 | .dst_temps = .{.mem}, |
| | 12957 | .clobbers = .{ .eflags = true }, |
| | 12958 | .each = .{ .once = &.{ |
| | 12959 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12960 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 12961 | .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| | 12962 | .{ ._, .p_d, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 12963 | .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ }, |
| | 12964 | .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 12965 | .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ }, |
| | 12966 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 12967 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 12968 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 12969 | } }, |
| | 12970 | }, .{ |
| | 12971 | .required_features = .{ .cmov, null, null, null }, |
| | 12972 | .src_constraints = .{ |
| | 12973 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, |
| | 12974 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, |
| | 12975 | .any, |
| | 12976 | }, |
| | 12977 | .patterns = &.{ |
| | 12978 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 12979 | }, |
| | 12980 | .extra_temps = .{ |
| | 12981 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 12982 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| | 12983 | .unused, |
| | 12984 | .unused, |
| | 12985 | .unused, |
| | 12986 | .unused, |
| | 12987 | .unused, |
| | 12988 | .unused, |
| | 12989 | .unused, |
| | 12990 | }, |
| | 12991 | .dst_temps = .{.mem}, |
| | 12992 | .clobbers = .{ .eflags = true }, |
| | 12993 | .each = .{ .once = &.{ |
| | 12994 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 12995 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, |
| | 12996 | .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, |
| | 12997 | .{ ._, ._l, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, |
| | 12998 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ }, |
| | 12999 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 13000 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13001 | } }, |
| | 13002 | }, .{ |
| | 13003 | .src_constraints = .{ |
| | 13004 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, |
| | 13005 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, |
| | 13006 | .any, |
| | 13007 | }, |
| | 13008 | .patterns = &.{ |
| | 13009 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13010 | }, |
| | 13011 | .extra_temps = .{ |
| | 13012 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13013 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| | 13014 | .unused, |
| | 13015 | .unused, |
| | 13016 | .unused, |
| | 13017 | .unused, |
| | 13018 | .unused, |
| | 13019 | .unused, |
| | 13020 | .unused, |
| | 13021 | }, |
| | 13022 | .dst_temps = .{.mem}, |
| | 13023 | .clobbers = .{ .eflags = true }, |
| | 13024 | .each = .{ .once = &.{ |
| | 13025 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13026 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, |
| | 13027 | .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, |
| | 13028 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, |
| | 13029 | .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, |
| | 13030 | .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ }, |
| | 13031 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 13032 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13033 | } }, |
| | 13034 | }, .{ |
| | 13035 | .required_features = .{ .avx, null, null, null }, |
| | 13036 | .src_constraints = .{ |
| | 13037 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 13038 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 13039 | .any, |
| | 13040 | }, |
| | 13041 | .patterns = &.{ |
| | 13042 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 13043 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 13044 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 13045 | }, |
| | 13046 | .dst_temps = .{.{ .rc = .sse }}, |
| | 13047 | .each = .{ .once = &.{ |
| | 13048 | .{ ._, .vp_d, .maxu, .dst0x, .src0x, .src1x, ._ }, |
| | 13049 | } }, |
| | 13050 | }, .{ |
| | 13051 | .required_features = .{ .sse4_1, null, null, null }, |
| | 13052 | .src_constraints = .{ |
| | 13053 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 13054 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 13055 | .any, |
| | 13056 | }, |
| | 13057 | .patterns = &.{ |
| | 13058 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 13059 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 13060 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 13061 | }, |
| | 13062 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 13063 | .each = .{ .once = &.{ |
| | 13064 | .{ ._, .p_d, .maxu, .dst0x, .src1x, ._, ._ }, |
| | 13065 | } }, |
| | 13066 | }, .{ |
| | 13067 | .required_features = .{ .sse2, null, null, null }, |
| | 13068 | .src_constraints = .{ |
| | 13069 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 13070 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 13071 | .any, |
| | 13072 | }, |
| | 13073 | .patterns = &.{ |
| | 13074 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 13075 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 13076 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 13077 | }, |
| | 13078 | .extra_temps = .{ |
| | 13079 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 13080 | .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| | 13081 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 13082 | .unused, |
| | 13083 | .unused, |
| | 13084 | .unused, |
| | 13085 | .unused, |
| | 13086 | .unused, |
| | 13087 | .unused, |
| | 13088 | }, |
| | 13089 | .dst_temps = .{.{ .rc = .sse }}, |
| | 13090 | .each = .{ .once = &.{ |
| | 13091 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 13092 | .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 13093 | .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, |
| | 13094 | .{ ._, .p_, .xor, .dst0x, .src0x, ._, ._ }, |
| | 13095 | .{ ._, .p_, .xor, .tmp2x, .src1x, ._, ._ }, |
| | 13096 | .{ ._, .p_d, .cmpgt, .dst0x, .tmp2x, ._, ._ }, |
| | 13097 | .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ }, |
| | 13098 | .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ }, |
| | 13099 | .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ }, |
| | 13100 | } }, |
| | 13101 | }, .{ |
| | 13102 | .required_features = .{ .avx2, null, null, null }, |
| | 13103 | .src_constraints = .{ |
| | 13104 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, |
| | 13105 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, |
| | 13106 | .any, |
| | 13107 | }, |
| | 13108 | .patterns = &.{ |
| | 13109 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 13110 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 13111 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 13112 | }, |
| | 13113 | .dst_temps = .{.{ .rc = .sse }}, |
| | 13114 | .each = .{ .once = &.{ |
| | 13115 | .{ ._, .vp_d, .maxu, .dst0y, .src0y, .src1y, ._ }, |
| | 13116 | } }, |
| | 13117 | }, .{ |
| | 13118 | .required_features = .{ .avx2, null, null, null }, |
| | 13119 | .src_constraints = .{ |
| | 13120 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, |
| | 13121 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, |
| | 13122 | .any, |
| | 13123 | }, |
| | 13124 | .patterns = &.{ |
| | 13125 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13126 | }, |
| | 13127 | .extra_temps = .{ |
| | 13128 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13129 | .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, |
| | 13130 | .unused, |
| | 13131 | .unused, |
| | 13132 | .unused, |
| | 13133 | .unused, |
| | 13134 | .unused, |
| | 13135 | .unused, |
| | 13136 | .unused, |
| | 13137 | }, |
| | 13138 | .dst_temps = .{.mem}, |
| | 13139 | .clobbers = .{ .eflags = true }, |
| | 13140 | .each = .{ .once = &.{ |
| | 13141 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13142 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 13143 | .{ ._, .vp_d, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ }, |
| | 13144 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| | 13145 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 13146 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13147 | } }, |
| | 13148 | }, .{ |
| | 13149 | .required_features = .{ .avx, null, null, null }, |
| | 13150 | .src_constraints = .{ |
| | 13151 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 13152 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 13153 | .any, |
| | 13154 | }, |
| | 13155 | .patterns = &.{ |
| | 13156 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13157 | }, |
| | 13158 | .extra_temps = .{ |
| | 13159 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13160 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 13161 | .unused, |
| | 13162 | .unused, |
| | 13163 | .unused, |
| | 13164 | .unused, |
| | 13165 | .unused, |
| | 13166 | .unused, |
| | 13167 | .unused, |
| | 13168 | }, |
| | 13169 | .dst_temps = .{.mem}, |
| | 13170 | .clobbers = .{ .eflags = true }, |
| | 13171 | .each = .{ .once = &.{ |
| | 13172 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13173 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 13174 | .{ ._, .vp_d, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ }, |
| | 13175 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 13176 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 13177 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13178 | } }, |
| | 13179 | }, .{ |
| | 13180 | .required_features = .{ .sse4_1, null, null, null }, |
| | 13181 | .src_constraints = .{ |
| | 13182 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 13183 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 13184 | .any, |
| | 13185 | }, |
| | 13186 | .patterns = &.{ |
| | 13187 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13188 | }, |
| | 13189 | .extra_temps = .{ |
| | 13190 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13191 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 13192 | .unused, |
| | 13193 | .unused, |
| | 13194 | .unused, |
| | 13195 | .unused, |
| | 13196 | .unused, |
| | 13197 | .unused, |
| | 13198 | .unused, |
| | 13199 | }, |
| | 13200 | .dst_temps = .{.mem}, |
| | 13201 | .clobbers = .{ .eflags = true }, |
| | 13202 | .each = .{ .once = &.{ |
| | 13203 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13204 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 13205 | .{ ._, .p_d, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 13206 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 13207 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 13208 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13209 | } }, |
| | 13210 | }, .{ |
| | 13211 | .required_features = .{ .sse2, null, null, null }, |
| | 13212 | .src_constraints = .{ |
| | 13213 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 13214 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 13215 | .any, |
| | 13216 | }, |
| | 13217 | .patterns = &.{ |
| | 13218 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13219 | }, |
| | 13220 | .extra_temps = .{ |
| | 13221 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13222 | .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| | 13223 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 13224 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 13225 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 13226 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 13227 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 13228 | .unused, |
| | 13229 | .unused, |
| | 13230 | }, |
| | 13231 | .dst_temps = .{.mem}, |
| | 13232 | .clobbers = .{ .eflags = true }, |
| | 13233 | .each = .{ .once = &.{ |
| | 13234 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 13235 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| | 13236 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13237 | .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 13238 | .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 13239 | .{ ._, ._dqa, .mov, .tmp5x, .tmp3x, ._, ._ }, |
| | 13240 | .{ ._, ._dqa, .mov, .tmp6x, .tmp4x, ._, ._ }, |
| | 13241 | .{ ._, .p_, .xor, .tmp5x, .tmp2x, ._, ._ }, |
| | 13242 | .{ ._, .p_, .xor, .tmp6x, .tmp2x, ._, ._ }, |
| | 13243 | .{ ._, .p_d, .cmpgt, .tmp5x, .tmp6x, ._, ._ }, |
| | 13244 | .{ ._, .p_, .@"and", .tmp3x, .tmp5x, ._, ._ }, |
| | 13245 | .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ }, |
| | 13246 | .{ ._, .p_, .@"or", .tmp3x, .tmp5x, ._, ._ }, |
| | 13247 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| | 13248 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 13249 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13250 | } }, |
| | 13251 | }, .{ |
| | 13252 | .required_features = .{ .cmov, null, null, null }, |
| | 13253 | .src_constraints = .{ |
| | 13254 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| | 13255 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| | 13256 | .any, |
| | 13257 | }, |
| | 13258 | .patterns = &.{ |
| | 13259 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13260 | }, |
| | 13261 | .extra_temps = .{ |
| | 13262 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13263 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 13264 | .unused, |
| | 13265 | .unused, |
| | 13266 | .unused, |
| | 13267 | .unused, |
| | 13268 | .unused, |
| | 13269 | .unused, |
| | 13270 | .unused, |
| | 13271 | }, |
| | 13272 | .dst_temps = .{.mem}, |
| | 13273 | .clobbers = .{ .eflags = true }, |
| | 13274 | .each = .{ .once = &.{ |
| | 13275 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13276 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, |
| | 13277 | .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, |
| | 13278 | .{ ._, ._b, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, |
| | 13279 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ }, |
| | 13280 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 13281 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13282 | } }, |
| | 13283 | }, .{ |
| | 13284 | .src_constraints = .{ |
| | 13285 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| | 13286 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| | 13287 | .any, |
| | 13288 | }, |
| | 13289 | .patterns = &.{ |
| | 13290 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13291 | }, |
| | 13292 | .extra_temps = .{ |
| | 13293 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13294 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 13295 | .unused, |
| | 13296 | .unused, |
| | 13297 | .unused, |
| | 13298 | .unused, |
| | 13299 | .unused, |
| | 13300 | .unused, |
| | 13301 | .unused, |
| | 13302 | }, |
| | 13303 | .dst_temps = .{.mem}, |
| | 13304 | .clobbers = .{ .eflags = true }, |
| | 13305 | .each = .{ .once = &.{ |
| | 13306 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13307 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, |
| | 13308 | .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, |
| | 13309 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, |
| | 13310 | .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, |
| | 13311 | .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ }, |
| | 13312 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 13313 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13314 | } }, |
| | 13315 | }, .{ |
| | 13316 | .required_features = .{ .avx, null, null, null }, |
| | 13317 | .src_constraints = .{ |
| | 13318 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| | 13319 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| | 13320 | .any, |
| | 13321 | }, |
| | 13322 | .patterns = &.{ |
| | 13323 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 13324 | }, |
| | 13325 | .dst_temps = .{.{ .rc = .sse }}, |
| | 13326 | .each = .{ .once = &.{ |
| | 13327 | .{ ._, .vp_q, .cmpgt, .dst0x, .src1x, .src0x, ._ }, |
| | 13328 | .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x }, |
| | 13329 | } }, |
| | 13330 | }, .{ |
| | 13331 | .required_features = .{ .sse4_2, null, null, null }, |
| | 13332 | .src_constraints = .{ |
| | 13333 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| | 13334 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| | 13335 | .any, |
| | 13336 | }, |
| | 13337 | .patterns = &.{ |
| | 13338 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 13339 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 13340 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 13341 | }, |
| | 13342 | .extra_temps = .{ |
| | 13343 | .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, |
| | 13344 | .unused, |
| | 13345 | .unused, |
| | 13346 | .unused, |
| | 13347 | .unused, |
| | 13348 | .unused, |
| | 13349 | .unused, |
| | 13350 | .unused, |
| | 13351 | .unused, |
| | 13352 | }, |
| | 13353 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 13354 | .each = .{ .once = &.{ |
| | 13355 | .{ ._, ._dqa, .mov, .tmp0x, .src1x, ._, ._ }, |
| | 13356 | .{ ._, .p_q, .cmpgt, .tmp0x, .src0x, ._, ._ }, |
| | 13357 | .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp0x, ._ }, |
| | 13358 | } }, |
| | 13359 | }, .{ |
| | 13360 | .required_features = .{ .avx2, null, null, null }, |
| | 13361 | .src_constraints = .{ |
| | 13362 | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| | 13363 | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| | 13364 | .any, |
| | 13365 | }, |
| | 13366 | .patterns = &.{ |
| | 13367 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 13368 | }, |
| | 13369 | .dst_temps = .{.{ .rc = .sse }}, |
| | 13370 | .each = .{ .once = &.{ |
| | 13371 | .{ ._, .vp_q, .cmpgt, .dst0y, .src1y, .src0y, ._ }, |
| | 13372 | .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y }, |
| | 13373 | } }, |
| | 13374 | }, .{ |
| | 13375 | .required_features = .{ .avx2, null, null, null }, |
| | 13376 | .src_constraints = .{ |
| | 13377 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| | 13378 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| | 13379 | .any, |
| | 13380 | }, |
| | 13381 | .patterns = &.{ |
| | 13382 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13383 | }, |
| | 13384 | .extra_temps = .{ |
| | 13385 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13386 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| | 13387 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| | 13388 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| | 13389 | .unused, |
| | 13390 | .unused, |
| | 13391 | .unused, |
| | 13392 | .unused, |
| | 13393 | .unused, |
| | 13394 | }, |
| | 13395 | .dst_temps = .{.mem}, |
| | 13396 | .clobbers = .{ .eflags = true }, |
| | 13397 | .each = .{ .once = &.{ |
| | 13398 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13399 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 13400 | .{ ._, .v_dqa, .mov, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, |
| | 13401 | .{ ._, .vp_q, .cmpgt, .tmp3y, .tmp2y, .tmp1y, ._ }, |
| | 13402 | .{ ._, .vp_b, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, |
| | 13403 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| | 13404 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 13405 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13406 | } }, |
| | 13407 | }, .{ |
| | 13408 | .required_features = .{ .avx, null, null, null }, |
| | 13409 | .src_constraints = .{ |
| | 13410 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| | 13411 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| | 13412 | .any, |
| | 13413 | }, |
| | 13414 | .patterns = &.{ |
| | 13415 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13416 | }, |
| | 13417 | .extra_temps = .{ |
| | 13418 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13419 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 13420 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 13421 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 13422 | .unused, |
| | 13423 | .unused, |
| | 13424 | .unused, |
| | 13425 | .unused, |
| | 13426 | .unused, |
| | 13427 | }, |
| | 13428 | .dst_temps = .{.mem}, |
| | 13429 | .clobbers = .{ .eflags = true }, |
| | 13430 | .each = .{ .once = &.{ |
| | 13431 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13432 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 13433 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 13434 | .{ ._, .vp_q, .cmpgt, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| | 13435 | .{ ._, .vp_b, .blendv, .tmp1x, .tmp1x, .tmp2x, .tmp3x }, |
| | 13436 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 13437 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 13438 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13439 | } }, |
| | 13440 | }, .{ |
| | 13441 | .required_features = .{ .sse4_2, null, null, null }, |
| | 13442 | .src_constraints = .{ |
| | 13443 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| | 13444 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| | 13445 | .any, |
| | 13446 | }, |
| | 13447 | .patterns = &.{ |
| | 13448 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13449 | }, |
| | 13450 | .extra_temps = .{ |
| | 13451 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13452 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 13453 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 13454 | .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, |
| | 13455 | .unused, |
| | 13456 | .unused, |
| | 13457 | .unused, |
| | 13458 | .unused, |
| | 13459 | .unused, |
| | 13460 | }, |
| | 13461 | .dst_temps = .{.mem}, |
| | 13462 | .clobbers = .{ .eflags = true }, |
| | 13463 | .each = .{ .once = &.{ |
| | 13464 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13465 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 13466 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 13467 | .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, |
| | 13468 | .{ ._, .p_q, .cmpgt, .tmp3x, .tmp1x, ._, ._ }, |
| | 13469 | .{ ._, .p_b, .blendv, .tmp1x, .tmp2x, .tmp3x, ._ }, |
| | 13470 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 13471 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 13472 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13473 | } }, |
| | 13474 | }, .{ |
| | 13475 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 13476 | .src_constraints = .{ |
| | 13477 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, |
| | 13478 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, |
| | 13479 | .any, |
| | 13480 | }, |
| | 13481 | .patterns = &.{ |
| | 13482 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13483 | }, |
| | 13484 | .extra_temps = .{ |
| | 13485 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13486 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| | 13487 | .unused, |
| | 13488 | .unused, |
| | 13489 | .unused, |
| | 13490 | .unused, |
| | 13491 | .unused, |
| | 13492 | .unused, |
| | 13493 | .unused, |
| | 13494 | }, |
| | 13495 | .dst_temps = .{.mem}, |
| | 13496 | .clobbers = .{ .eflags = true }, |
| | 13497 | .each = .{ .once = &.{ |
| | 13498 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13499 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 13500 | .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13501 | .{ ._, ._l, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13502 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| | 13503 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 13504 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13505 | } }, |
| | 13506 | }, .{ |
| | 13507 | .required_features = .{ .@"64bit", null, null, null }, |
| | 13508 | .src_constraints = .{ |
| | 13509 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, |
| | 13510 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, |
| | 13511 | .any, |
| | 13512 | }, |
| | 13513 | .patterns = &.{ |
| | 13514 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13515 | }, |
| | 13516 | .extra_temps = .{ |
| | 13517 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13518 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| | 13519 | .unused, |
| | 13520 | .unused, |
| | 13521 | .unused, |
| | 13522 | .unused, |
| | 13523 | .unused, |
| | 13524 | .unused, |
| | 13525 | .unused, |
| | 13526 | }, |
| | 13527 | .dst_temps = .{.mem}, |
| | 13528 | .clobbers = .{ .eflags = true }, |
| | 13529 | .each = .{ .once = &.{ |
| | 13530 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13531 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 13532 | .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13533 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, |
| | 13534 | .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13535 | .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| | 13536 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 13537 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13538 | } }, |
| | 13539 | }, .{ |
| | 13540 | .required_features = .{ .avx, null, null, null }, |
| | 13541 | .src_constraints = .{ |
| | 13542 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| | 13543 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| | 13544 | .any, |
| | 13545 | }, |
| | 13546 | .patterns = &.{ |
| | 13547 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 13548 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 13549 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 13550 | }, |
| | 13551 | .extra_temps = .{ |
| | 13552 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 13553 | .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } }, |
| | 13554 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 13555 | .unused, |
| | 13556 | .unused, |
| | 13557 | .unused, |
| | 13558 | .unused, |
| | 13559 | .unused, |
| | 13560 | .unused, |
| | 13561 | }, |
| | 13562 | .dst_temps = .{.{ .rc = .sse }}, |
| | 13563 | .each = .{ .once = &.{ |
| | 13564 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 13565 | .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, |
| | 13566 | .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ }, |
| | 13567 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ }, |
| | 13568 | .{ ._, .vp_q, .cmpgt, .dst0x, .tmp2x, .dst0x, ._ }, |
| | 13569 | .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x }, |
| | 13570 | } }, |
| | 13571 | }, .{ |
| | 13572 | .required_features = .{ .sse4_2, null, null, null }, |
| | 13573 | .src_constraints = .{ |
| | 13574 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| | 13575 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| | 13576 | .any, |
| | 13577 | }, |
| | 13578 | .patterns = &.{ |
| | 13579 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 13580 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 13581 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 13582 | }, |
| | 13583 | .extra_temps = .{ |
| | 13584 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 13585 | .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } }, |
| | 13586 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 13587 | .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } }, |
| | 13588 | .unused, |
| | 13589 | .unused, |
| | 13590 | .unused, |
| | 13591 | .unused, |
| | 13592 | .unused, |
| | 13593 | }, |
| | 13594 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 13595 | .each = .{ .once = &.{ |
| | 13596 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 13597 | .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, |
| | 13598 | .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, |
| | 13599 | .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ }, |
| | 13600 | .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ }, |
| | 13601 | .{ ._, .p_q, .cmpgt, .tmp3x, .tmp2x, ._, ._ }, |
| | 13602 | .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp3x, ._ }, |
| | 13603 | } }, |
| | 13604 | }, .{ |
| | 13605 | .required_features = .{ .avx2, null, null, null }, |
| | 13606 | .src_constraints = .{ |
| | 13607 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| | 13608 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| | 13609 | .any, |
| | 13610 | }, |
| | 13611 | .patterns = &.{ |
| | 13612 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 13613 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 13614 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 13615 | }, |
| | 13616 | .extra_temps = .{ |
| | 13617 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 13618 | .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } }, |
| | 13619 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| | 13620 | .unused, |
| | 13621 | .unused, |
| | 13622 | .unused, |
| | 13623 | .unused, |
| | 13624 | .unused, |
| | 13625 | .unused, |
| | 13626 | }, |
| | 13627 | .dst_temps = .{.{ .rc = .sse }}, |
| | 13628 | .each = .{ .once = &.{ |
| | 13629 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 13630 | .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, |
| | 13631 | .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ }, |
| | 13632 | .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ }, |
| | 13633 | .{ ._, .vp_q, .cmpgt, .dst0y, .tmp2y, .dst0y, ._ }, |
| | 13634 | .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y }, |
| | 13635 | } }, |
| | 13636 | }, .{ |
| | 13637 | .required_features = .{ .avx2, null, null, null }, |
| | 13638 | .src_constraints = .{ |
| | 13639 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| | 13640 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| | 13641 | .any, |
| | 13642 | }, |
| | 13643 | .patterns = &.{ |
| | 13644 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13645 | }, |
| | 13646 | .extra_temps = .{ |
| | 13647 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13648 | .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } }, |
| | 13649 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| | 13650 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| | 13651 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| | 13652 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| | 13653 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| | 13654 | .unused, |
| | 13655 | .unused, |
| | 13656 | }, |
| | 13657 | .dst_temps = .{.mem}, |
| | 13658 | .clobbers = .{ .eflags = true }, |
| | 13659 | .each = .{ .once = &.{ |
| | 13660 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 13661 | .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, |
| | 13662 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13663 | .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 13664 | .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, |
| | 13665 | .{ ._, .vp_, .xor, .tmp5y, .tmp3y, .tmp2y, ._ }, |
| | 13666 | .{ ._, .vp_, .xor, .tmp6y, .tmp4y, .tmp2y, ._ }, |
| | 13667 | .{ ._, .vp_q, .cmpgt, .tmp5y, .tmp6y, .tmp5y, ._ }, |
| | 13668 | .{ ._, .vp_b, .blendv, .tmp3y, .tmp3y, .tmp4y, .tmp5y }, |
| | 13669 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| | 13670 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 13671 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13672 | } }, |
| | 13673 | }, .{ |
| | 13674 | .required_features = .{ .avx, null, null, null }, |
| | 13675 | .src_constraints = .{ |
| | 13676 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| | 13677 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| | 13678 | .any, |
| | 13679 | }, |
| | 13680 | .patterns = &.{ |
| | 13681 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13682 | }, |
| | 13683 | .extra_temps = .{ |
| | 13684 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13685 | .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } }, |
| | 13686 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 13687 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 13688 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 13689 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 13690 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 13691 | .unused, |
| | 13692 | .unused, |
| | 13693 | }, |
| | 13694 | .dst_temps = .{.mem}, |
| | 13695 | .clobbers = .{ .eflags = true }, |
| | 13696 | .each = .{ .once = &.{ |
| | 13697 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 13698 | .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, |
| | 13699 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13700 | .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 13701 | .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 13702 | .{ ._, .vp_, .xor, .tmp5x, .tmp3x, .tmp2x, ._ }, |
| | 13703 | .{ ._, .vp_, .xor, .tmp6x, .tmp4x, .tmp2x, ._ }, |
| | 13704 | .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp6x, .tmp5x, ._ }, |
| | 13705 | .{ ._, .vp_b, .blendv, .tmp3x, .tmp3x, .tmp4x, .tmp5x }, |
| | 13706 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| | 13707 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 13708 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13709 | } }, |
| | 13710 | }, .{ |
| | 13711 | .required_features = .{ .sse4_2, null, null, null }, |
| | 13712 | .src_constraints = .{ |
| | 13713 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| | 13714 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| | 13715 | .any, |
| | 13716 | }, |
| | 13717 | .patterns = &.{ |
| | 13718 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13719 | }, |
| | 13720 | .extra_temps = .{ |
| | 13721 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13722 | .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } }, |
| | 13723 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 13724 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 13725 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 13726 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 13727 | .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } }, |
| | 13728 | .unused, |
| | 13729 | .unused, |
| | 13730 | }, |
| | 13731 | .dst_temps = .{.mem}, |
| | 13732 | .clobbers = .{ .eflags = true }, |
| | 13733 | .each = .{ .once = &.{ |
| | 13734 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 13735 | .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, |
| | 13736 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13737 | .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ }, |
| | 13738 | .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ }, |
| | 13739 | .{ ._, ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 13740 | .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 13741 | .{ ._, .p_, .xor, .tmp5x, .tmp3x, ._, ._ }, |
| | 13742 | .{ ._, .p_, .xor, .tmp6x, .tmp4x, ._, ._ }, |
| | 13743 | .{ ._, .p_q, .cmpgt, .tmp6x, .tmp5x, ._, ._ }, |
| | 13744 | .{ ._, .p_b, .blendv, .tmp3x, .tmp4x, .tmp6x, ._ }, |
| | 13745 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| | 13746 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 13747 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13748 | } }, |
| | 13749 | }, .{ |
| | 13750 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 13751 | .src_constraints = .{ |
| | 13752 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| | 13753 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| | 13754 | .any, |
| | 13755 | }, |
| | 13756 | .patterns = &.{ |
| | 13757 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13758 | }, |
| | 13759 | .extra_temps = .{ |
| | 13760 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13761 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 13762 | .unused, |
| | 13763 | .unused, |
| | 13764 | .unused, |
| | 13765 | .unused, |
| | 13766 | .unused, |
| | 13767 | .unused, |
| | 13768 | .unused, |
| | 13769 | }, |
| | 13770 | .dst_temps = .{.mem}, |
| | 13771 | .clobbers = .{ .eflags = true }, |
| | 13772 | .each = .{ .once = &.{ |
| | 13773 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13774 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 13775 | .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13776 | .{ ._, ._b, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13777 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| | 13778 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 13779 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13780 | } }, |
| | 13781 | }, .{ |
| | 13782 | .required_features = .{ .@"64bit", null, null, null }, |
| | 13783 | .src_constraints = .{ |
| | 13784 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| | 13785 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| | 13786 | .any, |
| | 13787 | }, |
| | 13788 | .patterns = &.{ |
| | 13789 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13790 | }, |
| | 13791 | .extra_temps = .{ |
| | 13792 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13793 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 13794 | .unused, |
| | 13795 | .unused, |
| | 13796 | .unused, |
| | 13797 | .unused, |
| | 13798 | .unused, |
| | 13799 | .unused, |
| | 13800 | .unused, |
| | 13801 | }, |
| | 13802 | .dst_temps = .{.mem}, |
| | 13803 | .clobbers = .{ .eflags = true }, |
| | 13804 | .each = .{ .once = &.{ |
| | 13805 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13806 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 13807 | .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13808 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, |
| | 13809 | .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13810 | .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| | 13811 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 13812 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13813 | } }, |
| | 13814 | }, .{ |
| | 13815 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 13816 | .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any }, |
| | 13817 | .patterns = &.{ |
| | 13818 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13819 | }, |
| | 13820 | .extra_temps = .{ |
| | 13821 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13822 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, |
| | 13823 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, |
| | 13824 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| | 13825 | .unused, |
| | 13826 | .unused, |
| | 13827 | .unused, |
| | 13828 | .unused, |
| | 13829 | .unused, |
| | 13830 | }, |
| | 13831 | .dst_temps = .{.mem}, |
| | 13832 | .clobbers = .{ .eflags = true }, |
| | 13833 | .each = .{ .once = &.{ |
| | 13834 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13835 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, |
| | 13836 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 13837 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 13838 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13839 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| | 13840 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| | 13841 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| | 13842 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 13843 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13844 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| | 13845 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| | 13846 | .{ ._, ._l, .cmov, .tmp1p, .tmp2p, ._, ._ }, |
| | 13847 | .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| | 13848 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| | 13849 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 13850 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 13851 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13852 | } }, |
| | 13853 | }, .{ |
| | 13854 | .required_features = .{ .@"64bit", null, null, null }, |
| | 13855 | .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any }, |
| | 13856 | .patterns = &.{ |
| | 13857 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13858 | }, |
| | 13859 | .extra_temps = .{ |
| | 13860 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13861 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, |
| | 13862 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, |
| | 13863 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| | 13864 | .unused, |
| | 13865 | .unused, |
| | 13866 | .unused, |
| | 13867 | .unused, |
| | 13868 | .unused, |
| | 13869 | }, |
| | 13870 | .dst_temps = .{.mem}, |
| | 13871 | .clobbers = .{ .eflags = true }, |
| | 13872 | .each = .{ .once = &.{ |
| | 13873 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13874 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, |
| | 13875 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 13876 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 13877 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13878 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| | 13879 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| | 13880 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| | 13881 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 13882 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13883 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| | 13884 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, |
| | 13885 | .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| | 13886 | .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| | 13887 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| | 13888 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 13889 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 13890 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 13891 | } }, |
| | 13892 | }, .{ |
| | 13893 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 13894 | .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any }, |
| | 13895 | .patterns = &.{ |
| | 13896 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13897 | }, |
| | 13898 | .extra_temps = .{ |
| | 13899 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13900 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, |
| | 13901 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, |
| | 13902 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| | 13903 | .unused, |
| | 13904 | .unused, |
| | 13905 | .unused, |
| | 13906 | .unused, |
| | 13907 | .unused, |
| | 13908 | }, |
| | 13909 | .dst_temps = .{.mem}, |
| | 13910 | .clobbers = .{ .eflags = true }, |
| | 13911 | .each = .{ .once = &.{ |
| | 13912 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13913 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| | 13914 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 13915 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 13916 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13917 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| | 13918 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| | 13919 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| | 13920 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| | 13921 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| | 13922 | .{ ._, ._b, .cmov, .tmp1p, .tmp2p, ._, ._ }, |
| | 13923 | .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| | 13924 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| | 13925 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 13926 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, |
| | 13927 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 13928 | } }, |
| | 13929 | }, .{ |
| | 13930 | .required_features = .{ .@"64bit", null, null, null }, |
| | 13931 | .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any }, |
| | 13932 | .patterns = &.{ |
| | 13933 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 13934 | }, |
| | 13935 | .extra_temps = .{ |
| | 13936 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 13937 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, |
| | 13938 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, |
| | 13939 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| | 13940 | .unused, |
| | 13941 | .unused, |
| | 13942 | .unused, |
| | 13943 | .unused, |
| | 13944 | .unused, |
| | 13945 | }, |
| | 13946 | .dst_temps = .{.mem}, |
| | 13947 | .clobbers = .{ .eflags = true }, |
| | 13948 | .each = .{ .once = &.{ |
| | 13949 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 13950 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| | 13951 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 13952 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 13953 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 13954 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| | 13955 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| | 13956 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| | 13957 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| | 13958 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, |
| | 13959 | .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| | 13960 | .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| | 13961 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| | 13962 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 13963 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, |
| | 13964 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 13965 | } }, |
| | 13966 | }, .{ |
| | 13967 | .required_features = .{ .f16c, null, null, null }, |
| | 13968 | .src_constraints = .{ |
| | 13969 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 13970 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 13971 | .any, |
| | 13972 | }, |
| | 13973 | .patterns = &.{ |
| | 13974 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 13975 | }, |
| | 13976 | .extra_temps = .{ |
| | 13977 | .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| | 13978 | .{ .type = .f32, .kind = .{ .rc = .sse } }, |
| | 13979 | .unused, |
| | 13980 | .unused, |
| | 13981 | .unused, |
| | 13982 | .unused, |
| | 13983 | .unused, |
| | 13984 | .unused, |
| | 13985 | .unused, |
| | 13986 | }, |
| | 13987 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 13988 | .each = .{ .once = &.{ |
| | 13989 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 13990 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| | 13991 | .{ ._, .v_ss, .cmp, .tmp1x, .dst0d, .dst0x, .vp(.unord) }, |
| | 13992 | .{ ._, .v_ss, .max, .dst0x, .tmp0d, .dst0x, ._ }, |
| | 13993 | .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x }, |
| | 13994 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| | 13995 | } }, |
| | 13996 | }, .{ |
| | 13997 | .required_features = .{ .sse, null, null, null }, |
| | 13998 | .src_constraints = .{ |
| | 13999 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 14000 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 14001 | .any, |
| | 14002 | }, |
| | 14003 | .patterns = &.{ |
| | 14004 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 14005 | }, |
| | 14006 | .call_frame = .{ .alignment = .@"16" }, |
| | 14007 | .extra_temps = .{ |
| | 14008 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } }, |
| | 14009 | .unused, |
| | 14010 | .unused, |
| | 14011 | .unused, |
| | 14012 | .unused, |
| | 14013 | .unused, |
| | 14014 | .unused, |
| | 14015 | .unused, |
| | 14016 | .unused, |
| | 14017 | }, |
| | 14018 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 14019 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 14020 | .each = .{ .once = &.{ |
| | 14021 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 14022 | } }, |
| | 14023 | }, .{ |
| | 14024 | .required_features = .{ .f16c, null, null, null }, |
| | 14025 | .src_constraints = .{ |
| | 14026 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 14027 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 14028 | .any, |
| | 14029 | }, |
| | 14030 | .patterns = &.{ |
| | 14031 | .{ .src = .{ .mem, .mem, .none } }, |
| | 14032 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 14033 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 14034 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 14035 | }, |
| | 14036 | .extra_temps = .{ |
| | 14037 | .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| | 14038 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 14039 | .unused, |
| | 14040 | .unused, |
| | 14041 | .unused, |
| | 14042 | .unused, |
| | 14043 | .unused, |
| | 14044 | .unused, |
| | 14045 | .unused, |
| | 14046 | }, |
| | 14047 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 14048 | .each = .{ .once = &.{ |
| | 14049 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 14050 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| | 14051 | .{ ._, .v_ps, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) }, |
| | 14052 | .{ ._, .v_ps, .max, .dst0x, .tmp0x, .dst0x, ._ }, |
| | 14053 | .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x }, |
| | 14054 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| | 14055 | } }, |
| | 14056 | }, .{ |
| | 14057 | .required_features = .{ .f16c, null, null, null }, |
| | 14058 | .src_constraints = .{ |
| | 14059 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 14060 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 14061 | .any, |
| | 14062 | }, |
| | 14063 | .patterns = &.{ |
| | 14064 | .{ .src = .{ .mem, .mem, .none } }, |
| | 14065 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 14066 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 14067 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 14068 | }, |
| | 14069 | .extra_temps = .{ |
| | 14070 | .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| | 14071 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 14072 | .unused, |
| | 14073 | .unused, |
| | 14074 | .unused, |
| | 14075 | .unused, |
| | 14076 | .unused, |
| | 14077 | .unused, |
| | 14078 | .unused, |
| | 14079 | }, |
| | 14080 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 14081 | .each = .{ .once = &.{ |
| | 14082 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| | 14083 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, |
| | 14084 | .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) }, |
| | 14085 | .{ ._, .v_ps, .max, .dst0y, .tmp0y, .dst0y, ._ }, |
| | 14086 | .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y }, |
| | 14087 | .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, |
| | 14088 | } }, |
| | 14089 | }, .{ |
| | 14090 | .required_features = .{ .f16c, null, null, null }, |
| | 14091 | .src_constraints = .{ |
| | 14092 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 14093 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 14094 | .any, |
| | 14095 | }, |
| | 14096 | .patterns = &.{ |
| | 14097 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 14098 | }, |
| | 14099 | .extra_temps = .{ |
| | 14100 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 14101 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 14102 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 14103 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 14104 | .unused, |
| | 14105 | .unused, |
| | 14106 | .unused, |
| | 14107 | .unused, |
| | 14108 | .unused, |
| | 14109 | }, |
| | 14110 | .dst_temps = .{.mem}, |
| | 14111 | .clobbers = .{ .eflags = true }, |
| | 14112 | .each = .{ .once = &.{ |
| | 14113 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 14114 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 14115 | .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 14116 | .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, |
| | 14117 | .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ }, |
| | 14118 | .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, |
| | 14119 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_size), .tmp1y, .rm(.{}), ._ }, |
| | 14120 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 14121 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 14122 | } }, |
| | 14123 | }, .{ |
| | 14124 | .required_features = .{ .avx, null, null, null }, |
| | 14125 | .src_constraints = .{ |
| | 14126 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 14127 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 14128 | .any, |
| | 14129 | }, |
| | 14130 | .patterns = &.{ |
| | 14131 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 14132 | }, |
| | 14133 | .call_frame = .{ .alignment = .@"16" }, |
| | 14134 | .extra_temps = .{ |
| | 14135 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 14136 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 14137 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 14138 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } }, |
| | 14139 | .unused, |
| | 14140 | .unused, |
| | 14141 | .unused, |
| | 14142 | .unused, |
| | 14143 | .unused, |
| | 14144 | }, |
| | 14145 | .dst_temps = .{.mem}, |
| | 14146 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 14147 | .each = .{ .once = &.{ |
| | 14148 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 14149 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 14150 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) }, |
| | 14151 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) }, |
| | 14152 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 14153 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, |
| | 14154 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 14155 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 14156 | } }, |
| | 14157 | }, .{ |
| | 14158 | .required_features = .{ .sse4_1, null, null, null }, |
| | 14159 | .src_constraints = .{ |
| | 14160 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 14161 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 14162 | .any, |
| | 14163 | }, |
| | 14164 | .patterns = &.{ |
| | 14165 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 14166 | }, |
| | 14167 | .call_frame = .{ .alignment = .@"16" }, |
| | 14168 | .extra_temps = .{ |
| | 14169 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 14170 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 14171 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 14172 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } }, |
| | 14173 | .unused, |
| | 14174 | .unused, |
| | 14175 | .unused, |
| | 14176 | .unused, |
| | 14177 | .unused, |
| | 14178 | }, |
| | 14179 | .dst_temps = .{.mem}, |
| | 14180 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 14181 | .each = .{ .once = &.{ |
| | 14182 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 14183 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 14184 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 14185 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, |
| | 14186 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ }, |
| | 14187 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 14188 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, |
| | 14189 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 14190 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 14191 | } }, |
| | 14192 | }, .{ |
| | 14193 | .required_features = .{ .sse2, null, null, null }, |
| | 14194 | .src_constraints = .{ |
| | 14195 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 14196 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 14197 | .any, |
| | 14198 | }, |
| | 14199 | .patterns = &.{ |
| | 14200 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 14201 | }, |
| | 14202 | .call_frame = .{ .alignment = .@"16" }, |
| | 14203 | .extra_temps = .{ |
| | 14204 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 14205 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 14206 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 14207 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } }, |
| | 14208 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 14209 | .unused, |
| | 14210 | .unused, |
| | 14211 | .unused, |
| | 14212 | .unused, |
| | 14213 | }, |
| | 14214 | .dst_temps = .{.mem}, |
| | 14215 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 14216 | .each = .{ .once = &.{ |
| | 14217 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 14218 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 14219 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 14220 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, |
| | 14221 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ }, |
| | 14222 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 14223 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, |
| | 14224 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ }, |
| | 14225 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 14226 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 14227 | } }, |
| | 14228 | }, .{ |
| | 14229 | .required_features = .{ .sse, null, null, null }, |
| | 14230 | .src_constraints = .{ |
| | 14231 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 14232 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 14233 | .any, |
| | 14234 | }, |
| | 14235 | .patterns = &.{ |
| | 14236 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 14237 | }, |
| | 14238 | .call_frame = .{ .alignment = .@"16" }, |
| | 14239 | .extra_temps = .{ |
| | 14240 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 14241 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 14242 | .{ .type = .f32, .kind = .mem }, |
| | 14243 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 14244 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 14245 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } }, |
| | 14246 | .unused, |
| | 14247 | .unused, |
| | 14248 | .unused, |
| | 14249 | }, |
| | 14250 | .dst_temps = .{.mem}, |
| | 14251 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 14252 | .each = .{ .once = &.{ |
| | 14253 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 14254 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, |
| | 14255 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 14256 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 14257 | .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_size), ._, ._ }, |
| | 14258 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 14259 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| | 14260 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 14261 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| | 14262 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 14263 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, |
| | 14264 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 14265 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 14266 | } }, |
| | 14267 | }, .{ |
| | 14268 | .required_features = .{ .avx, null, null, null }, |
| | 14269 | .src_constraints = .{ |
| | 14270 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 14271 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 14272 | .any, |
| | 14273 | }, |
| | 14274 | .patterns = &.{ |
| | 14275 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 14276 | }, |
| | 14277 | .extra_temps = .{ |
| | 14278 | .{ .type = .f32, .kind = .{ .rc = .sse } }, |
| | 14279 | .unused, |
| | 14280 | .unused, |
| | 14281 | .unused, |
| | 14282 | .unused, |
| | 14283 | .unused, |
| | 14284 | .unused, |
| | 14285 | .unused, |
| | 14286 | .unused, |
| | 14287 | }, |
| | 14288 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 14289 | .each = .{ .once = &.{ |
| | 14290 | .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0d, .vp(.unord) }, |
| | 14291 | .{ ._, .v_ss, .max, .dst0x, .src1x, .src0d, ._ }, |
| | 14292 | .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, |
| | 14293 | } }, |
| | 14294 | }, .{ |
| | 14295 | .required_features = .{ .sse4_1, null, null, null }, |
| | 14296 | .src_constraints = .{ |
| | 14297 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 14298 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 14299 | .any, |
| | 14300 | }, |
| | 14301 | .patterns = &.{ |
| | 14302 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, |
| | 14303 | }, |
| | 14304 | .dst_temps = .{.{ .rc = .sse }}, |
| | 14305 | .each = .{ .once = &.{ |
| | 14306 | .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ }, |
| | 14307 | .{ ._, ._ss, .max, .dst0x, .src0d, ._, ._ }, |
| | 14308 | .{ ._, ._ss, .cmp, .src0x, .src0d, .sp(.unord), ._ }, |
| | 14309 | .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ }, |
| | 14310 | } }, |
| | 14311 | }, .{ |
| | 14312 | .required_features = .{ .sse, null, null, null }, |
| | 14313 | .src_constraints = .{ |
| | 14314 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 14315 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 14316 | .any, |
| | 14317 | }, |
| | 14318 | .patterns = &.{ |
| | 14319 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 14320 | }, |
| | 14321 | .extra_temps = .{ |
| | 14322 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 14323 | .unused, |
| | 14324 | .unused, |
| | 14325 | .unused, |
| | 14326 | .unused, |
| | 14327 | .unused, |
| | 14328 | .unused, |
| | 14329 | .unused, |
| | 14330 | .unused, |
| | 14331 | }, |
| | 14332 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 14333 | .each = .{ .once = &.{ |
| | 14334 | .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ }, |
| | 14335 | .{ ._, ._ss, .max, .tmp0x, .src0d, ._, ._ }, |
| | 14336 | .{ ._, ._ss, .cmp, .dst0x, .src0d, .sp(.ord), ._ }, |
| | 14337 | .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ }, |
| | 14338 | .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ }, |
| | 14339 | .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, |
| | 14340 | } }, |
| | 14341 | }, .{ |
| | 14342 | .required_features = .{ .avx, null, null, null }, |
| | 14343 | .src_constraints = .{ |
| | 14344 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 14345 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 14346 | .any, |
| | 14347 | }, |
| | 14348 | .patterns = &.{ |
| | 14349 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 14350 | }, |
| | 14351 | .extra_temps = .{ |
| | 14352 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 14353 | .unused, |
| | 14354 | .unused, |
| | 14355 | .unused, |
| | 14356 | .unused, |
| | 14357 | .unused, |
| | 14358 | .unused, |
| | 14359 | .unused, |
| | 14360 | .unused, |
| | 14361 | }, |
| | 14362 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 14363 | .each = .{ .once = &.{ |
| | 14364 | .{ ._, .v_ps, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) }, |
| | 14365 | .{ ._, .v_ps, .max, .dst0x, .src1x, .src0x, ._ }, |
| | 14366 | .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, |
| | 14367 | } }, |
| | 14368 | }, .{ |
| | 14369 | .required_features = .{ .sse4_1, null, null, null }, |
| | 14370 | .src_constraints = .{ |
| | 14371 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 14372 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 14373 | .any, |
| | 14374 | }, |
| | 14375 | .patterns = &.{ |
| | 14376 | .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } }, |
| | 14377 | .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } }, |
| | 14378 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, |
| | 14379 | }, |
| | 14380 | .dst_temps = .{.{ .rc = .sse }}, |
| | 14381 | .each = .{ .once = &.{ |
| | 14382 | .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ }, |
| | 14383 | .{ ._, ._ps, .max, .dst0x, .src0x, ._, ._ }, |
| | 14384 | .{ ._, ._ps, .cmp, .src0x, .src0x, .sp(.unord), ._ }, |
| | 14385 | .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ }, |
| | 14386 | } }, |
| | 14387 | }, .{ |
| | 14388 | .required_features = .{ .sse, null, null, null }, |
| | 14389 | .src_constraints = .{ |
| | 14390 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 14391 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 14392 | .any, |
| | 14393 | }, |
| | 14394 | .patterns = &.{ |
| | 14395 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 14396 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 14397 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 14398 | }, |
| | 14399 | .extra_temps = .{ |
| | 14400 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 14401 | .unused, |
| | 14402 | .unused, |
| | 14403 | .unused, |
| | 14404 | .unused, |
| | 14405 | .unused, |
| | 14406 | .unused, |
| | 14407 | .unused, |
| | 14408 | .unused, |
| | 14409 | }, |
| | 14410 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 14411 | .each = .{ .once = &.{ |
| | 14412 | .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ }, |
| | 14413 | .{ ._, ._ps, .max, .tmp0x, .src0x, ._, ._ }, |
| | 14414 | .{ ._, ._ps, .cmp, .dst0x, .src0x, .sp(.ord), ._ }, |
| | 14415 | .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ }, |
| | 14416 | .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ }, |
| | 14417 | .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, |
| | 14418 | } }, |
| | 14419 | }, .{ |
| | 14420 | .required_features = .{ .avx, null, null, null }, |
| | 14421 | .src_constraints = .{ |
| | 14422 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 14423 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 14424 | .any, |
| | 14425 | }, |
| | 14426 | .patterns = &.{ |
| | 14427 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 14428 | }, |
| | 14429 | .extra_temps = .{ |
| | 14430 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 14431 | .unused, |
| | 14432 | .unused, |
| | 14433 | .unused, |
| | 14434 | .unused, |
| | 14435 | .unused, |
| | 14436 | .unused, |
| | 14437 | .unused, |
| | 14438 | .unused, |
| | 14439 | }, |
| | 14440 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 14441 | .each = .{ .once = &.{ |
| | 14442 | .{ ._, .v_ps, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) }, |
| | 14443 | .{ ._, .v_ps, .max, .dst0y, .src1y, .src0y, ._ }, |
| | 14444 | .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .src1y, .tmp0y }, |
| | 14445 | } }, |
| | 14446 | }, .{ |
| | 14447 | .required_features = .{ .avx, null, null, null }, |
| | 14448 | .src_constraints = .{ |
| | 14449 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 14450 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 14451 | .any, |
| | 14452 | }, |
| | 14453 | .patterns = &.{ |
| | 14454 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 14455 | }, |
| | 14456 | .extra_temps = .{ |
| | 14457 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 14458 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 14459 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 14460 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 14461 | .unused, |
| | 14462 | .unused, |
| | 14463 | .unused, |
| | 14464 | .unused, |
| | 14465 | .unused, |
| | 14466 | }, |
| | 14467 | .dst_temps = .{.mem}, |
| | 14468 | .clobbers = .{ .eflags = true }, |
| | 14469 | .each = .{ .once = &.{ |
| | 14470 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 14471 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 14472 | .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, |
| | 14473 | .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, |
| | 14474 | .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ }, |
| | 14475 | .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, |
| | 14476 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| | 14477 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 14478 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 14479 | } }, |
| | 14480 | }, .{ |
| | 14481 | .required_features = .{ .sse4_1, null, null, null }, |
| | 14482 | .src_constraints = .{ |
| | 14483 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 14484 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 14485 | .any, |
| | 14486 | }, |
| | 14487 | .patterns = &.{ |
| | 14488 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 14489 | }, |
| | 14490 | .extra_temps = .{ |
| | 14491 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 14492 | .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } }, |
| | 14493 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 14494 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 14495 | .unused, |
| | 14496 | .unused, |
| | 14497 | .unused, |
| | 14498 | .unused, |
| | 14499 | .unused, |
| | 14500 | }, |
| | 14501 | .dst_temps = .{.mem}, |
| | 14502 | .clobbers = .{ .eflags = true }, |
| | 14503 | .each = .{ .once = &.{ |
| | 14504 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 14505 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 14506 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 14507 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| | 14508 | .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ }, |
| | 14509 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, |
| | 14510 | .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| | 14511 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| | 14512 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 14513 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 14514 | } }, |
| | 14515 | }, .{ |
| | 14516 | .required_features = .{ .sse, null, null, null }, |
| | 14517 | .src_constraints = .{ |
| | 14518 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 14519 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 14520 | .any, |
| | 14521 | }, |
| | 14522 | .patterns = &.{ |
| | 14523 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 14524 | }, |
| | 14525 | .extra_temps = .{ |
| | 14526 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 14527 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 14528 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 14529 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 14530 | .unused, |
| | 14531 | .unused, |
| | 14532 | .unused, |
| | 14533 | .unused, |
| | 14534 | .unused, |
| | 14535 | }, |
| | 14536 | .dst_temps = .{.mem}, |
| | 14537 | .clobbers = .{ .eflags = true }, |
| | 14538 | .each = .{ .once = &.{ |
| | 14539 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 14540 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 14541 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 14542 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| | 14543 | .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ }, |
| | 14544 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, |
| | 14545 | .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ }, |
| | 14546 | .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, |
| | 14547 | .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ }, |
| | 14548 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 14549 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 14550 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 14551 | } }, |
| | 14552 | }, .{ |
| | 14553 | .required_features = .{ .avx, null, null, null }, |
| | 14554 | .src_constraints = .{ |
| | 14555 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 14556 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 14557 | .any, |
| | 14558 | }, |
| | 14559 | .patterns = &.{ |
| | 14560 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 14561 | }, |
| | 14562 | .extra_temps = .{ |
| | 14563 | .{ .type = .f64, .kind = .{ .rc = .sse } }, |
| | 14564 | .unused, |
| | 14565 | .unused, |
| | 14566 | .unused, |
| | 14567 | .unused, |
| | 14568 | .unused, |
| | 14569 | .unused, |
| | 14570 | .unused, |
| | 14571 | .unused, |
| | 14572 | }, |
| | 14573 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 14574 | .each = .{ .once = &.{ |
| | 14575 | .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0q, .vp(.unord) }, |
| | 14576 | .{ ._, .v_sd, .max, .dst0x, .src1x, .src0q, ._ }, |
| | 14577 | .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, |
| | 14578 | } }, |
| | 14579 | }, .{ |
| | 14580 | .required_features = .{ .sse4_1, null, null, null }, |
| | 14581 | .src_constraints = .{ |
| | 14582 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 14583 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 14584 | .any, |
| | 14585 | }, |
| | 14586 | .patterns = &.{ |
| | 14587 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, |
| | 14588 | }, |
| | 14589 | .dst_temps = .{.{ .rc = .sse }}, |
| | 14590 | .each = .{ .once = &.{ |
| | 14591 | .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ }, |
| | 14592 | .{ ._, ._sd, .max, .dst0x, .src0q, ._, ._ }, |
| | 14593 | .{ ._, ._sd, .cmp, .src0x, .src0q, .sp(.unord), ._ }, |
| | 14594 | .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ }, |
| | 14595 | } }, |
| | 14596 | }, .{ |
| | 14597 | .required_features = .{ .sse2, null, null, null }, |
| | 14598 | .src_constraints = .{ |
| | 14599 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 14600 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 14601 | .any, |
| | 14602 | }, |
| | 14603 | .patterns = &.{ |
| | 14604 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 14605 | }, |
| | 14606 | .extra_temps = .{ |
| | 14607 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 14608 | .unused, |
| | 14609 | .unused, |
| | 14610 | .unused, |
| | 14611 | .unused, |
| | 14612 | .unused, |
| | 14613 | .unused, |
| | 14614 | .unused, |
| | 14615 | .unused, |
| | 14616 | }, |
| | 14617 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 14618 | .each = .{ .once = &.{ |
| | 14619 | .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ }, |
| | 14620 | .{ ._, ._sd, .max, .tmp0x, .src0q, ._, ._ }, |
| | 14621 | .{ ._, ._sd, .cmp, .dst0x, .src0q, .sp(.ord), ._ }, |
| | 14622 | .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ }, |
| | 14623 | .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ }, |
| | 14624 | .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, |
| | 14625 | } }, |
| | 14626 | }, .{ |
| | 14627 | .required_features = .{ .sse, null, null, null }, |
| | 14628 | .src_constraints = .{ |
| | 14629 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 14630 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 14631 | .any, |
| | 14632 | }, |
| | 14633 | .patterns = &.{ |
| | 14634 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 14635 | }, |
| | 14636 | .call_frame = .{ .alignment = .@"16" }, |
| | 14637 | .extra_temps = .{ |
| | 14638 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } }, |
| | 14639 | .unused, |
| | 14640 | .unused, |
| | 14641 | .unused, |
| | 14642 | .unused, |
| | 14643 | .unused, |
| | 14644 | .unused, |
| | 14645 | .unused, |
| | 14646 | .unused, |
| | 14647 | }, |
| | 14648 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 14649 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 14650 | .each = .{ .once = &.{ |
| | 14651 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 14652 | } }, |
| | 14653 | }, .{ |
| | 14654 | .required_features = .{ .avx, null, null, null }, |
| | 14655 | .src_constraints = .{ |
| | 14656 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 14657 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 14658 | .any, |
| | 14659 | }, |
| | 14660 | .patterns = &.{ |
| | 14661 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 14662 | }, |
| | 14663 | .extra_temps = .{ |
| | 14664 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 14665 | .unused, |
| | 14666 | .unused, |
| | 14667 | .unused, |
| | 14668 | .unused, |
| | 14669 | .unused, |
| | 14670 | .unused, |
| | 14671 | .unused, |
| | 14672 | .unused, |
| | 14673 | }, |
| | 14674 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 14675 | .each = .{ .once = &.{ |
| | 14676 | .{ ._, .v_pd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) }, |
| | 14677 | .{ ._, .v_pd, .max, .dst0x, .src1x, .src0x, ._ }, |
| | 14678 | .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, |
| | 14679 | } }, |
| | 14680 | }, .{ |
| | 14681 | .required_features = .{ .sse4_1, null, null, null }, |
| | 14682 | .src_constraints = .{ |
| | 14683 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 14684 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 14685 | .any, |
| | 14686 | }, |
| | 14687 | .patterns = &.{ |
| | 14688 | .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } }, |
| | 14689 | .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } }, |
| | 14690 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, |
| | 14691 | }, |
| | 14692 | .dst_temps = .{.{ .rc = .sse }}, |
| | 14693 | .each = .{ .once = &.{ |
| | 14694 | .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ }, |
| | 14695 | .{ ._, ._pd, .max, .dst0x, .src0x, ._, ._ }, |
| | 14696 | .{ ._, ._pd, .cmp, .src0x, .src0x, .sp(.unord), ._ }, |
| | 14697 | .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ }, |
| | 14698 | } }, |
| | 14699 | }, .{ |
| | 14700 | .required_features = .{ .sse2, null, null, null }, |
| | 14701 | .src_constraints = .{ |
| | 14702 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 14703 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 14704 | .any, |
| | 14705 | }, |
| | 14706 | .patterns = &.{ |
| | 14707 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 14708 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 14709 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 14710 | }, |
| | 14711 | .extra_temps = .{ |
| | 14712 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 14713 | .unused, |
| | 14714 | .unused, |
| | 14715 | .unused, |
| | 14716 | .unused, |
| | 14717 | .unused, |
| | 14718 | .unused, |
| | 14719 | .unused, |
| | 14720 | .unused, |
| | 14721 | }, |
| | 14722 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 14723 | .each = .{ .once = &.{ |
| | 14724 | .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ }, |
| | 14725 | .{ ._, ._pd, .max, .tmp0x, .src0x, ._, ._ }, |
| | 14726 | .{ ._, ._pd, .cmp, .dst0x, .src0x, .sp(.ord), ._ }, |
| | 14727 | .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ }, |
| | 14728 | .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ }, |
| | 14729 | .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, |
| | 14730 | } }, |
| | 14731 | }, .{ |
| | 14732 | .required_features = .{ .avx, null, null, null }, |
| | 14733 | .src_constraints = .{ |
| | 14734 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 14735 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 14736 | .any, |
| | 14737 | }, |
| | 14738 | .patterns = &.{ |
| | 14739 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 14740 | }, |
| | 14741 | .extra_temps = .{ |
| | 14742 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 14743 | .unused, |
| | 14744 | .unused, |
| | 14745 | .unused, |
| | 14746 | .unused, |
| | 14747 | .unused, |
| | 14748 | .unused, |
| | 14749 | .unused, |
| | 14750 | .unused, |
| | 14751 | }, |
| | 14752 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 14753 | .each = .{ .once = &.{ |
| | 14754 | .{ ._, .v_pd, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) }, |
| | 14755 | .{ ._, .v_pd, .max, .dst0y, .src1y, .src0y, ._ }, |
| | 14756 | .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .src1y, .tmp0y }, |
| | 14757 | } }, |
| | 14758 | }, .{ |
| | 14759 | .required_features = .{ .avx, null, null, null }, |
| | 14760 | .src_constraints = .{ |
| | 14761 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 14762 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 14763 | .any, |
| | 14764 | }, |
| | 14765 | .patterns = &.{ |
| | 14766 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 14767 | }, |
| | 14768 | .extra_temps = .{ |
| | 14769 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 14770 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 14771 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 14772 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 14773 | .unused, |
| | 14774 | .unused, |
| | 14775 | .unused, |
| | 14776 | .unused, |
| | 14777 | .unused, |
| | 14778 | }, |
| | 14779 | .dst_temps = .{.mem}, |
| | 14780 | .clobbers = .{ .eflags = true }, |
| | 14781 | .each = .{ .once = &.{ |
| | 14782 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 14783 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 14784 | .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, |
| | 14785 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, |
| | 14786 | .{ ._, .v_pd, .max, .tmp1y, .tmp2y, .tmp1y, ._ }, |
| | 14787 | .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, |
| | 14788 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| | 14789 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 14790 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 14791 | } }, |
| | 14792 | }, .{ |
| | 14793 | .required_features = .{ .sse4_1, null, null, null }, |
| | 14794 | .src_constraints = .{ |
| | 14795 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 14796 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 14797 | .any, |
| | 14798 | }, |
| | 14799 | .patterns = &.{ |
| | 14800 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 14801 | }, |
| | 14802 | .extra_temps = .{ |
| | 14803 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 14804 | .{ .type = .vector_2_f64, .kind = .{ .reg = .xmm0 } }, |
| | 14805 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 14806 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 14807 | .unused, |
| | 14808 | .unused, |
| | 14809 | .unused, |
| | 14810 | .unused, |
| | 14811 | .unused, |
| | 14812 | }, |
| | 14813 | .dst_temps = .{.mem}, |
| | 14814 | .clobbers = .{ .eflags = true }, |
| | 14815 | .each = .{ .once = &.{ |
| | 14816 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 14817 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 14818 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 14819 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| | 14820 | .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ }, |
| | 14821 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, |
| | 14822 | .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| | 14823 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| | 14824 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 14825 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 14826 | } }, |
| | 14827 | }, .{ |
| | 14828 | .required_features = .{ .sse2, null, null, null }, |
| | 14829 | .src_constraints = .{ |
| | 14830 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 14831 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 14832 | .any, |
| | 14833 | }, |
| | 14834 | .patterns = &.{ |
| | 14835 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 14836 | }, |
| | 14837 | .extra_temps = .{ |
| | 14838 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 14839 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 14840 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 14841 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 14842 | .unused, |
| | 14843 | .unused, |
| | 14844 | .unused, |
| | 14845 | .unused, |
| | 14846 | .unused, |
| | 14847 | }, |
| | 14848 | .dst_temps = .{.mem}, |
| | 14849 | .clobbers = .{ .eflags = true }, |
| | 14850 | .each = .{ .once = &.{ |
| | 14851 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 14852 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 14853 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 14854 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| | 14855 | .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ }, |
| | 14856 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, |
| | 14857 | .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ }, |
| | 14858 | .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, |
| | 14859 | .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ }, |
| | 14860 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 14861 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 14862 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 14863 | } }, |
| | 14864 | }, .{ |
| | 14865 | .required_features = .{ .sse, null, null, null }, |
| | 14866 | .src_constraints = .{ |
| | 14867 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 14868 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 14869 | .any, |
| | 14870 | }, |
| | 14871 | .patterns = &.{ |
| | 14872 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 14873 | }, |
| | 14874 | .call_frame = .{ .alignment = .@"16" }, |
| | 14875 | .extra_temps = .{ |
| | 14876 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 14877 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 14878 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, |
| | 14879 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } }, |
| | 14880 | .unused, |
| | 14881 | .unused, |
| | 14882 | .unused, |
| | 14883 | .unused, |
| | 14884 | .unused, |
| | 14885 | }, |
| | 14886 | .dst_temps = .{.mem}, |
| | 14887 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 14888 | .each = .{ .once = &.{ |
| | 14889 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 14890 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 14891 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 14892 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 14893 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| | 14894 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 14895 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| | 14896 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 14897 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 14898 | } }, |
| | 14899 | }, .{ |
| | 14900 | .required_features = .{ .x87, .cmov, null, null }, |
| | 14901 | .src_constraints = .{ |
| | 14902 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 14903 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 14904 | .any, |
| | 14905 | }, |
| | 14906 | .patterns = &.{ |
| | 14907 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 14908 | .{ .src = .{ .mem, .to_x87, .none } }, |
| | 14909 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| | 14910 | }, |
| | 14911 | .extra_temps = .{ |
| | 14912 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 14913 | .unused, |
| | 14914 | .unused, |
| | 14915 | .unused, |
| | 14916 | .unused, |
| | 14917 | .unused, |
| | 14918 | .unused, |
| | 14919 | .unused, |
| | 14920 | .unused, |
| | 14921 | }, |
| | 14922 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }}, |
| | 14923 | .clobbers = .{ .eflags = true }, |
| | 14924 | .each = .{ .once = &.{ |
| | 14925 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| | 14926 | .{ ._, .f_, .ucomi, .tmp0t, .tmp0t, ._, ._ }, |
| | 14927 | .{ ._, .f_u, .cmov, .tmp0t, .src1t, ._, ._ }, |
| | 14928 | .{ ._, .f_, .xch, .src1t, ._, ._, ._ }, |
| | 14929 | .{ ._, .f_, .ucomi, .tmp0t, .src1t, ._, ._ }, |
| | 14930 | .{ ._, .f_, .xch, .src1t, ._, ._, ._ }, |
| | 14931 | .{ ._, .f_nb, .cmov, .tmp0t, .src1t, ._, ._ }, |
| | 14932 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| | 14933 | } }, |
| | 14934 | }, .{ |
| | 14935 | .required_features = .{ .sahf, .x87, null, null }, |
| | 14936 | .src_constraints = .{ |
| | 14937 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 14938 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 14939 | .any, |
| | 14940 | }, |
| | 14941 | .patterns = &.{ |
| | 14942 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 14943 | .{ .src = .{ .mem, .to_x87, .none } }, |
| | 14944 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| | 14945 | }, |
| | 14946 | .extra_temps = .{ |
| | 14947 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 14948 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| | 14949 | .unused, |
| | 14950 | .unused, |
| | 14951 | .unused, |
| | 14952 | .unused, |
| | 14953 | .unused, |
| | 14954 | .unused, |
| | 14955 | .unused, |
| | 14956 | }, |
| | 14957 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }}, |
| | 14958 | .clobbers = .{ .eflags = true }, |
| | 14959 | .each = .{ .once = &.{ |
| | 14960 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| | 14961 | .{ ._, .f_, .ucom, .tmp0t, ._, ._, ._ }, |
| | 14962 | .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ }, |
| | 14963 | .{ ._, ._, .sahf, ._, ._, ._, ._ }, |
| | 14964 | .{ ._, ._p, .j, .@"0f", ._, ._, ._ }, |
| | 14965 | .{ ._, .f_, .xch, .src1t, ._, ._, ._ }, |
| | 14966 | .{ ._, .f_, .ucom, .src1t, ._, ._, ._ }, |
| | 14967 | .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ }, |
| | 14968 | .{ ._, .f_, .xch, .src1t, ._, ._, ._ }, |
| | 14969 | .{ ._, ._, .sahf, ._, ._, ._, ._ }, |
| | 14970 | .{ ._, ._b, .j, .@"1f", ._, ._, ._ }, |
| | 14971 | .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ }, |
| | 14972 | .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, |
| | 14973 | .{ .@"1:", .f_p, .st, .dst0t, ._, ._, ._ }, |
| | 14974 | } }, |
| | 14975 | }, .{ |
| | 14976 | .required_features = .{ .x87, null, null, null }, |
| | 14977 | .src_constraints = .{ |
| | 14978 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 14979 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 14980 | .any, |
| | 14981 | }, |
| | 14982 | .patterns = &.{ |
| | 14983 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 14984 | .{ .src = .{ .mem, .to_x87, .none } }, |
| | 14985 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| | 14986 | }, |
| | 14987 | .extra_temps = .{ |
| | 14988 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 14989 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| | 14990 | .unused, |
| | 14991 | .unused, |
| | 14992 | .unused, |
| | 14993 | .unused, |
| | 14994 | .unused, |
| | 14995 | .unused, |
| | 14996 | .unused, |
| | 14997 | }, |
| | 14998 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }}, |
| | 14999 | .clobbers = .{ .eflags = true }, |
| | 15000 | .each = .{ .once = &.{ |
| | 15001 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| | 15002 | .{ ._, .f_, .xam, ._, ._, ._, ._ }, |
| | 15003 | .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ }, |
| | 15004 | .{ ._, ._, .@"test", .tmp1b, .si(0b1_000_100), ._, ._ }, |
| | 15005 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 15006 | .{ ._, .f_, .xch, .src1t, ._, ._, ._ }, |
| | 15007 | .{ ._, .f_, .ucom, .src1t, ._, ._, ._ }, |
| | 15008 | .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ }, |
| | 15009 | .{ ._, .f_, .xch, .src1t, ._, ._, ._ }, |
| | 15010 | .{ ._, ._, .@"test", .tmp1b, .si(0b0_000_001), ._, ._ }, |
| | 15011 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 15012 | .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ }, |
| | 15013 | .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, |
| | 15014 | .{ .@"1:", .f_p, .st, .dst0t, ._, ._, ._ }, |
| | 15015 | } }, |
| | 15016 | }, .{ |
| | 15017 | .required_features = .{ .x87, .cmov, null, null }, |
| | 15018 | .src_constraints = .{ |
| | 15019 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 15020 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 15021 | .any, |
| | 15022 | }, |
| | 15023 | .patterns = &.{ |
| | 15024 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 15025 | }, |
| | 15026 | .extra_temps = .{ |
| | 15027 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 15028 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| | 15029 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 15030 | .unused, |
| | 15031 | .unused, |
| | 15032 | .unused, |
| | 15033 | .unused, |
| | 15034 | .unused, |
| | 15035 | .unused, |
| | 15036 | }, |
| | 15037 | .dst_temps = .{.mem}, |
| | 15038 | .clobbers = .{ .eflags = true }, |
| | 15039 | .each = .{ .once = &.{ |
| | 15040 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 15041 | .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, |
| | 15042 | .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, |
| | 15043 | .{ ._, .f_, .ucomi, .tmp1t, .tmp1t, ._, ._ }, |
| | 15044 | .{ ._, .f_u, .cmov, .tmp1t, .tmp2t, ._, ._ }, |
| | 15045 | .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ }, |
| | 15046 | .{ ._, .f_, .ucomi, .tmp1t, .tmp2t, ._, ._ }, |
| | 15047 | .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ }, |
| | 15048 | .{ ._, .f_nb, .cmov, .tmp1t, .tmp2t, ._, ._ }, |
| | 15049 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ }, |
| | 15050 | .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ }, |
| | 15051 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 15052 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 15053 | } }, |
| | 15054 | }, .{ |
| | 15055 | .required_features = .{ .sahf, .x87, null, null }, |
| | 15056 | .src_constraints = .{ |
| | 15057 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 15058 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 15059 | .any, |
| | 15060 | }, |
| | 15061 | .patterns = &.{ |
| | 15062 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 15063 | }, |
| | 15064 | .extra_temps = .{ |
| | 15065 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 15066 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| | 15067 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 15068 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| | 15069 | .unused, |
| | 15070 | .unused, |
| | 15071 | .unused, |
| | 15072 | .unused, |
| | 15073 | .unused, |
| | 15074 | }, |
| | 15075 | .dst_temps = .{.mem}, |
| | 15076 | .clobbers = .{ .eflags = true }, |
| | 15077 | .each = .{ .once = &.{ |
| | 15078 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 15079 | .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, |
| | 15080 | .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, |
| | 15081 | .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ }, |
| | 15082 | .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, |
| | 15083 | .{ ._, ._, .sahf, ._, ._, ._, ._ }, |
| | 15084 | .{ ._, ._p, .j, .@"1f", ._, ._, ._ }, |
| | 15085 | .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ }, |
| | 15086 | .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ }, |
| | 15087 | .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, |
| | 15088 | .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ }, |
| | 15089 | .{ ._, ._, .sahf, ._, ._, ._, ._ }, |
| | 15090 | .{ ._, ._b, .j, .@"2f", ._, ._, ._ }, |
| | 15091 | .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ }, |
| | 15092 | .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ }, |
| | 15093 | .{ .@"2:", .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ }, |
| | 15094 | .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ }, |
| | 15095 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 15096 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 15097 | } }, |
| | 15098 | }, .{ |
| | 15099 | .required_features = .{ .x87, null, null, null }, |
| | 15100 | .src_constraints = .{ |
| | 15101 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 15102 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 15103 | .any, |
| | 15104 | }, |
| | 15105 | .patterns = &.{ |
| | 15106 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 15107 | }, |
| | 15108 | .extra_temps = .{ |
| | 15109 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 15110 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| | 15111 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 15112 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| | 15113 | .unused, |
| | 15114 | .unused, |
| | 15115 | .unused, |
| | 15116 | .unused, |
| | 15117 | .unused, |
| | 15118 | }, |
| | 15119 | .dst_temps = .{.mem}, |
| | 15120 | .clobbers = .{ .eflags = true }, |
| | 15121 | .each = .{ .once = &.{ |
| | 15122 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 15123 | .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, |
| | 15124 | .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, |
| | 15125 | .{ ._, .f_, .xam, ._, ._, ._, ._ }, |
| | 15126 | .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, |
| | 15127 | .{ ._, ._, .@"test", .tmp3b, .si(0b1_000_100), ._, ._ }, |
| | 15128 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| | 15129 | .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ }, |
| | 15130 | .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ }, |
| | 15131 | .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, |
| | 15132 | .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ }, |
| | 15133 | .{ ._, ._, .@"test", .tmp3b, .si(0b0_000_001), ._, ._ }, |
| | 15134 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| | 15135 | .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ }, |
| | 15136 | .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ }, |
| | 15137 | .{ .@"2:", .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ }, |
| | 15138 | .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ }, |
| | 15139 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 15140 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 15141 | } }, |
| | 15142 | }, .{ |
| | 15143 | .required_features = .{ .sse, null, null, null }, |
| | 15144 | .src_constraints = .{ |
| | 15145 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 15146 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 15147 | .any, |
| | 15148 | }, |
| | 15149 | .patterns = &.{ |
| | 15150 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| | 15151 | }, |
| | 15152 | .call_frame = .{ .alignment = .@"16" }, |
| | 15153 | .extra_temps = .{ |
| | 15154 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } }, |
| | 15155 | .unused, |
| | 15156 | .unused, |
| | 15157 | .unused, |
| | 15158 | .unused, |
| | 15159 | .unused, |
| | 15160 | .unused, |
| | 15161 | .unused, |
| | 15162 | .unused, |
| | 15163 | }, |
| | 15164 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15165 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 15166 | .each = .{ .once = &.{ |
| | 15167 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 15168 | } }, |
| | 15169 | }, .{ |
| | 15170 | .required_features = .{ .avx, null, null, null }, |
| | 15171 | .src_constraints = .{ |
| | 15172 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 15173 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 15174 | .any, |
| | 15175 | }, |
| | 15176 | .patterns = &.{ |
| | 15177 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 15178 | }, |
| | 15179 | .call_frame = .{ .alignment = .@"16" }, |
| | 15180 | .extra_temps = .{ |
| | 15181 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 15182 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 15183 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 15184 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } }, |
| | 15185 | .unused, |
| | 15186 | .unused, |
| | 15187 | .unused, |
| | 15188 | .unused, |
| | 15189 | .unused, |
| | 15190 | }, |
| | 15191 | .dst_temps = .{.mem}, |
| | 15192 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 15193 | .each = .{ .once = &.{ |
| | 15194 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 15195 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 15196 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 15197 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 15198 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 15199 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 15200 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 15201 | } }, |
| | 15202 | }, .{ |
| | 15203 | .required_features = .{ .sse2, null, null, null }, |
| | 15204 | .src_constraints = .{ |
| | 15205 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 15206 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 15207 | .any, |
| | 15208 | }, |
| | 15209 | .patterns = &.{ |
| | 15210 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 15211 | }, |
| | 15212 | .call_frame = .{ .alignment = .@"16" }, |
| | 15213 | .extra_temps = .{ |
| | 15214 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 15215 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 15216 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 15217 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } }, |
| | 15218 | .unused, |
| | 15219 | .unused, |
| | 15220 | .unused, |
| | 15221 | .unused, |
| | 15222 | .unused, |
| | 15223 | }, |
| | 15224 | .dst_temps = .{.mem}, |
| | 15225 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 15226 | .each = .{ .once = &.{ |
| | 15227 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 15228 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 15229 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 15230 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 15231 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 15232 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 15233 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 15234 | } }, |
| | 15235 | }, .{ |
| | 15236 | .required_features = .{ .sse, null, null, null }, |
| | 15237 | .src_constraints = .{ |
| | 15238 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 15239 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 15240 | .any, |
| | 15241 | }, |
| | 15242 | .patterns = &.{ |
| | 15243 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 15244 | }, |
| | 15245 | .call_frame = .{ .alignment = .@"16" }, |
| | 15246 | .extra_temps = .{ |
| | 15247 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 15248 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 15249 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 15250 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } }, |
| | 15251 | .unused, |
| | 15252 | .unused, |
| | 15253 | .unused, |
| | 15254 | .unused, |
| | 15255 | .unused, |
| | 15256 | }, |
| | 15257 | .dst_temps = .{.mem}, |
| | 15258 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 15259 | .each = .{ .once = &.{ |
| | 15260 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 15261 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 15262 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 15263 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 15264 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 15265 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 15266 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 15267 | } }, |
| | 15268 | } }) catch |err| switch (err) { |
| | 15269 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 15270 | @tagName(air_tag), |
| | 15271 | cg.typeOf(bin_op.lhs).fmt(pt), |
| | 15272 | ops[0].tracking(cg), |
| | 15273 | ops[1].tracking(cg), |
| | 15274 | }), |
| | 15275 | else => |e| return e, |
| | 15276 | }; |
| | 15277 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 15278 | }, |
| | 15279 | .min => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else { |
| | 15280 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| | 15281 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 15282 | var res: [1]Temp = undefined; |
| | 15283 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ |
| | 15284 | .required_features = .{ .cmov, null, null, null }, |
| | 15285 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| | 15286 | .patterns = &.{ |
| | 15287 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15288 | }, |
| | 15289 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15290 | .clobbers = .{ .eflags = true }, |
| | 15291 | .each = .{ .once = &.{ |
| | 15292 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 15293 | .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ }, |
| | 15294 | } }, |
| | 15295 | }, .{ |
| | 15296 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| | 15297 | .patterns = &.{ |
| | 15298 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15299 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15300 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15301 | }, |
| | 15302 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15303 | .clobbers = .{ .eflags = true }, |
| | 15304 | .each = .{ .once = &.{ |
| | 15305 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 15306 | .{ ._, ._nge, .j, .@"0f", ._, ._, ._ }, |
| | 15307 | .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ }, |
| | 15308 | } }, |
| | 15309 | }, .{ |
| | 15310 | .required_features = .{ .cmov, null, null, null }, |
| | 15311 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| | 15312 | .patterns = &.{ |
| | 15313 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15314 | }, |
| | 15315 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15316 | .clobbers = .{ .eflags = true }, |
| | 15317 | .each = .{ .once = &.{ |
| | 15318 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 15319 | .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ }, |
| | 15320 | } }, |
| | 15321 | }, .{ |
| | 15322 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| | 15323 | .patterns = &.{ |
| | 15324 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15325 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15326 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15327 | }, |
| | 15328 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15329 | .clobbers = .{ .eflags = true }, |
| | 15330 | .each = .{ .once = &.{ |
| | 15331 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 15332 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 15333 | .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ }, |
| | 15334 | } }, |
| | 15335 | }, .{ |
| | 15336 | .required_features = .{ .cmov, null, null, null }, |
| | 15337 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| | 15338 | .patterns = &.{ |
| | 15339 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15340 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15341 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15342 | }, |
| | 15343 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15344 | .clobbers = .{ .eflags = true }, |
| | 15345 | .each = .{ .once = &.{ |
| | 15346 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 15347 | .{ ._, ._ge, .cmov, .dst0w, .src1w, ._, ._ }, |
| | 15348 | } }, |
| | 15349 | }, .{ |
| | 15350 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| | 15351 | .patterns = &.{ |
| | 15352 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15353 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15354 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15355 | }, |
| | 15356 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15357 | .clobbers = .{ .eflags = true }, |
| | 15358 | .each = .{ .once = &.{ |
| | 15359 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 15360 | .{ ._, ._nge, .j, .@"0f", ._, ._, ._ }, |
| | 15361 | .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ }, |
| | 15362 | } }, |
| | 15363 | }, .{ |
| | 15364 | .required_features = .{ .cmov, null, null, null }, |
| | 15365 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| | 15366 | .patterns = &.{ |
| | 15367 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15368 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15369 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15370 | }, |
| | 15371 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15372 | .clobbers = .{ .eflags = true }, |
| | 15373 | .each = .{ .once = &.{ |
| | 15374 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 15375 | .{ ._, ._ae, .cmov, .dst0w, .src1w, ._, ._ }, |
| | 15376 | } }, |
| | 15377 | }, .{ |
| | 15378 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| | 15379 | .patterns = &.{ |
| | 15380 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15381 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15382 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15383 | }, |
| | 15384 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15385 | .clobbers = .{ .eflags = true }, |
| | 15386 | .each = .{ .once = &.{ |
| | 15387 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 15388 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 15389 | .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ }, |
| | 15390 | } }, |
| | 15391 | }, .{ |
| | 15392 | .required_features = .{ .cmov, null, null, null }, |
| | 15393 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| | 15394 | .patterns = &.{ |
| | 15395 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15396 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15397 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15398 | }, |
| | 15399 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15400 | .clobbers = .{ .eflags = true }, |
| | 15401 | .each = .{ .once = &.{ |
| | 15402 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 15403 | .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ }, |
| | 15404 | } }, |
| | 15405 | }, .{ |
| | 15406 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| | 15407 | .patterns = &.{ |
| | 15408 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15409 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15410 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15411 | }, |
| | 15412 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15413 | .clobbers = .{ .eflags = true }, |
| | 15414 | .each = .{ .once = &.{ |
| | 15415 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 15416 | .{ ._, ._nge, .j, .@"0f", ._, ._, ._ }, |
| | 15417 | .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ }, |
| | 15418 | } }, |
| | 15419 | }, .{ |
| | 15420 | .required_features = .{ .cmov, null, null, null }, |
| | 15421 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| | 15422 | .patterns = &.{ |
| | 15423 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15424 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15425 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15426 | }, |
| | 15427 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15428 | .clobbers = .{ .eflags = true }, |
| | 15429 | .each = .{ .once = &.{ |
| | 15430 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 15431 | .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ }, |
| | 15432 | } }, |
| | 15433 | }, .{ |
| | 15434 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| | 15435 | .patterns = &.{ |
| | 15436 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15437 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15438 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15439 | }, |
| | 15440 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15441 | .clobbers = .{ .eflags = true }, |
| | 15442 | .each = .{ .once = &.{ |
| | 15443 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 15444 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 15445 | .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ }, |
| | 15446 | } }, |
| | 15447 | }, .{ |
| | 15448 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 15449 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| | 15450 | .patterns = &.{ |
| | 15451 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15452 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15453 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15454 | }, |
| | 15455 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15456 | .clobbers = .{ .eflags = true }, |
| | 15457 | .each = .{ .once = &.{ |
| | 15458 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 15459 | .{ ._, ._ge, .cmov, .dst0q, .src1q, ._, ._ }, |
| | 15460 | } }, |
| | 15461 | }, .{ |
| | 15462 | .required_features = .{ .@"64bit", null, null, null }, |
| | 15463 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| | 15464 | .patterns = &.{ |
| | 15465 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15466 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15467 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15468 | }, |
| | 15469 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15470 | .clobbers = .{ .eflags = true }, |
| | 15471 | .each = .{ .once = &.{ |
| | 15472 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 15473 | .{ ._, ._nge, .j, .@"0f", ._, ._, ._ }, |
| | 15474 | .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ }, |
| | 15475 | } }, |
| | 15476 | }, .{ |
| | 15477 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 15478 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| | 15479 | .patterns = &.{ |
| | 15480 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15481 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15482 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15483 | }, |
| | 15484 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15485 | .clobbers = .{ .eflags = true }, |
| | 15486 | .each = .{ .once = &.{ |
| | 15487 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 15488 | .{ ._, ._ae, .cmov, .dst0q, .src1q, ._, ._ }, |
| | 15489 | } }, |
| | 15490 | }, .{ |
| | 15491 | .required_features = .{ .@"64bit", null, null, null }, |
| | 15492 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| | 15493 | .patterns = &.{ |
| | 15494 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| | 15495 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 15496 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| | 15497 | }, |
| | 15498 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15499 | .clobbers = .{ .eflags = true }, |
| | 15500 | .each = .{ .once = &.{ |
| | 15501 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 15502 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 15503 | .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ }, |
| | 15504 | } }, |
| | 15505 | }, .{ |
| | 15506 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 15507 | .src_constraints = .{ .any_signed_int, .any_signed_int, .any }, |
| | 15508 | .patterns = &.{ |
| | 15509 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 15510 | }, |
| | 15511 | .extra_temps = .{ |
| | 15512 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, |
| | 15513 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, |
| | 15514 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| | 15515 | .unused, |
| | 15516 | .unused, |
| | 15517 | .unused, |
| | 15518 | .unused, |
| | 15519 | .unused, |
| | 15520 | .unused, |
| | 15521 | }, |
| | 15522 | .dst_temps = .{.mem}, |
| | 15523 | .clobbers = .{ .eflags = true }, |
| | 15524 | .each = .{ .once = &.{ |
| | 15525 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, |
| | 15526 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 15527 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| | 15528 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| | 15529 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 15530 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 15531 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| | 15532 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, |
| | 15533 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| | 15534 | .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ }, |
| | 15535 | .{ ._, ._ge, .cmov, .tmp0p, .tmp1p, ._, ._ }, |
| | 15536 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 15537 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, |
| | 15538 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 15539 | } }, |
| | 15540 | }, .{ |
| | 15541 | .required_features = .{ .@"64bit", null, null, null }, |
| | 15542 | .src_constraints = .{ .any_signed_int, .any_signed_int, .any }, |
| | 15543 | .patterns = &.{ |
| | 15544 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 15545 | }, |
| | 15546 | .extra_temps = .{ |
| | 15547 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, |
| | 15548 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, |
| | 15549 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| | 15550 | .unused, |
| | 15551 | .unused, |
| | 15552 | .unused, |
| | 15553 | .unused, |
| | 15554 | .unused, |
| | 15555 | .unused, |
| | 15556 | }, |
| | 15557 | .dst_temps = .{.mem}, |
| | 15558 | .clobbers = .{ .eflags = true }, |
| | 15559 | .each = .{ .once = &.{ |
| | 15560 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, |
| | 15561 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 15562 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| | 15563 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| | 15564 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 15565 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 15566 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| | 15567 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, |
| | 15568 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| | 15569 | .{ ._, ._nge, .j, .@"0f", ._, ._, ._ }, |
| | 15570 | .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ }, |
| | 15571 | .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 15572 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, |
| | 15573 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 15574 | } }, |
| | 15575 | }, .{ |
| | 15576 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 15577 | .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any }, |
| | 15578 | .patterns = &.{ |
| | 15579 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 15580 | }, |
| | 15581 | .extra_temps = .{ |
| | 15582 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, |
| | 15583 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, |
| | 15584 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| | 15585 | .unused, |
| | 15586 | .unused, |
| | 15587 | .unused, |
| | 15588 | .unused, |
| | 15589 | .unused, |
| | 15590 | .unused, |
| | 15591 | }, |
| | 15592 | .dst_temps = .{.mem}, |
| | 15593 | .clobbers = .{ .eflags = true }, |
| | 15594 | .each = .{ .once = &.{ |
| | 15595 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, |
| | 15596 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 15597 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, |
| | 15598 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, |
| | 15599 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 15600 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 15601 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| | 15602 | .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ }, |
| | 15603 | .{ ._, ._ae, .cmov, .tmp0p, .tmp1p, ._, ._ }, |
| | 15604 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 15605 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, |
| | 15606 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 15607 | } }, |
| | 15608 | }, .{ |
| | 15609 | .required_features = .{ .@"64bit", null, null, null }, |
| | 15610 | .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any }, |
| | 15611 | .patterns = &.{ |
| | 15612 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 15613 | }, |
| | 15614 | .extra_temps = .{ |
| | 15615 | .{ .type = .isize, .kind = .{ .reg = .rsi } }, |
| | 15616 | .{ .type = .u64, .kind = .{ .reg = .rdi } }, |
| | 15617 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| | 15618 | .unused, |
| | 15619 | .unused, |
| | 15620 | .unused, |
| | 15621 | .unused, |
| | 15622 | .unused, |
| | 15623 | .unused, |
| | 15624 | }, |
| | 15625 | .dst_temps = .{.mem}, |
| | 15626 | .clobbers = .{ .eflags = true }, |
| | 15627 | .each = .{ .once = &.{ |
| | 15628 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, |
| | 15629 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 15630 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, |
| | 15631 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, |
| | 15632 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 15633 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 15634 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| | 15635 | .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, |
| | 15636 | .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ }, |
| | 15637 | .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 15638 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, |
| | 15639 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 15640 | } }, |
| | 15641 | }, .{ |
| | 15642 | .required_features = .{ .avx, null, null, null }, |
| | 15643 | .src_constraints = .{ |
| | 15644 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 15645 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 15646 | .any, |
| | 15647 | }, |
| | 15648 | .patterns = &.{ |
| | 15649 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 15650 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 15651 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 15652 | }, |
| | 15653 | .dst_temps = .{.{ .rc = .sse }}, |
| | 15654 | .each = .{ .once = &.{ |
| | 15655 | .{ ._, .vp_b, .mins, .dst0x, .src0x, .src1x, ._ }, |
| | 15656 | } }, |
| | 15657 | }, .{ |
| | 15658 | .required_features = .{ .sse4_1, null, null, null }, |
| | 15659 | .src_constraints = .{ |
| | 15660 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 15661 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 15662 | .any, |
| | 15663 | }, |
| | 15664 | .patterns = &.{ |
| | 15665 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 15666 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 15667 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 15668 | }, |
| | 15669 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 15670 | .each = .{ .once = &.{ |
| | 15671 | .{ ._, .p_b, .mins, .dst0x, .src1x, ._, ._ }, |
| | 15672 | } }, |
| | 15673 | }, .{ |
| | 15674 | .required_features = .{ .sse2, null, null, null }, |
| | 15675 | .src_constraints = .{ |
| | 15676 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 15677 | .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 15678 | .any, |
| | 15679 | }, |
| | 15680 | .patterns = &.{ |
| | 15681 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 15682 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 15683 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 15684 | }, |
| | 15685 | .dst_temps = .{.{ .rc = .sse }}, |
| | 15686 | .each = .{ .once = &.{ |
| | 15687 | .{ ._, ._dqa, .mov, .dst0x, .src1x, ._, ._ }, |
| | 15688 | .{ ._, .p_b, .cmpgt, .dst0x, .src0x, ._, ._ }, |
| | 15689 | .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ }, |
| | 15690 | .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ }, |
| | 15691 | .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ }, |
| | 15692 | } }, |
| | 15693 | }, .{ |
| | 15694 | .required_features = .{ .avx2, null, null, null }, |
| | 15695 | .src_constraints = .{ |
| | 15696 | .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, |
| | 15697 | .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, |
| | 15698 | .any, |
| | 15699 | }, |
| | 15700 | .patterns = &.{ |
| | 15701 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 15702 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 15703 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 15704 | }, |
| | 15705 | .dst_temps = .{.{ .rc = .sse }}, |
| | 15706 | .each = .{ .once = &.{ |
| | 15707 | .{ ._, .vp_b, .mins, .dst0y, .src0y, .src1y, ._ }, |
| | 15708 | } }, |
| | 15709 | }, .{ |
| | 15710 | .required_features = .{ .avx2, null, null, null }, |
| | 15711 | .src_constraints = .{ |
| | 15712 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, |
| | 15713 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, |
| | 15714 | .any, |
| | 15715 | }, |
| 7097 | .patterns = &.{ | 15716 | .patterns = &.{ |
| 7098 | .{ .src = .{ .to_mem, .to_mem } }, | 15717 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7099 | }, | 15718 | }, |
| 7100 | .extra_temps = .{ | 15719 | .extra_temps = .{ |
| 7101 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 15720 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7123,9 +15742,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7123,9 +15742,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7123 | .src_constraints = .{ | 15742 | .src_constraints = .{ |
| 7124 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 15743 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| 7125 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 15744 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 15745 | .any, |
| 7126 | }, | 15746 | }, |
| 7127 | .patterns = &.{ | 15747 | .patterns = &.{ |
| 7128 | .{ .src = .{ .to_mem, .to_mem } }, | 15748 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7129 | }, | 15749 | }, |
| 7130 | .extra_temps = .{ | 15750 | .extra_temps = .{ |
| 7131 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 15751 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7153,9 +15773,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7153,9 +15773,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7153 | .src_constraints = .{ | 15773 | .src_constraints = .{ |
| 7154 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 15774 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| 7155 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 15775 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 15776 | .any, |
| 7156 | }, | 15777 | }, |
| 7157 | .patterns = &.{ | 15778 | .patterns = &.{ |
| 7158 | .{ .src = .{ .to_mem, .to_mem } }, | 15779 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7159 | }, | 15780 | }, |
| 7160 | .extra_temps = .{ | 15781 | .extra_temps = .{ |
| 7161 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 15782 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7183,9 +15804,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7183,9 +15804,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7183 | .src_constraints = .{ | 15804 | .src_constraints = .{ |
| 7184 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 15805 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| 7185 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, | 15806 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, |
| | 15807 | .any, |
| 7186 | }, | 15808 | }, |
| 7187 | .patterns = &.{ | 15809 | .patterns = &.{ |
| 7188 | .{ .src = .{ .to_mem, .to_mem } }, | 15810 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7189 | }, | 15811 | }, |
| 7190 | .extra_temps = .{ | 15812 | .extra_temps = .{ |
| 7191 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 15813 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7217,9 +15839,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7217,9 +15839,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7217 | .src_constraints = .{ | 15839 | .src_constraints = .{ |
| 7218 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 15840 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| 7219 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 15841 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| | 15842 | .any, |
| 7220 | }, | 15843 | }, |
| 7221 | .patterns = &.{ | 15844 | .patterns = &.{ |
| 7222 | .{ .src = .{ .to_mem, .to_mem } }, | 15845 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7223 | }, | 15846 | }, |
| 7224 | .extra_temps = .{ | 15847 | .extra_temps = .{ |
| 7225 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 15848 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7249,9 +15872,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7249,9 +15872,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7249 | .src_constraints = .{ | 15872 | .src_constraints = .{ |
| 7250 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 15873 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| 7251 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 15874 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| | 15875 | .any, |
| 7252 | }, | 15876 | }, |
| 7253 | .patterns = &.{ | 15877 | .patterns = &.{ |
| 7254 | .{ .src = .{ .to_mem, .to_mem } }, | 15878 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7255 | }, | 15879 | }, |
| 7256 | .extra_temps = .{ | 15880 | .extra_temps = .{ |
| 7257 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 15881 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7281,9 +15905,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7281,9 +15905,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7281 | .src_constraints = .{ | 15905 | .src_constraints = .{ |
| 7282 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 15906 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| 7283 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 15907 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| | 15908 | .any, |
| 7284 | }, | 15909 | }, |
| 7285 | .patterns = &.{ | 15910 | .patterns = &.{ |
| 7286 | .{ .src = .{ .to_mem, .to_mem } }, | 15911 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7287 | }, | 15912 | }, |
| 7288 | .extra_temps = .{ | 15913 | .extra_temps = .{ |
| 7289 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 15914 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7312,9 +15937,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7312,9 +15937,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7312 | .src_constraints = .{ | 15937 | .src_constraints = .{ |
| 7313 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 15938 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| 7314 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, | 15939 | .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, |
| | 15940 | .any, |
| 7315 | }, | 15941 | }, |
| 7316 | .patterns = &.{ | 15942 | .patterns = &.{ |
| 7317 | .{ .src = .{ .to_mem, .to_mem } }, | 15943 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7318 | }, | 15944 | }, |
| 7319 | .extra_temps = .{ | 15945 | .extra_temps = .{ |
| 7320 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 15946 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7344,11 +15970,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7344,11 +15970,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7344 | .src_constraints = .{ | 15970 | .src_constraints = .{ |
| 7345 | .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, | 15971 | .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, |
| 7346 | .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, | 15972 | .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, |
| | 15973 | .any, |
| 7347 | }, | 15974 | }, |
| 7348 | .patterns = &.{ | 15975 | .patterns = &.{ |
| 7349 | .{ .src = .{ .to_mut_mmx, .mem } }, | 15976 | .{ .src = .{ .to_mut_mmx, .mem, .none } }, |
| 7350 | .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } }, | 15977 | .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, |
| 7351 | .{ .src = .{ .to_mut_mmx, .to_mmx } }, | 15978 | .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, |
| 7352 | }, | 15979 | }, |
| 7353 | .dst_temps = .{.{ .ref = .src0 }}, | 15980 | .dst_temps = .{.{ .ref = .src0 }}, |
| 7354 | .each = .{ .once = &.{ | 15981 | .each = .{ .once = &.{ |
| ... | @@ -7359,11 +15986,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7359,11 +15986,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7359 | .src_constraints = .{ | 15986 | .src_constraints = .{ |
| 7360 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 15987 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| 7361 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 15988 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| | 15989 | .any, |
| 7362 | }, | 15990 | }, |
| 7363 | .patterns = &.{ | 15991 | .patterns = &.{ |
| 7364 | .{ .src = .{ .to_sse, .mem } }, | 15992 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 7365 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 15993 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 7366 | .{ .src = .{ .to_sse, .to_sse } }, | 15994 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 7367 | }, | 15995 | }, |
| 7368 | .dst_temps = .{.{ .rc = .sse }}, | 15996 | .dst_temps = .{.{ .rc = .sse }}, |
| 7369 | .each = .{ .once = &.{ | 15997 | .each = .{ .once = &.{ |
| ... | @@ -7374,11 +16002,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7374,11 +16002,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7374 | .src_constraints = .{ | 16002 | .src_constraints = .{ |
| 7375 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 16003 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| 7376 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 16004 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| | 16005 | .any, |
| 7377 | }, | 16006 | }, |
| 7378 | .patterns = &.{ | 16007 | .patterns = &.{ |
| 7379 | .{ .src = .{ .to_mut_sse, .mem } }, | 16008 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 7380 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 16009 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 7381 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 16010 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 7382 | }, | 16011 | }, |
| 7383 | .dst_temps = .{.{ .ref = .src0 }}, | 16012 | .dst_temps = .{.{ .ref = .src0 }}, |
| 7384 | .each = .{ .once = &.{ | 16013 | .each = .{ .once = &.{ |
| ... | @@ -7389,11 +16018,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7389,11 +16018,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7389 | .src_constraints = .{ | 16018 | .src_constraints = .{ |
| 7390 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, | 16019 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, |
| 7391 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, | 16020 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, |
| | 16021 | .any, |
| 7392 | }, | 16022 | }, |
| 7393 | .patterns = &.{ | 16023 | .patterns = &.{ |
| 7394 | .{ .src = .{ .to_sse, .mem } }, | 16024 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 7395 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 16025 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 7396 | .{ .src = .{ .to_sse, .to_sse } }, | 16026 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 7397 | }, | 16027 | }, |
| 7398 | .dst_temps = .{.{ .rc = .sse }}, | 16028 | .dst_temps = .{.{ .rc = .sse }}, |
| 7399 | .each = .{ .once = &.{ | 16029 | .each = .{ .once = &.{ |
| ... | @@ -7404,9 +16034,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7404,9 +16034,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7404 | .src_constraints = .{ | 16034 | .src_constraints = .{ |
| 7405 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, | 16035 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, |
| 7406 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, | 16036 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, |
| | 16037 | .any, |
| 7407 | }, | 16038 | }, |
| 7408 | .patterns = &.{ | 16039 | .patterns = &.{ |
| 7409 | .{ .src = .{ .to_mem, .to_mem } }, | 16040 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7410 | }, | 16041 | }, |
| 7411 | .extra_temps = .{ | 16042 | .extra_temps = .{ |
| 7412 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16043 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7434,9 +16065,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7434,9 +16065,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7434 | .src_constraints = .{ | 16065 | .src_constraints = .{ |
| 7435 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 16066 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| 7436 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 16067 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| | 16068 | .any, |
| 7437 | }, | 16069 | }, |
| 7438 | .patterns = &.{ | 16070 | .patterns = &.{ |
| 7439 | .{ .src = .{ .to_mem, .to_mem } }, | 16071 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7440 | }, | 16072 | }, |
| 7441 | .extra_temps = .{ | 16073 | .extra_temps = .{ |
| 7442 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16074 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7464,9 +16096,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7464,9 +16096,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7464 | .src_constraints = .{ | 16096 | .src_constraints = .{ |
| 7465 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 16097 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| 7466 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, | 16098 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, |
| | 16099 | .any, |
| 7467 | }, | 16100 | }, |
| 7468 | .patterns = &.{ | 16101 | .patterns = &.{ |
| 7469 | .{ .src = .{ .to_mem, .to_mem } }, | 16102 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7470 | }, | 16103 | }, |
| 7471 | .extra_temps = .{ | 16104 | .extra_temps = .{ |
| 7472 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16105 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7494,9 +16127,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7494,9 +16127,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7494 | .src_constraints = .{ | 16127 | .src_constraints = .{ |
| 7495 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 16128 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| 7496 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 16129 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| | 16130 | .any, |
| 7497 | }, | 16131 | }, |
| 7498 | .patterns = &.{ | 16132 | .patterns = &.{ |
| 7499 | .{ .src = .{ .to_mem, .to_mem } }, | 16133 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7500 | }, | 16134 | }, |
| 7501 | .extra_temps = .{ | 16135 | .extra_temps = .{ |
| 7502 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16136 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7526,9 +16160,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7526,9 +16160,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7526 | .src_constraints = .{ | 16160 | .src_constraints = .{ |
| 7527 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 16161 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| 7528 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 16162 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| | 16163 | .any, |
| 7529 | }, | 16164 | }, |
| 7530 | .patterns = &.{ | 16165 | .patterns = &.{ |
| 7531 | .{ .src = .{ .to_mem, .to_mem } }, | 16166 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7532 | }, | 16167 | }, |
| 7533 | .extra_temps = .{ | 16168 | .extra_temps = .{ |
| 7534 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16169 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7558,9 +16193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7558,9 +16193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7558 | .src_constraints = .{ | 16193 | .src_constraints = .{ |
| 7559 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 16194 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| 7560 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 16195 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| | 16196 | .any, |
| 7561 | }, | 16197 | }, |
| 7562 | .patterns = &.{ | 16198 | .patterns = &.{ |
| 7563 | .{ .src = .{ .to_mem, .to_mem } }, | 16199 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7564 | }, | 16200 | }, |
| 7565 | .extra_temps = .{ | 16201 | .extra_temps = .{ |
| 7566 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16202 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7589,9 +16225,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7589,9 +16225,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7589 | .src_constraints = .{ | 16225 | .src_constraints = .{ |
| 7590 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 16226 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| 7591 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, | 16227 | .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, |
| | 16228 | .any, |
| 7592 | }, | 16229 | }, |
| 7593 | .patterns = &.{ | 16230 | .patterns = &.{ |
| 7594 | .{ .src = .{ .to_mem, .to_mem } }, | 16231 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7595 | }, | 16232 | }, |
| 7596 | .extra_temps = .{ | 16233 | .extra_temps = .{ |
| 7597 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16234 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7621,11 +16258,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7621,11 +16258,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7621 | .src_constraints = .{ | 16258 | .src_constraints = .{ |
| 7622 | .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, | 16259 | .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, |
| 7623 | .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, | 16260 | .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, |
| | 16261 | .any, |
| 7624 | }, | 16262 | }, |
| 7625 | .patterns = &.{ | 16263 | .patterns = &.{ |
| 7626 | .{ .src = .{ .to_mut_mmx, .mem } }, | 16264 | .{ .src = .{ .to_mut_mmx, .mem, .none } }, |
| 7627 | .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } }, | 16265 | .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, |
| 7628 | .{ .src = .{ .to_mut_mmx, .to_mmx } }, | 16266 | .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, |
| 7629 | }, | 16267 | }, |
| 7630 | .dst_temps = .{.{ .ref = .src0 }}, | 16268 | .dst_temps = .{.{ .ref = .src0 }}, |
| 7631 | .each = .{ .once = &.{ | 16269 | .each = .{ .once = &.{ |
| ... | @@ -7636,11 +16274,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7636,11 +16274,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7636 | .src_constraints = .{ | 16274 | .src_constraints = .{ |
| 7637 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, | 16275 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| 7638 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, | 16276 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| | 16277 | .any, |
| 7639 | }, | 16278 | }, |
| 7640 | .patterns = &.{ | 16279 | .patterns = &.{ |
| 7641 | .{ .src = .{ .to_sse, .mem } }, | 16280 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 7642 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 16281 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 7643 | .{ .src = .{ .to_sse, .to_sse } }, | 16282 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 7644 | }, | 16283 | }, |
| 7645 | .dst_temps = .{.{ .rc = .sse }}, | 16284 | .dst_temps = .{.{ .rc = .sse }}, |
| 7646 | .each = .{ .once = &.{ | 16285 | .each = .{ .once = &.{ |
| ... | @@ -7651,11 +16290,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7651,11 +16290,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7651 | .src_constraints = .{ | 16290 | .src_constraints = .{ |
| 7652 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, | 16291 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| 7653 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, | 16292 | .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| | 16293 | .any, |
| 7654 | }, | 16294 | }, |
| 7655 | .patterns = &.{ | 16295 | .patterns = &.{ |
| 7656 | .{ .src = .{ .to_mut_sse, .mem } }, | 16296 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 7657 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 16297 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 7658 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 16298 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 7659 | }, | 16299 | }, |
| 7660 | .dst_temps = .{.{ .ref = .src0 }}, | 16300 | .dst_temps = .{.{ .ref = .src0 }}, |
| 7661 | .each = .{ .once = &.{ | 16301 | .each = .{ .once = &.{ |
| ... | @@ -7666,11 +16306,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7666,11 +16306,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7666 | .src_constraints = .{ | 16306 | .src_constraints = .{ |
| 7667 | .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, | 16307 | .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, |
| 7668 | .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, | 16308 | .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, |
| | 16309 | .any, |
| 7669 | }, | 16310 | }, |
| 7670 | .patterns = &.{ | 16311 | .patterns = &.{ |
| 7671 | .{ .src = .{ .to_sse, .mem } }, | 16312 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 7672 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 16313 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 7673 | .{ .src = .{ .to_sse, .to_sse } }, | 16314 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 7674 | }, | 16315 | }, |
| 7675 | .dst_temps = .{.{ .rc = .sse }}, | 16316 | .dst_temps = .{.{ .rc = .sse }}, |
| 7676 | .each = .{ .once = &.{ | 16317 | .each = .{ .once = &.{ |
| ... | @@ -7681,9 +16322,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7681,9 +16322,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7681 | .src_constraints = .{ | 16322 | .src_constraints = .{ |
| 7682 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, | 16323 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, |
| 7683 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, | 16324 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, |
| | 16325 | .any, |
| 7684 | }, | 16326 | }, |
| 7685 | .patterns = &.{ | 16327 | .patterns = &.{ |
| 7686 | .{ .src = .{ .to_mem, .to_mem } }, | 16328 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7687 | }, | 16329 | }, |
| 7688 | .extra_temps = .{ | 16330 | .extra_temps = .{ |
| 7689 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16331 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7711,9 +16353,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7711,9 +16353,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7711 | .src_constraints = .{ | 16353 | .src_constraints = .{ |
| 7712 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, | 16354 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| 7713 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, | 16355 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| | 16356 | .any, |
| 7714 | }, | 16357 | }, |
| 7715 | .patterns = &.{ | 16358 | .patterns = &.{ |
| 7716 | .{ .src = .{ .to_mem, .to_mem } }, | 16359 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7717 | }, | 16360 | }, |
| 7718 | .extra_temps = .{ | 16361 | .extra_temps = .{ |
| 7719 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16362 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7741,9 +16384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7741,9 +16384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7741 | .src_constraints = .{ | 16384 | .src_constraints = .{ |
| 7742 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, | 16385 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| 7743 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, | 16386 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, |
| | 16387 | .any, |
| 7744 | }, | 16388 | }, |
| 7745 | .patterns = &.{ | 16389 | .patterns = &.{ |
| 7746 | .{ .src = .{ .to_mem, .to_mem } }, | 16390 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7747 | }, | 16391 | }, |
| 7748 | .extra_temps = .{ | 16392 | .extra_temps = .{ |
| 7749 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16393 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7771,9 +16415,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7771,9 +16415,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7771 | .src_constraints = .{ | 16415 | .src_constraints = .{ |
| 7772 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, | 16416 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, |
| 7773 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, | 16417 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, |
| | 16418 | .any, |
| 7774 | }, | 16419 | }, |
| 7775 | .patterns = &.{ | 16420 | .patterns = &.{ |
| 7776 | .{ .src = .{ .to_mem, .to_mem } }, | 16421 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7777 | }, | 16422 | }, |
| 7778 | .extra_temps = .{ | 16423 | .extra_temps = .{ |
| 7779 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16424 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7801,9 +16446,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7801,9 +16446,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7801 | .src_constraints = .{ | 16446 | .src_constraints = .{ |
| 7802 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, | 16447 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, |
| 7803 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, | 16448 | .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, |
| | 16449 | .any, |
| 7804 | }, | 16450 | }, |
| 7805 | .patterns = &.{ | 16451 | .patterns = &.{ |
| 7806 | .{ .src = .{ .to_mem, .to_mem } }, | 16452 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7807 | }, | 16453 | }, |
| 7808 | .extra_temps = .{ | 16454 | .extra_temps = .{ |
| 7809 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16455 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7833,11 +16479,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7833,11 +16479,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7833 | .src_constraints = .{ | 16479 | .src_constraints = .{ |
| 7834 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 16480 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| 7835 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 16481 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 16482 | .any, |
| 7836 | }, | 16483 | }, |
| 7837 | .patterns = &.{ | 16484 | .patterns = &.{ |
| 7838 | .{ .src = .{ .to_sse, .mem } }, | 16485 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 7839 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 16486 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 7840 | .{ .src = .{ .to_sse, .to_sse } }, | 16487 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 7841 | }, | 16488 | }, |
| 7842 | .dst_temps = .{.{ .rc = .sse }}, | 16489 | .dst_temps = .{.{ .rc = .sse }}, |
| 7843 | .each = .{ .once = &.{ | 16490 | .each = .{ .once = &.{ |
| ... | @@ -7848,11 +16495,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7848,11 +16495,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7848 | .src_constraints = .{ | 16495 | .src_constraints = .{ |
| 7849 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 16496 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| 7850 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 16497 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 16498 | .any, |
| 7851 | }, | 16499 | }, |
| 7852 | .patterns = &.{ | 16500 | .patterns = &.{ |
| 7853 | .{ .src = .{ .to_mut_sse, .mem } }, | 16501 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 7854 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 16502 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 7855 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 16503 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 7856 | }, | 16504 | }, |
| 7857 | .dst_temps = .{.{ .ref = .src0 }}, | 16505 | .dst_temps = .{.{ .ref = .src0 }}, |
| 7858 | .each = .{ .once = &.{ | 16506 | .each = .{ .once = &.{ |
| ... | @@ -7863,11 +16511,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7863,11 +16511,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7863 | .src_constraints = .{ | 16511 | .src_constraints = .{ |
| 7864 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 16512 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| 7865 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 16513 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 16514 | .any, |
| 7866 | }, | 16515 | }, |
| 7867 | .patterns = &.{ | 16516 | .patterns = &.{ |
| 7868 | .{ .src = .{ .to_mut_sse, .mem } }, | 16517 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 7869 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 16518 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 7870 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 16519 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 7871 | }, | 16520 | }, |
| 7872 | .dst_temps = .{.{ .rc = .sse }}, | 16521 | .dst_temps = .{.{ .rc = .sse }}, |
| 7873 | .each = .{ .once = &.{ | 16522 | .each = .{ .once = &.{ |
| ... | @@ -7880,11 +16529,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7880,11 +16529,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7880 | .src_constraints = .{ | 16529 | .src_constraints = .{ |
| 7881 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, | 16530 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, |
| 7882 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, | 16531 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, |
| | 16532 | .any, |
| 7883 | }, | 16533 | }, |
| 7884 | .patterns = &.{ | 16534 | .patterns = &.{ |
| 7885 | .{ .src = .{ .to_sse, .mem } }, | 16535 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 7886 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 16536 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 7887 | .{ .src = .{ .to_sse, .to_sse } }, | 16537 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 7888 | }, | 16538 | }, |
| 7889 | .dst_temps = .{.{ .rc = .sse }}, | 16539 | .dst_temps = .{.{ .rc = .sse }}, |
| 7890 | .each = .{ .once = &.{ | 16540 | .each = .{ .once = &.{ |
| ... | @@ -7895,9 +16545,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7895,9 +16545,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7895 | .src_constraints = .{ | 16545 | .src_constraints = .{ |
| 7896 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, | 16546 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, |
| 7897 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, | 16547 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, |
| | 16548 | .any, |
| 7898 | }, | 16549 | }, |
| 7899 | .patterns = &.{ | 16550 | .patterns = &.{ |
| 7900 | .{ .src = .{ .to_mem, .to_mem } }, | 16551 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7901 | }, | 16552 | }, |
| 7902 | .extra_temps = .{ | 16553 | .extra_temps = .{ |
| 7903 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16554 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7925,9 +16576,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7925,9 +16576,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7925 | .src_constraints = .{ | 16576 | .src_constraints = .{ |
| 7926 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 16577 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| 7927 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 16578 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 16579 | .any, |
| 7928 | }, | 16580 | }, |
| 7929 | .patterns = &.{ | 16581 | .patterns = &.{ |
| 7930 | .{ .src = .{ .to_mem, .to_mem } }, | 16582 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7931 | }, | 16583 | }, |
| 7932 | .extra_temps = .{ | 16584 | .extra_temps = .{ |
| 7933 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16585 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7955,9 +16607,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7955,9 +16607,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7955 | .src_constraints = .{ | 16607 | .src_constraints = .{ |
| 7956 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 16608 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| 7957 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 16609 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 16610 | .any, |
| 7958 | }, | 16611 | }, |
| 7959 | .patterns = &.{ | 16612 | .patterns = &.{ |
| 7960 | .{ .src = .{ .to_mem, .to_mem } }, | 16613 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7961 | }, | 16614 | }, |
| 7962 | .extra_temps = .{ | 16615 | .extra_temps = .{ |
| 7963 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16616 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -7985,9 +16638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7985,9 +16638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7985 | .src_constraints = .{ | 16638 | .src_constraints = .{ |
| 7986 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 16639 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| 7987 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, | 16640 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, |
| | 16641 | .any, |
| 7988 | }, | 16642 | }, |
| 7989 | .patterns = &.{ | 16643 | .patterns = &.{ |
| 7990 | .{ .src = .{ .to_mem, .to_mem } }, | 16644 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 7991 | }, | 16645 | }, |
| 7992 | .extra_temps = .{ | 16646 | .extra_temps = .{ |
| 7993 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16647 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8017,9 +16671,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8017,9 +16671,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8017 | .src_constraints = .{ | 16671 | .src_constraints = .{ |
| 8018 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, | 16672 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, |
| 8019 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, | 16673 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, |
| | 16674 | .any, |
| 8020 | }, | 16675 | }, |
| 8021 | .patterns = &.{ | 16676 | .patterns = &.{ |
| 8022 | .{ .src = .{ .to_mem, .to_mem } }, | 16677 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8023 | }, | 16678 | }, |
| 8024 | .extra_temps = .{ | 16679 | .extra_temps = .{ |
| 8025 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16680 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8047,9 +16702,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8047,9 +16702,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8047 | .src_constraints = .{ | 16702 | .src_constraints = .{ |
| 8048 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, | 16703 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, |
| 8049 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, | 16704 | .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, |
| | 16705 | .any, |
| 8050 | }, | 16706 | }, |
| 8051 | .patterns = &.{ | 16707 | .patterns = &.{ |
| 8052 | .{ .src = .{ .to_mem, .to_mem } }, | 16708 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8053 | }, | 16709 | }, |
| 8054 | .extra_temps = .{ | 16710 | .extra_temps = .{ |
| 8055 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16711 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8079,11 +16735,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8079,11 +16735,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8079 | .src_constraints = .{ | 16735 | .src_constraints = .{ |
| 8080 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 16736 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 8081 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 16737 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 16738 | .any, |
| 8082 | }, | 16739 | }, |
| 8083 | .patterns = &.{ | 16740 | .patterns = &.{ |
| 8084 | .{ .src = .{ .to_sse, .mem } }, | 16741 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 8085 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 16742 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 8086 | .{ .src = .{ .to_sse, .to_sse } }, | 16743 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 8087 | }, | 16744 | }, |
| 8088 | .dst_temps = .{.{ .rc = .sse }}, | 16745 | .dst_temps = .{.{ .rc = .sse }}, |
| 8089 | .each = .{ .once = &.{ | 16746 | .each = .{ .once = &.{ |
| ... | @@ -8094,11 +16751,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8094,11 +16751,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8094 | .src_constraints = .{ | 16751 | .src_constraints = .{ |
| 8095 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 16752 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 8096 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 16753 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 16754 | .any, |
| 8097 | }, | 16755 | }, |
| 8098 | .patterns = &.{ | 16756 | .patterns = &.{ |
| 8099 | .{ .src = .{ .to_mut_sse, .mem } }, | 16757 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 8100 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 16758 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 8101 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 16759 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 8102 | }, | 16760 | }, |
| 8103 | .dst_temps = .{.{ .ref = .src0 }}, | 16761 | .dst_temps = .{.{ .ref = .src0 }}, |
| 8104 | .each = .{ .once = &.{ | 16762 | .each = .{ .once = &.{ |
| ... | @@ -8109,11 +16767,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8109,11 +16767,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8109 | .src_constraints = .{ | 16767 | .src_constraints = .{ |
| 8110 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 16768 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 8111 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 16769 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 16770 | .any, |
| 8112 | }, | 16771 | }, |
| 8113 | .patterns = &.{ | 16772 | .patterns = &.{ |
| 8114 | .{ .src = .{ .to_mut_sse, .mem } }, | 16773 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 8115 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 16774 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 8116 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 16775 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 8117 | }, | 16776 | }, |
| 8118 | .dst_temps = .{.{ .rc = .sse }}, | 16777 | .dst_temps = .{.{ .rc = .sse }}, |
| 8119 | .each = .{ .once = &.{ | 16778 | .each = .{ .once = &.{ |
| ... | @@ -8128,11 +16787,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8128,11 +16787,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8128 | .src_constraints = .{ | 16787 | .src_constraints = .{ |
| 8129 | .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, | 16788 | .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, |
| 8130 | .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, | 16789 | .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, |
| | 16790 | .any, |
| 8131 | }, | 16791 | }, |
| 8132 | .patterns = &.{ | 16792 | .patterns = &.{ |
| 8133 | .{ .src = .{ .to_sse, .mem } }, | 16793 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 8134 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 16794 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 8135 | .{ .src = .{ .to_sse, .to_sse } }, | 16795 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 8136 | }, | 16796 | }, |
| 8137 | .dst_temps = .{.{ .rc = .sse }}, | 16797 | .dst_temps = .{.{ .rc = .sse }}, |
| 8138 | .each = .{ .once = &.{ | 16798 | .each = .{ .once = &.{ |
| ... | @@ -8143,9 +16803,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8143,9 +16803,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8143 | .src_constraints = .{ | 16803 | .src_constraints = .{ |
| 8144 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, | 16804 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, |
| 8145 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, | 16805 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, |
| | 16806 | .any, |
| 8146 | }, | 16807 | }, |
| 8147 | .patterns = &.{ | 16808 | .patterns = &.{ |
| 8148 | .{ .src = .{ .to_mem, .to_mem } }, | 16809 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8149 | }, | 16810 | }, |
| 8150 | .extra_temps = .{ | 16811 | .extra_temps = .{ |
| 8151 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16812 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8173,9 +16834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8173,9 +16834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8173 | .src_constraints = .{ | 16834 | .src_constraints = .{ |
| 8174 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 16835 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 8175 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 16836 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 16837 | .any, |
| 8176 | }, | 16838 | }, |
| 8177 | .patterns = &.{ | 16839 | .patterns = &.{ |
| 8178 | .{ .src = .{ .to_mem, .to_mem } }, | 16840 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8179 | }, | 16841 | }, |
| 8180 | .extra_temps = .{ | 16842 | .extra_temps = .{ |
| 8181 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16843 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8203,9 +16865,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8203,9 +16865,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8203 | .src_constraints = .{ | 16865 | .src_constraints = .{ |
| 8204 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 16866 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 8205 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 16867 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 16868 | .any, |
| 8206 | }, | 16869 | }, |
| 8207 | .patterns = &.{ | 16870 | .patterns = &.{ |
| 8208 | .{ .src = .{ .to_mem, .to_mem } }, | 16871 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8209 | }, | 16872 | }, |
| 8210 | .extra_temps = .{ | 16873 | .extra_temps = .{ |
| 8211 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16874 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8233,9 +16896,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8233,9 +16896,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8233 | .src_constraints = .{ | 16896 | .src_constraints = .{ |
| 8234 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 16897 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 8235 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 16898 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| | 16899 | .any, |
| 8236 | }, | 16900 | }, |
| 8237 | .patterns = &.{ | 16901 | .patterns = &.{ |
| 8238 | .{ .src = .{ .to_mem, .to_mem } }, | 16902 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8239 | }, | 16903 | }, |
| 8240 | .extra_temps = .{ | 16904 | .extra_temps = .{ |
| 8241 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16905 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8267,9 +16931,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8267,9 +16931,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8267 | .src_constraints = .{ | 16931 | .src_constraints = .{ |
| 8268 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, | 16932 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, |
| 8269 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, | 16933 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, |
| | 16934 | .any, |
| 8270 | }, | 16935 | }, |
| 8271 | .patterns = &.{ | 16936 | .patterns = &.{ |
| 8272 | .{ .src = .{ .to_mem, .to_mem } }, | 16937 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8273 | }, | 16938 | }, |
| 8274 | .extra_temps = .{ | 16939 | .extra_temps = .{ |
| 8275 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16940 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8297,9 +16962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8297,9 +16962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8297 | .src_constraints = .{ | 16962 | .src_constraints = .{ |
| 8298 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, | 16963 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, |
| 8299 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, | 16964 | .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, |
| | 16965 | .any, |
| 8300 | }, | 16966 | }, |
| 8301 | .patterns = &.{ | 16967 | .patterns = &.{ |
| 8302 | .{ .src = .{ .to_mem, .to_mem } }, | 16968 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8303 | }, | 16969 | }, |
| 8304 | .extra_temps = .{ | 16970 | .extra_temps = .{ |
| 8305 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 16971 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8329,11 +16995,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8329,11 +16995,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8329 | .src_constraints = .{ | 16995 | .src_constraints = .{ |
| 8330 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 16996 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 8331 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 16997 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 16998 | .any, |
| 8332 | }, | 16999 | }, |
| 8333 | .patterns = &.{ | 17000 | .patterns = &.{ |
| 8334 | .{ .src = .{ .to_sse, .mem } }, | 17001 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 8335 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 17002 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 8336 | .{ .src = .{ .to_sse, .to_sse } }, | 17003 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 8337 | }, | 17004 | }, |
| 8338 | .dst_temps = .{.{ .rc = .sse }}, | 17005 | .dst_temps = .{.{ .rc = .sse }}, |
| 8339 | .each = .{ .once = &.{ | 17006 | .each = .{ .once = &.{ |
| ... | @@ -8344,11 +17011,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8344,11 +17011,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8344 | .src_constraints = .{ | 17011 | .src_constraints = .{ |
| 8345 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 17012 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 8346 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 17013 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 17014 | .any, |
| 8347 | }, | 17015 | }, |
| 8348 | .patterns = &.{ | 17016 | .patterns = &.{ |
| 8349 | .{ .src = .{ .to_mut_sse, .mem } }, | 17017 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 8350 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 17018 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 8351 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 17019 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 8352 | }, | 17020 | }, |
| 8353 | .dst_temps = .{.{ .ref = .src0 }}, | 17021 | .dst_temps = .{.{ .ref = .src0 }}, |
| 8354 | .each = .{ .once = &.{ | 17022 | .each = .{ .once = &.{ |
| ... | @@ -8359,11 +17027,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8359,11 +17027,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8359 | .src_constraints = .{ | 17027 | .src_constraints = .{ |
| 8360 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 17028 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 8361 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 17029 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 17030 | .any, |
| 8362 | }, | 17031 | }, |
| 8363 | .patterns = &.{ | 17032 | .patterns = &.{ |
| 8364 | .{ .src = .{ .to_mut_sse, .mem } }, | 17033 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 8365 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 17034 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 8366 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 17035 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 8367 | }, | 17036 | }, |
| 8368 | .extra_temps = .{ | 17037 | .extra_temps = .{ |
| 8369 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 17038 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8393,11 +17062,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8393,11 +17062,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8393 | .src_constraints = .{ | 17062 | .src_constraints = .{ |
| 8394 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, | 17063 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, |
| 8395 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, | 17064 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, |
| | 17065 | .any, |
| 8396 | }, | 17066 | }, |
| 8397 | .patterns = &.{ | 17067 | .patterns = &.{ |
| 8398 | .{ .src = .{ .to_sse, .mem } }, | 17068 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 8399 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 17069 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 8400 | .{ .src = .{ .to_sse, .to_sse } }, | 17070 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 8401 | }, | 17071 | }, |
| 8402 | .dst_temps = .{.{ .rc = .sse }}, | 17072 | .dst_temps = .{.{ .rc = .sse }}, |
| 8403 | .each = .{ .once = &.{ | 17073 | .each = .{ .once = &.{ |
| ... | @@ -8408,9 +17078,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8408,9 +17078,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8408 | .src_constraints = .{ | 17078 | .src_constraints = .{ |
| 8409 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, | 17079 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, |
| 8410 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, | 17080 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, |
| | 17081 | .any, |
| 8411 | }, | 17082 | }, |
| 8412 | .patterns = &.{ | 17083 | .patterns = &.{ |
| 8413 | .{ .src = .{ .to_mem, .to_mem } }, | 17084 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8414 | }, | 17085 | }, |
| 8415 | .extra_temps = .{ | 17086 | .extra_temps = .{ |
| 8416 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17087 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8438,9 +17109,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8438,9 +17109,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8438 | .src_constraints = .{ | 17109 | .src_constraints = .{ |
| 8439 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 17110 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 8440 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 17111 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 17112 | .any, |
| 8441 | }, | 17113 | }, |
| 8442 | .patterns = &.{ | 17114 | .patterns = &.{ |
| 8443 | .{ .src = .{ .to_mem, .to_mem } }, | 17115 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8444 | }, | 17116 | }, |
| 8445 | .extra_temps = .{ | 17117 | .extra_temps = .{ |
| 8446 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17118 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8468,9 +17140,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8468,9 +17140,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8468 | .src_constraints = .{ | 17140 | .src_constraints = .{ |
| 8469 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 17141 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 8470 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 17142 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 17143 | .any, |
| 8471 | }, | 17144 | }, |
| 8472 | .patterns = &.{ | 17145 | .patterns = &.{ |
| 8473 | .{ .src = .{ .to_mem, .to_mem } }, | 17146 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8474 | }, | 17147 | }, |
| 8475 | .extra_temps = .{ | 17148 | .extra_temps = .{ |
| 8476 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17149 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8498,9 +17171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8498,9 +17171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8498 | .src_constraints = .{ | 17171 | .src_constraints = .{ |
| 8499 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 17172 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 8500 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 17173 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| | 17174 | .any, |
| 8501 | }, | 17175 | }, |
| 8502 | .patterns = &.{ | 17176 | .patterns = &.{ |
| 8503 | .{ .src = .{ .to_mem, .to_mem } }, | 17177 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8504 | }, | 17178 | }, |
| 8505 | .extra_temps = .{ | 17179 | .extra_temps = .{ |
| 8506 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17180 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8538,9 +17212,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8538,9 +17212,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8538 | .src_constraints = .{ | 17212 | .src_constraints = .{ |
| 8539 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, | 17213 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| 8540 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, | 17214 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| | 17215 | .any, |
| 8541 | }, | 17216 | }, |
| 8542 | .patterns = &.{ | 17217 | .patterns = &.{ |
| 8543 | .{ .src = .{ .to_mem, .to_mem } }, | 17218 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8544 | }, | 17219 | }, |
| 8545 | .extra_temps = .{ | 17220 | .extra_temps = .{ |
| 8546 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17221 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8568,9 +17243,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8568,9 +17243,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8568 | .src_constraints = .{ | 17243 | .src_constraints = .{ |
| 8569 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, | 17244 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| 8570 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, | 17245 | .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| | 17246 | .any, |
| 8571 | }, | 17247 | }, |
| 8572 | .patterns = &.{ | 17248 | .patterns = &.{ |
| 8573 | .{ .src = .{ .to_mem, .to_mem } }, | 17249 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8574 | }, | 17250 | }, |
| 8575 | .extra_temps = .{ | 17251 | .extra_temps = .{ |
| 8576 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17252 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8600,11 +17276,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8600,11 +17276,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8600 | .src_constraints = .{ | 17276 | .src_constraints = .{ |
| 8601 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 17277 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 8602 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 17278 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| | 17279 | .any, |
| 8603 | }, | 17280 | }, |
| 8604 | .patterns = &.{ | 17281 | .patterns = &.{ |
| 8605 | .{ .src = .{ .to_sse, .mem } }, | 17282 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 8606 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 17283 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 8607 | .{ .src = .{ .to_sse, .to_sse } }, | 17284 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 8608 | }, | 17285 | }, |
| 8609 | .dst_temps = .{.{ .rc = .sse }}, | 17286 | .dst_temps = .{.{ .rc = .sse }}, |
| 8610 | .each = .{ .once = &.{ | 17287 | .each = .{ .once = &.{ |
| ... | @@ -8616,11 +17293,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8616,11 +17293,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8616 | .src_constraints = .{ | 17293 | .src_constraints = .{ |
| 8617 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 17294 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 8618 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 17295 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| | 17296 | .any, |
| 8619 | }, | 17297 | }, |
| 8620 | .patterns = &.{ | 17298 | .patterns = &.{ |
| 8621 | .{ .src = .{ .to_mut_sse, .mem } }, | 17299 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 8622 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 17300 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 8623 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 17301 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 8624 | }, | 17302 | }, |
| 8625 | .extra_temps = .{ | 17303 | .extra_temps = .{ |
| 8626 | .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, | 17304 | .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, |
| ... | @@ -8644,11 +17322,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8644,11 +17322,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8644 | .src_constraints = .{ | 17322 | .src_constraints = .{ |
| 8645 | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 17323 | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| 8646 | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 17324 | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| | 17325 | .any, |
| 8647 | }, | 17326 | }, |
| 8648 | .patterns = &.{ | 17327 | .patterns = &.{ |
| 8649 | .{ .src = .{ .to_sse, .mem } }, | 17328 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 8650 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 17329 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 8651 | .{ .src = .{ .to_sse, .to_sse } }, | 17330 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 8652 | }, | 17331 | }, |
| 8653 | .dst_temps = .{.{ .rc = .sse }}, | 17332 | .dst_temps = .{.{ .rc = .sse }}, |
| 8654 | .each = .{ .once = &.{ | 17333 | .each = .{ .once = &.{ |
| ... | @@ -8660,9 +17339,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8660,9 +17339,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8660 | .src_constraints = .{ | 17339 | .src_constraints = .{ |
| 8661 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 17340 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| 8662 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 17341 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| | 17342 | .any, |
| 8663 | }, | 17343 | }, |
| 8664 | .patterns = &.{ | 17344 | .patterns = &.{ |
| 8665 | .{ .src = .{ .to_mem, .to_mem } }, | 17345 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8666 | }, | 17346 | }, |
| 8667 | .extra_temps = .{ | 17347 | .extra_temps = .{ |
| 8668 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17348 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8692,9 +17372,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8692,9 +17372,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8692 | .src_constraints = .{ | 17372 | .src_constraints = .{ |
| 8693 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 17373 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 8694 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 17374 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| | 17375 | .any, |
| 8695 | }, | 17376 | }, |
| 8696 | .patterns = &.{ | 17377 | .patterns = &.{ |
| 8697 | .{ .src = .{ .to_mem, .to_mem } }, | 17378 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8698 | }, | 17379 | }, |
| 8699 | .extra_temps = .{ | 17380 | .extra_temps = .{ |
| 8700 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17381 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8724,9 +17405,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8724,9 +17405,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8724 | .src_constraints = .{ | 17405 | .src_constraints = .{ |
| 8725 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 17406 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 8726 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 17407 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| | 17408 | .any, |
| 8727 | }, | 17409 | }, |
| 8728 | .patterns = &.{ | 17410 | .patterns = &.{ |
| 8729 | .{ .src = .{ .to_mem, .to_mem } }, | 17411 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8730 | }, | 17412 | }, |
| 8731 | .extra_temps = .{ | 17413 | .extra_temps = .{ |
| 8732 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17414 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8757,9 +17439,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8757,9 +17439,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8757 | .src_constraints = .{ | 17439 | .src_constraints = .{ |
| 8758 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, | 17440 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, |
| 8759 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, | 17441 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, |
| | 17442 | .any, |
| 8760 | }, | 17443 | }, |
| 8761 | .patterns = &.{ | 17444 | .patterns = &.{ |
| 8762 | .{ .src = .{ .to_mem, .to_mem } }, | 17445 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8763 | }, | 17446 | }, |
| 8764 | .extra_temps = .{ | 17447 | .extra_temps = .{ |
| 8765 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17448 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8788,9 +17471,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8788,9 +17471,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8788 | .src_constraints = .{ | 17471 | .src_constraints = .{ |
| 8789 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, | 17472 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, |
| 8790 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, | 17473 | .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, |
| | 17474 | .any, |
| 8791 | }, | 17475 | }, |
| 8792 | .patterns = &.{ | 17476 | .patterns = &.{ |
| 8793 | .{ .src = .{ .to_mem, .to_mem } }, | 17477 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8794 | }, | 17478 | }, |
| 8795 | .extra_temps = .{ | 17479 | .extra_temps = .{ |
| 8796 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17480 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8820,11 +17504,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8820,11 +17504,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8820 | .src_constraints = .{ | 17504 | .src_constraints = .{ |
| 8821 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 17505 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 8822 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 17506 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| | 17507 | .any, |
| 8823 | }, | 17508 | }, |
| 8824 | .patterns = &.{ | 17509 | .patterns = &.{ |
| 8825 | .{ .src = .{ .to_sse, .mem } }, | 17510 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 8826 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 17511 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 8827 | .{ .src = .{ .to_sse, .to_sse } }, | 17512 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 8828 | }, | 17513 | }, |
| 8829 | .extra_temps = .{ | 17514 | .extra_temps = .{ |
| 8830 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 17515 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8851,11 +17536,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8851,11 +17536,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8851 | .src_constraints = .{ | 17536 | .src_constraints = .{ |
| 8852 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 17537 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 8853 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 17538 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| | 17539 | .any, |
| 8854 | }, | 17540 | }, |
| 8855 | .patterns = &.{ | 17541 | .patterns = &.{ |
| 8856 | .{ .src = .{ .to_mut_sse, .mem } }, | 17542 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 8857 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 17543 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 8858 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 17544 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 8859 | }, | 17545 | }, |
| 8860 | .extra_temps = .{ | 17546 | .extra_temps = .{ |
| 8861 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 17547 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8883,11 +17569,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8883,11 +17569,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8883 | .src_constraints = .{ | 17569 | .src_constraints = .{ |
| 8884 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 17570 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| 8885 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 17571 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| | 17572 | .any, |
| 8886 | }, | 17573 | }, |
| 8887 | .patterns = &.{ | 17574 | .patterns = &.{ |
| 8888 | .{ .src = .{ .to_sse, .mem } }, | 17575 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 8889 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 17576 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 8890 | .{ .src = .{ .to_sse, .to_sse } }, | 17577 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 8891 | }, | 17578 | }, |
| 8892 | .extra_temps = .{ | 17579 | .extra_temps = .{ |
| 8893 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 17580 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8914,9 +17601,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8914,9 +17601,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8914 | .src_constraints = .{ | 17601 | .src_constraints = .{ |
| 8915 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 17602 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| 8916 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 17603 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| | 17604 | .any, |
| 8917 | }, | 17605 | }, |
| 8918 | .patterns = &.{ | 17606 | .patterns = &.{ |
| 8919 | .{ .src = .{ .to_mem, .to_mem } }, | 17607 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8920 | }, | 17608 | }, |
| 8921 | .extra_temps = .{ | 17609 | .extra_temps = .{ |
| 8922 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17610 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8950,9 +17638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8950,9 +17638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8950 | .src_constraints = .{ | 17638 | .src_constraints = .{ |
| 8951 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 17639 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 8952 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 17640 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| | 17641 | .any, |
| 8953 | }, | 17642 | }, |
| 8954 | .patterns = &.{ | 17643 | .patterns = &.{ |
| 8955 | .{ .src = .{ .to_mem, .to_mem } }, | 17644 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8956 | }, | 17645 | }, |
| 8957 | .extra_temps = .{ | 17646 | .extra_temps = .{ |
| 8958 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17647 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -8986,9 +17675,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8986,9 +17675,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8986 | .src_constraints = .{ | 17675 | .src_constraints = .{ |
| 8987 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 17676 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 8988 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 17677 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| | 17678 | .any, |
| 8989 | }, | 17679 | }, |
| 8990 | .patterns = &.{ | 17680 | .patterns = &.{ |
| 8991 | .{ .src = .{ .to_mem, .to_mem } }, | 17681 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 8992 | }, | 17682 | }, |
| 8993 | .extra_temps = .{ | 17683 | .extra_temps = .{ |
| 8994 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17684 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -9024,9 +17714,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9024,9 +17714,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9024 | .src_constraints = .{ | 17714 | .src_constraints = .{ |
| 9025 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, | 17715 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 9026 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, | 17716 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| | 17717 | .any, |
| 9027 | }, | 17718 | }, |
| 9028 | .patterns = &.{ | 17719 | .patterns = &.{ |
| 9029 | .{ .src = .{ .to_mem, .to_mem } }, | 17720 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9030 | }, | 17721 | }, |
| 9031 | .extra_temps = .{ | 17722 | .extra_temps = .{ |
| 9032 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17723 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -9055,9 +17746,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9055,9 +17746,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9055 | .src_constraints = .{ | 17746 | .src_constraints = .{ |
| 9056 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, | 17747 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 9057 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, | 17748 | .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| | 17749 | .any, |
| 9058 | }, | 17750 | }, |
| 9059 | .patterns = &.{ | 17751 | .patterns = &.{ |
| 9060 | .{ .src = .{ .to_mem, .to_mem } }, | 17752 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9061 | }, | 17753 | }, |
| 9062 | .extra_temps = .{ | 17754 | .extra_temps = .{ |
| 9063 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17755 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -9084,9 +17776,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9084,9 +17776,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9084 | } }, | 17776 | } }, |
| 9085 | }, .{ | 17777 | }, .{ |
| 9086 | .required_features = .{ .@"64bit", .cmov, null, null }, | 17778 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| 9087 | .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int }, | 17779 | .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any }, |
| 9088 | .patterns = &.{ | 17780 | .patterns = &.{ |
| 9089 | .{ .src = .{ .to_mem, .to_mem } }, | 17781 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9090 | }, | 17782 | }, |
| 9091 | .extra_temps = .{ | 17783 | .extra_temps = .{ |
| 9092 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17784 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -9123,9 +17815,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9123,9 +17815,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9123 | } }, | 17815 | } }, |
| 9124 | }, .{ | 17816 | }, .{ |
| 9125 | .required_features = .{ .@"64bit", null, null, null }, | 17817 | .required_features = .{ .@"64bit", null, null, null }, |
| 9126 | .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int }, | 17818 | .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any }, |
| 9127 | .patterns = &.{ | 17819 | .patterns = &.{ |
| 9128 | .{ .src = .{ .to_mem, .to_mem } }, | 17820 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9129 | }, | 17821 | }, |
| 9130 | .extra_temps = .{ | 17822 | .extra_temps = .{ |
| 9131 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17823 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -9162,9 +17854,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9162,9 +17854,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9162 | } }, | 17854 | } }, |
| 9163 | }, .{ | 17855 | }, .{ |
| 9164 | .required_features = .{ .@"64bit", .cmov, null, null }, | 17856 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| 9165 | .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int }, | 17857 | .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any }, |
| 9166 | .patterns = &.{ | 17858 | .patterns = &.{ |
| 9167 | .{ .src = .{ .to_mem, .to_mem } }, | 17859 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9168 | }, | 17860 | }, |
| 9169 | .extra_temps = .{ | 17861 | .extra_temps = .{ |
| 9170 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17862 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -9199,9 +17891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9199,9 +17891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9199 | } }, | 17891 | } }, |
| 9200 | }, .{ | 17892 | }, .{ |
| 9201 | .required_features = .{ .@"64bit", null, null, null }, | 17893 | .required_features = .{ .@"64bit", null, null, null }, |
| 9202 | .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int }, | 17894 | .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any }, |
| 9203 | .patterns = &.{ | 17895 | .patterns = &.{ |
| 9204 | .{ .src = .{ .to_mem, .to_mem } }, | 17896 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9205 | }, | 17897 | }, |
| 9206 | .extra_temps = .{ | 17898 | .extra_temps = .{ |
| 9207 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 17899 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -9239,9 +17931,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9239,9 +17931,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9239 | .src_constraints = .{ | 17931 | .src_constraints = .{ |
| 9240 | .{ .scalar_float = .{ .of = .word, .is = .word } }, | 17932 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 9241 | .{ .scalar_float = .{ .of = .word, .is = .word } }, | 17933 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 17934 | .any, |
| 9242 | }, | 17935 | }, |
| 9243 | .patterns = &.{ | 17936 | .patterns = &.{ |
| 9244 | .{ .src = .{ .to_sse, .to_sse } }, | 17937 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 9245 | }, | 17938 | }, |
| 9246 | .extra_temps = .{ | 17939 | .extra_temps = .{ |
| 9247 | .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, | 17940 | .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| ... | @@ -9258,8 +17951,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9258,8 +17951,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9258 | .each = .{ .once = &.{ | 17951 | .each = .{ .once = &.{ |
| 9259 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 17952 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 9260 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, | 17953 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| 9261 | .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) }, | 17954 | .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0d, .vp(.unord) }, |
| 9262 | .{ ._, .v_ss, .min, .dst0x, .tmp0x, .dst0x, ._ }, | 17955 | .{ ._, .v_ss, .min, .dst0x, .tmp0x, .dst0d, ._ }, |
| 9263 | .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x }, | 17956 | .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x }, |
| 9264 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, | 17957 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 9265 | } }, | 17958 | } }, |
| ... | @@ -9268,9 +17961,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9268,9 +17961,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9268 | .src_constraints = .{ | 17961 | .src_constraints = .{ |
| 9269 | .{ .scalar_float = .{ .of = .word, .is = .word } }, | 17962 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 9270 | .{ .scalar_float = .{ .of = .word, .is = .word } }, | 17963 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 17964 | .any, |
| 9271 | }, | 17965 | }, |
| 9272 | .patterns = &.{ | 17966 | .patterns = &.{ |
| 9273 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | 17967 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 9274 | }, | 17968 | }, |
| 9275 | .call_frame = .{ .alignment = .@"16" }, | 17969 | .call_frame = .{ .alignment = .@"16" }, |
| 9276 | .extra_temps = .{ | 17970 | .extra_temps = .{ |
| ... | @@ -9294,16 +17988,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9294,16 +17988,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9294 | .src_constraints = .{ | 17988 | .src_constraints = .{ |
| 9295 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, | 17989 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| 9296 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, | 17990 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 17991 | .any, |
| 9297 | }, | 17992 | }, |
| 9298 | .patterns = &.{ | 17993 | .patterns = &.{ |
| 9299 | .{ .src = .{ .mem, .mem } }, | 17994 | .{ .src = .{ .mem, .mem, .none } }, |
| 9300 | .{ .src = .{ .to_sse, .mem } }, | 17995 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 9301 | .{ .src = .{ .mem, .to_sse } }, | 17996 | .{ .src = .{ .mem, .to_sse, .none } }, |
| 9302 | .{ .src = .{ .to_sse, .to_sse } }, | 17997 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 9303 | }, | 17998 | }, |
| 9304 | .extra_temps = .{ | 17999 | .extra_temps = .{ |
| 9305 | .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, | 18000 | .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 9306 | .{ .type = .vector_4_f16, .kind = .{ .rc = .sse } }, | 18001 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| 9307 | .unused, | 18002 | .unused, |
| 9308 | .unused, | 18003 | .unused, |
| 9309 | .unused, | 18004 | .unused, |
| ... | @@ -9326,16 +18021,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9326,16 +18021,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9326 | .src_constraints = .{ | 18021 | .src_constraints = .{ |
| 9327 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, | 18022 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| 9328 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, | 18023 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 18024 | .any, |
| 9329 | }, | 18025 | }, |
| 9330 | .patterns = &.{ | 18026 | .patterns = &.{ |
| 9331 | .{ .src = .{ .mem, .mem } }, | 18027 | .{ .src = .{ .mem, .mem, .none } }, |
| 9332 | .{ .src = .{ .to_sse, .mem } }, | 18028 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 9333 | .{ .src = .{ .mem, .to_sse } }, | 18029 | .{ .src = .{ .mem, .to_sse, .none } }, |
| 9334 | .{ .src = .{ .to_sse, .to_sse } }, | 18030 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 9335 | }, | 18031 | }, |
| 9336 | .extra_temps = .{ | 18032 | .extra_temps = .{ |
| 9337 | .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, | 18033 | .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 9338 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, | 18034 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 9339 | .unused, | 18035 | .unused, |
| 9340 | .unused, | 18036 | .unused, |
| 9341 | .unused, | 18037 | .unused, |
| ... | @@ -9351,22 +18047,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9351,22 +18047,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9351 | .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) }, | 18047 | .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) }, |
| 9352 | .{ ._, .v_ps, .min, .dst0y, .tmp0y, .dst0y, ._ }, | 18048 | .{ ._, .v_ps, .min, .dst0y, .tmp0y, .dst0y, ._ }, |
| 9353 | .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y }, | 18049 | .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y }, |
| 9354 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0y, .rm(.{}), ._ }, | 18050 | .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, |
| 9355 | } }, | 18051 | } }, |
| 9356 | }, .{ | 18052 | }, .{ |
| 9357 | .required_features = .{ .f16c, null, null, null }, | 18053 | .required_features = .{ .f16c, null, null, null }, |
| 9358 | .src_constraints = .{ | 18054 | .src_constraints = .{ |
| 9359 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, | 18055 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| 9360 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, | 18056 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 18057 | .any, |
| 9361 | }, | 18058 | }, |
| 9362 | .patterns = &.{ | 18059 | .patterns = &.{ |
| 9363 | .{ .src = .{ .to_mem, .to_mem } }, | 18060 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9364 | }, | 18061 | }, |
| 9365 | .extra_temps = .{ | 18062 | .extra_temps = .{ |
| 9366 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 18063 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 9367 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, | 18064 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 9368 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, | 18065 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 9369 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, | 18066 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 9370 | .unused, | 18067 | .unused, |
| 9371 | .unused, | 18068 | .unused, |
| 9372 | .unused, | 18069 | .unused, |
| ... | @@ -9391,9 +18088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9391,9 +18088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9391 | .src_constraints = .{ | 18088 | .src_constraints = .{ |
| 9392 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 18089 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9393 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 18090 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 18091 | .any, |
| 9394 | }, | 18092 | }, |
| 9395 | .patterns = &.{ | 18093 | .patterns = &.{ |
| 9396 | .{ .src = .{ .to_mem, .to_mem } }, | 18094 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9397 | }, | 18095 | }, |
| 9398 | .call_frame = .{ .alignment = .@"16" }, | 18096 | .call_frame = .{ .alignment = .@"16" }, |
| 9399 | .extra_temps = .{ | 18097 | .extra_temps = .{ |
| ... | @@ -9424,9 +18122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9424,9 +18122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9424 | .src_constraints = .{ | 18122 | .src_constraints = .{ |
| 9425 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 18123 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9426 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 18124 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 18125 | .any, |
| 9427 | }, | 18126 | }, |
| 9428 | .patterns = &.{ | 18127 | .patterns = &.{ |
| 9429 | .{ .src = .{ .to_mem, .to_mem } }, | 18128 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9430 | }, | 18129 | }, |
| 9431 | .call_frame = .{ .alignment = .@"16" }, | 18130 | .call_frame = .{ .alignment = .@"16" }, |
| 9432 | .extra_temps = .{ | 18131 | .extra_temps = .{ |
| ... | @@ -9458,9 +18157,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9458,9 +18157,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9458 | .src_constraints = .{ | 18157 | .src_constraints = .{ |
| 9459 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 18158 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9460 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 18159 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 18160 | .any, |
| 9461 | }, | 18161 | }, |
| 9462 | .patterns = &.{ | 18162 | .patterns = &.{ |
| 9463 | .{ .src = .{ .to_mem, .to_mem } }, | 18163 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9464 | }, | 18164 | }, |
| 9465 | .call_frame = .{ .alignment = .@"16" }, | 18165 | .call_frame = .{ .alignment = .@"16" }, |
| 9466 | .extra_temps = .{ | 18166 | .extra_temps = .{ |
| ... | @@ -9493,9 +18193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9493,9 +18193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9493 | .src_constraints = .{ | 18193 | .src_constraints = .{ |
| 9494 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 18194 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9495 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 18195 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 18196 | .any, |
| 9496 | }, | 18197 | }, |
| 9497 | .patterns = &.{ | 18198 | .patterns = &.{ |
| 9498 | .{ .src = .{ .to_mem, .to_mem } }, | 18199 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9499 | }, | 18200 | }, |
| 9500 | .call_frame = .{ .alignment = .@"16" }, | 18201 | .call_frame = .{ .alignment = .@"16" }, |
| 9501 | .extra_temps = .{ | 18202 | .extra_temps = .{ |
| ... | @@ -9531,9 +18232,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9531,9 +18232,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9531 | .src_constraints = .{ | 18232 | .src_constraints = .{ |
| 9532 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 18233 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 9533 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 18234 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 18235 | .any, |
| 9534 | }, | 18236 | }, |
| 9535 | .patterns = &.{ | 18237 | .patterns = &.{ |
| 9536 | .{ .src = .{ .to_sse, .to_sse } }, | 18238 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 9537 | }, | 18239 | }, |
| 9538 | .extra_temps = .{ | 18240 | .extra_temps = .{ |
| 9539 | .{ .type = .f32, .kind = .{ .rc = .sse } }, | 18241 | .{ .type = .f32, .kind = .{ .rc = .sse } }, |
| ... | @@ -9548,8 +18250,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9548,8 +18250,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9548 | }, | 18250 | }, |
| 9549 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 18251 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9550 | .each = .{ .once = &.{ | 18252 | .each = .{ .once = &.{ |
| 9551 | .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) }, | 18253 | .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0d, .vp(.unord) }, |
| 9552 | .{ ._, .v_ss, .min, .dst0x, .src1x, .src0x, ._ }, | 18254 | .{ ._, .v_ss, .min, .dst0x, .src1x, .src0d, ._ }, |
| 9553 | .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, | 18255 | .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, |
| 9554 | } }, | 18256 | } }, |
| 9555 | }, .{ | 18257 | }, .{ |
| ... | @@ -9557,15 +18259,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9557,15 +18259,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9557 | .src_constraints = .{ | 18259 | .src_constraints = .{ |
| 9558 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 18260 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 9559 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 18261 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 18262 | .any, |
| 9560 | }, | 18263 | }, |
| 9561 | .patterns = &.{ | 18264 | .patterns = &.{ |
| 9562 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, | 18265 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, |
| 9563 | }, | 18266 | }, |
| 9564 | .dst_temps = .{.{ .rc = .sse }}, | 18267 | .dst_temps = .{.{ .rc = .sse }}, |
| 9565 | .each = .{ .once = &.{ | 18268 | .each = .{ .once = &.{ |
| 9566 | .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ }, | 18269 | .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ }, |
| 9567 | .{ ._, ._ss, .min, .dst0x, .src0x, ._, ._ }, | 18270 | .{ ._, ._ss, .min, .dst0x, .src0d, ._, ._ }, |
| 9568 | .{ ._, ._ss, .cmp, .src0x, .src0x, .vp(.unord), ._ }, | 18271 | .{ ._, ._ss, .cmp, .src0x, .src0d, .sp(.unord), ._ }, |
| 9569 | .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ }, | 18272 | .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ }, |
| 9570 | } }, | 18273 | } }, |
| 9571 | }, .{ | 18274 | }, .{ |
| ... | @@ -9573,9 +18276,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9573,9 +18276,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9573 | .src_constraints = .{ | 18276 | .src_constraints = .{ |
| 9574 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 18277 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 9575 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 18278 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 18279 | .any, |
| 9576 | }, | 18280 | }, |
| 9577 | .patterns = &.{ | 18281 | .patterns = &.{ |
| 9578 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 18282 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 9579 | }, | 18283 | }, |
| 9580 | .extra_temps = .{ | 18284 | .extra_temps = .{ |
| 9581 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, | 18285 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| ... | @@ -9591,8 +18295,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9591,8 +18295,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9591 | .dst_temps = .{.{ .ref = .src0 }}, | 18295 | .dst_temps = .{.{ .ref = .src0 }}, |
| 9592 | .each = .{ .once = &.{ | 18296 | .each = .{ .once = &.{ |
| 9593 | .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ }, | 18297 | .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ }, |
| 9594 | .{ ._, ._ss, .min, .tmp0x, .src0x, ._, ._ }, | 18298 | .{ ._, ._ss, .min, .tmp0x, .src0d, ._, ._ }, |
| 9595 | .{ ._, ._ss, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, | 18299 | .{ ._, ._ss, .cmp, .dst0x, .src0d, .sp(.ord), ._ }, |
| 9596 | .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ }, | 18300 | .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ }, |
| 9597 | .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ }, | 18301 | .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ }, |
| 9598 | .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, | 18302 | .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, |
| ... | @@ -9602,9 +18306,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9602,9 +18306,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9602 | .src_constraints = .{ | 18306 | .src_constraints = .{ |
| 9603 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 18307 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 9604 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 18308 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 18309 | .any, |
| 9605 | }, | 18310 | }, |
| 9606 | .patterns = &.{ | 18311 | .patterns = &.{ |
| 9607 | .{ .src = .{ .to_sse, .to_sse } }, | 18312 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 9608 | }, | 18313 | }, |
| 9609 | .extra_temps = .{ | 18314 | .extra_temps = .{ |
| 9610 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, | 18315 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| ... | @@ -9628,17 +18333,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9628,17 +18333,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9628 | .src_constraints = .{ | 18333 | .src_constraints = .{ |
| 9629 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 18334 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 9630 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 18335 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 18336 | .any, |
| 9631 | }, | 18337 | }, |
| 9632 | .patterns = &.{ | 18338 | .patterns = &.{ |
| 9633 | .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } }, | 18339 | .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } }, |
| 9634 | .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } }, | 18340 | .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } }, |
| 9635 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, | 18341 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, |
| 9636 | }, | 18342 | }, |
| 9637 | .dst_temps = .{.{ .rc = .sse }}, | 18343 | .dst_temps = .{.{ .rc = .sse }}, |
| 9638 | .each = .{ .once = &.{ | 18344 | .each = .{ .once = &.{ |
| 9639 | .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ }, | 18345 | .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ }, |
| 9640 | .{ ._, ._ps, .min, .dst0x, .src0x, ._, ._ }, | 18346 | .{ ._, ._ps, .min, .dst0x, .src0x, ._, ._ }, |
| 9641 | .{ ._, ._ps, .cmp, .src0x, .src0x, .vp(.unord), ._ }, | 18347 | .{ ._, ._ps, .cmp, .src0x, .src0x, .sp(.unord), ._ }, |
| 9642 | .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ }, | 18348 | .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ }, |
| 9643 | } }, | 18349 | } }, |
| 9644 | }, .{ | 18350 | }, .{ |
| ... | @@ -9646,11 +18352,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9646,11 +18352,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9646 | .src_constraints = .{ | 18352 | .src_constraints = .{ |
| 9647 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 18353 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 9648 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 18354 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 18355 | .any, |
| 9649 | }, | 18356 | }, |
| 9650 | .patterns = &.{ | 18357 | .patterns = &.{ |
| 9651 | .{ .src = .{ .to_mut_sse, .mem } }, | 18358 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 9652 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 18359 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 9653 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 18360 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 9654 | }, | 18361 | }, |
| 9655 | .extra_temps = .{ | 18362 | .extra_temps = .{ |
| 9656 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, | 18363 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| ... | @@ -9667,7 +18374,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9667,7 +18374,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9667 | .each = .{ .once = &.{ | 18374 | .each = .{ .once = &.{ |
| 9668 | .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ }, | 18375 | .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ }, |
| 9669 | .{ ._, ._ps, .min, .tmp0x, .src0x, ._, ._ }, | 18376 | .{ ._, ._ps, .min, .tmp0x, .src0x, ._, ._ }, |
| 9670 | .{ ._, ._ps, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, | 18377 | .{ ._, ._ps, .cmp, .dst0x, .src0x, .sp(.ord), ._ }, |
| 9671 | .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ }, | 18378 | .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ }, |
| 9672 | .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ }, | 18379 | .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ }, |
| 9673 | .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, | 18380 | .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, |
| ... | @@ -9677,9 +18384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9677,9 +18384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9677 | .src_constraints = .{ | 18384 | .src_constraints = .{ |
| 9678 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, | 18385 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 9679 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, | 18386 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 18387 | .any, |
| 9680 | }, | 18388 | }, |
| 9681 | .patterns = &.{ | 18389 | .patterns = &.{ |
| 9682 | .{ .src = .{ .to_sse, .to_sse } }, | 18390 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 9683 | }, | 18391 | }, |
| 9684 | .extra_temps = .{ | 18392 | .extra_temps = .{ |
| 9685 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, | 18393 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| ... | @@ -9703,9 +18411,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9703,9 +18411,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9703 | .src_constraints = .{ | 18411 | .src_constraints = .{ |
| 9704 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, | 18412 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 9705 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, | 18413 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 18414 | .any, |
| 9706 | }, | 18415 | }, |
| 9707 | .patterns = &.{ | 18416 | .patterns = &.{ |
| 9708 | .{ .src = .{ .to_mem, .to_mem } }, | 18417 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9709 | }, | 18418 | }, |
| 9710 | .extra_temps = .{ | 18419 | .extra_temps = .{ |
| 9711 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 18420 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -9736,9 +18445,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9736,9 +18445,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9736 | .src_constraints = .{ | 18445 | .src_constraints = .{ |
| 9737 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, | 18446 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| 9738 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, | 18447 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 18448 | .any, |
| 9739 | }, | 18449 | }, |
| 9740 | .patterns = &.{ | 18450 | .patterns = &.{ |
| 9741 | .{ .src = .{ .to_mem, .to_mem } }, | 18451 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9742 | }, | 18452 | }, |
| 9743 | .extra_temps = .{ | 18453 | .extra_temps = .{ |
| 9744 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 18454 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -9759,7 +18469,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9759,7 +18469,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9759 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 18469 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 9760 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, | 18470 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 9761 | .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ }, | 18471 | .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ }, |
| 9762 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, | 18472 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, |
| 9763 | .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, | 18473 | .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| 9764 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | 18474 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 9765 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 18475 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| ... | @@ -9770,9 +18480,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9770,9 +18480,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9770 | .src_constraints = .{ | 18480 | .src_constraints = .{ |
| 9771 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, | 18481 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| 9772 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, | 18482 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 18483 | .any, |
| 9773 | }, | 18484 | }, |
| 9774 | .patterns = &.{ | 18485 | .patterns = &.{ |
| 9775 | .{ .src = .{ .to_mem, .to_mem } }, | 18486 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 9776 | }, | 18487 | }, |
| 9777 | .extra_temps = .{ | 18488 | .extra_temps = .{ |
| 9778 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 18489 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -9793,7 +18504,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9793,7 +18504,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9793 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 18504 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 9794 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, | 18505 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 9795 | .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ }, | 18506 | .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ }, |
| 9796 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ }, | 18507 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, |
| 9797 | .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ }, | 18508 | .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ }, |
| 9798 | .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, | 18509 | .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, |
| 9799 | .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ }, | 18510 | .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ }, |
| ... | @@ -9806,9 +18517,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9806,9 +18517,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9806 | .src_constraints = .{ | 18517 | .src_constraints = .{ |
| 9807 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | 18518 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 9808 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | 18519 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 18520 | .any, |
| 9809 | }, | 18521 | }, |
| 9810 | .patterns = &.{ | 18522 | .patterns = &.{ |
| 9811 | .{ .src = .{ .to_sse, .to_sse } }, | 18523 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 9812 | }, | 18524 | }, |
| 9813 | .extra_temps = .{ | 18525 | .extra_temps = .{ |
| 9814 | .{ .type = .f64, .kind = .{ .rc = .sse } }, | 18526 | .{ .type = .f64, .kind = .{ .rc = .sse } }, |
| ... | @@ -9823,8 +18535,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9823,8 +18535,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9823 | }, | 18535 | }, |
| 9824 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 18536 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9825 | .each = .{ .once = &.{ | 18537 | .each = .{ .once = &.{ |
| 9826 | .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) }, | 18538 | .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0q, .vp(.unord) }, |
| 9827 | .{ ._, .v_sd, .min, .dst0x, .src1x, .src0x, ._ }, | 18539 | .{ ._, .v_sd, .min, .dst0x, .src1x, .src0q, ._ }, |
| 9828 | .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, | 18540 | .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, |
| 9829 | } }, | 18541 | } }, |
| 9830 | }, .{ | 18542 | }, .{ |
| ... | @@ -9832,15 +18544,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9832,15 +18544,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9832 | .src_constraints = .{ | 18544 | .src_constraints = .{ |
| 9833 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | 18545 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 9834 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | 18546 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 18547 | .any, |
| 9835 | }, | 18548 | }, |
| 9836 | .patterns = &.{ | 18549 | .patterns = &.{ |
| 9837 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, | 18550 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, |
| 9838 | }, | 18551 | }, |
| 9839 | .dst_temps = .{.{ .rc = .sse }}, | 18552 | .dst_temps = .{.{ .rc = .sse }}, |
| 9840 | .each = .{ .once = &.{ | 18553 | .each = .{ .once = &.{ |
| 9841 | .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ }, | 18554 | .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ }, |
| 9842 | .{ ._, ._sd, .min, .dst0x, .src0x, ._, ._ }, | 18555 | .{ ._, ._sd, .min, .dst0x, .src0q, ._, ._ }, |
| 9843 | .{ ._, ._sd, .cmp, .src0x, .src0x, .vp(.unord), ._ }, | 18556 | .{ ._, ._sd, .cmp, .src0x, .src0q, .sp(.unord), ._ }, |
| 9844 | .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ }, | 18557 | .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ }, |
| 9845 | } }, | 18558 | } }, |
| 9846 | }, .{ | 18559 | }, .{ |
| ... | @@ -9848,9 +18561,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9848,9 +18561,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9848 | .src_constraints = .{ | 18561 | .src_constraints = .{ |
| 9849 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | 18562 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 9850 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | 18563 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 18564 | .any, |
| 9851 | }, | 18565 | }, |
| 9852 | .patterns = &.{ | 18566 | .patterns = &.{ |
| 9853 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 18567 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 9854 | }, | 18568 | }, |
| 9855 | .extra_temps = .{ | 18569 | .extra_temps = .{ |
| 9856 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, | 18570 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| ... | @@ -9866,8 +18580,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9866,8 +18580,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9866 | .dst_temps = .{.{ .ref = .src0 }}, | 18580 | .dst_temps = .{.{ .ref = .src0 }}, |
| 9867 | .each = .{ .once = &.{ | 18581 | .each = .{ .once = &.{ |
| 9868 | .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ }, | 18582 | .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ }, |
| 9869 | .{ ._, ._sd, .min, .tmp0x, .src0x, ._, ._ }, | 18583 | .{ ._, ._sd, .min, .tmp0x, .src0q, ._, ._ }, |
| 9870 | .{ ._, ._sd, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, | 18584 | .{ ._, ._sd, .cmp, .dst0x, .src0q, .sp(.ord), ._ }, |
| 9871 | .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ }, | 18585 | .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ }, |
| 9872 | .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ }, | 18586 | .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ }, |
| 9873 | .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, | 18587 | .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, |
| ... | @@ -9877,9 +18591,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9877,9 +18591,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9877 | .src_constraints = .{ | 18591 | .src_constraints = .{ |
| 9878 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | 18592 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 9879 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | 18593 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 18594 | .any, |
| 9880 | }, | 18595 | }, |
| 9881 | .patterns = &.{ | 18596 | .patterns = &.{ |
| 9882 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | 18597 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 9883 | }, | 18598 | }, |
| 9884 | .call_frame = .{ .alignment = .@"16" }, | 18599 | .call_frame = .{ .alignment = .@"16" }, |
| 9885 | .extra_temps = .{ | 18600 | .extra_temps = .{ |
| ... | @@ -9903,9 +18618,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9903,9 +18618,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9903 | .src_constraints = .{ | 18618 | .src_constraints = .{ |
| 9904 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | 18619 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 9905 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | 18620 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 18621 | .any, |
| 9906 | }, | 18622 | }, |
| 9907 | .patterns = &.{ | 18623 | .patterns = &.{ |
| 9908 | .{ .src = .{ .to_sse, .to_sse } }, | 18624 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 9909 | }, | 18625 | }, |
| 9910 | .extra_temps = .{ | 18626 | .extra_temps = .{ |
| 9911 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, | 18627 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| ... | @@ -9929,17 +18645,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9929,17 +18645,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9929 | .src_constraints = .{ | 18645 | .src_constraints = .{ |
| 9930 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | 18646 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 9931 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | 18647 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 18648 | .any, |
| 9932 | }, | 18649 | }, |
| 9933 | .patterns = &.{ | 18650 | .patterns = &.{ |
| 9934 | .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } }, | 18651 | .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } }, |
| 9935 | .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } }, | 18652 | .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } }, |
| 9936 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, | 18653 | .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, |
| 9937 | }, | 18654 | }, |
| 9938 | .dst_temps = .{.{ .rc = .sse }}, | 18655 | .dst_temps = .{.{ .rc = .sse }}, |
| 9939 | .each = .{ .once = &.{ | 18656 | .each = .{ .once = &.{ |
| 9940 | .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ }, | 18657 | .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ }, |
| 9941 | .{ ._, ._pd, .min, .dst0x, .src0x, ._, ._ }, | 18658 | .{ ._, ._pd, .min, .dst0x, .src0x, ._, ._ }, |
| 9942 | .{ ._, ._pd, .cmp, .src0x, .src0x, .vp(.unord), ._ }, | 18659 | .{ ._, ._pd, .cmp, .src0x, .src0x, .sp(.unord), ._ }, |
| 9943 | .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ }, | 18660 | .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ }, |
| 9944 | } }, | 18661 | } }, |
| 9945 | }, .{ | 18662 | }, .{ |
| ... | @@ -9947,11 +18664,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9947,11 +18664,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9947 | .src_constraints = .{ | 18664 | .src_constraints = .{ |
| 9948 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | 18665 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 9949 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | 18666 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 18667 | .any, |
| 9950 | }, | 18668 | }, |
| 9951 | .patterns = &.{ | 18669 | .patterns = &.{ |
| 9952 | .{ .src = .{ .to_mut_sse, .mem } }, | 18670 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 9953 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 18671 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 9954 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 18672 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 9955 | }, | 18673 | }, |
| 9956 | .extra_temps = .{ | 18674 | .extra_temps = .{ |
| 9957 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, | 18675 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| ... | @@ -9968,7 +18686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9968,7 +18686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9968 | .each = .{ .once = &.{ | 18686 | .each = .{ .once = &.{ |
| 9969 | .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ }, | 18687 | .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ }, |
| 9970 | .{ ._, ._pd, .min, .tmp0x, .src0x, ._, ._ }, | 18688 | .{ ._, ._pd, .min, .tmp0x, .src0x, ._, ._ }, |
| 9971 | .{ ._, ._pd, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, | 18689 | .{ ._, ._pd, .cmp, .dst0x, .src0x, .sp(.ord), ._ }, |
| 9972 | .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ }, | 18690 | .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ }, |
| 9973 | .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ }, | 18691 | .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ }, |
| 9974 | .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, | 18692 | .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, |
| ... | @@ -9978,9 +18696,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9978,9 +18696,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9978 | .src_constraints = .{ | 18696 | .src_constraints = .{ |
| 9979 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, | 18697 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| 9980 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, | 18698 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 18699 | .any, |
| 9981 | }, | 18700 | }, |
| 9982 | .patterns = &.{ | 18701 | .patterns = &.{ |
| 9983 | .{ .src = .{ .to_sse, .to_sse } }, | 18702 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 9984 | }, | 18703 | }, |
| 9985 | .extra_temps = .{ | 18704 | .extra_temps = .{ |
| 9986 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, | 18705 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| ... | @@ -10004,9 +18723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10004,9 +18723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10004 | .src_constraints = .{ | 18723 | .src_constraints = .{ |
| 10005 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, | 18724 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| 10006 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, | 18725 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 18726 | .any, |
| 10007 | }, | 18727 | }, |
| 10008 | .patterns = &.{ | 18728 | .patterns = &.{ |
| 10009 | .{ .src = .{ .to_mem, .to_mem } }, | 18729 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10010 | }, | 18730 | }, |
| 10011 | .extra_temps = .{ | 18731 | .extra_temps = .{ |
| 10012 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 18732 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10037,9 +18757,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10037,9 +18757,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10037 | .src_constraints = .{ | 18757 | .src_constraints = .{ |
| 10038 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, | 18758 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| 10039 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, | 18759 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 18760 | .any, |
| 10040 | }, | 18761 | }, |
| 10041 | .patterns = &.{ | 18762 | .patterns = &.{ |
| 10042 | .{ .src = .{ .to_mem, .to_mem } }, | 18763 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10043 | }, | 18764 | }, |
| 10044 | .extra_temps = .{ | 18765 | .extra_temps = .{ |
| 10045 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 18766 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10060,7 +18781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10060,7 +18781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10060 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 18781 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 10061 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, | 18782 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 10062 | .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ }, | 18783 | .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ }, |
| 10063 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, | 18784 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, |
| 10064 | .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, | 18785 | .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| 10065 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | 18786 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 10066 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 18787 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| ... | @@ -10071,9 +18792,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10071,9 +18792,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10071 | .src_constraints = .{ | 18792 | .src_constraints = .{ |
| 10072 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, | 18793 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| 10073 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, | 18794 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 18795 | .any, |
| 10074 | }, | 18796 | }, |
| 10075 | .patterns = &.{ | 18797 | .patterns = &.{ |
| 10076 | .{ .src = .{ .to_mem, .to_mem } }, | 18798 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10077 | }, | 18799 | }, |
| 10078 | .extra_temps = .{ | 18800 | .extra_temps = .{ |
| 10079 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 18801 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10094,7 +18816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10094,7 +18816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10094 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 18816 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 10095 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, | 18817 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 10096 | .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ }, | 18818 | .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ }, |
| 10097 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ }, | 18819 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, |
| 10098 | .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ }, | 18820 | .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ }, |
| 10099 | .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, | 18821 | .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, |
| 10100 | .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ }, | 18822 | .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ }, |
| ... | @@ -10107,9 +18829,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10107,9 +18829,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10107 | .src_constraints = .{ | 18829 | .src_constraints = .{ |
| 10108 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, | 18830 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 10109 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, | 18831 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 18832 | .any, |
| 10110 | }, | 18833 | }, |
| 10111 | .patterns = &.{ | 18834 | .patterns = &.{ |
| 10112 | .{ .src = .{ .to_mem, .to_mem } }, | 18835 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10113 | }, | 18836 | }, |
| 10114 | .call_frame = .{ .alignment = .@"16" }, | 18837 | .call_frame = .{ .alignment = .@"16" }, |
| 10115 | .extra_temps = .{ | 18838 | .extra_temps = .{ |
| ... | @@ -10141,11 +18864,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10141,11 +18864,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10141 | .src_constraints = .{ | 18864 | .src_constraints = .{ |
| 10142 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, | 18865 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 10143 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, | 18866 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 18867 | .any, |
| 10144 | }, | 18868 | }, |
| 10145 | .patterns = &.{ | 18869 | .patterns = &.{ |
| 10146 | .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, | 18870 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| 10147 | .{ .src = .{ .mem, .to_x87 } }, | 18871 | .{ .src = .{ .mem, .to_x87, .none } }, |
| 10148 | .{ .src = .{ .to_x87, .to_x87 } }, | 18872 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| 10149 | }, | 18873 | }, |
| 10150 | .extra_temps = .{ | 18874 | .extra_temps = .{ |
| 10151 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 18875 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| ... | @@ -10173,11 +18897,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10173,11 +18897,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10173 | .src_constraints = .{ | 18897 | .src_constraints = .{ |
| 10174 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, | 18898 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 10175 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, | 18899 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 18900 | .any, |
| 10176 | }, | 18901 | }, |
| 10177 | .patterns = &.{ | 18902 | .patterns = &.{ |
| 10178 | .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, | 18903 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| 10179 | .{ .src = .{ .mem, .to_x87 } }, | 18904 | .{ .src = .{ .mem, .to_x87, .none } }, |
| 10180 | .{ .src = .{ .to_x87, .to_x87 } }, | 18905 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| 10181 | }, | 18906 | }, |
| 10182 | .extra_temps = .{ | 18907 | .extra_temps = .{ |
| 10183 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 18908 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| ... | @@ -10211,11 +18936,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10211,11 +18936,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10211 | .src_constraints = .{ | 18936 | .src_constraints = .{ |
| 10212 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, | 18937 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 10213 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, | 18938 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 18939 | .any, |
| 10214 | }, | 18940 | }, |
| 10215 | .patterns = &.{ | 18941 | .patterns = &.{ |
| 10216 | .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, | 18942 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| 10217 | .{ .src = .{ .mem, .to_x87 } }, | 18943 | .{ .src = .{ .mem, .to_x87, .none } }, |
| 10218 | .{ .src = .{ .to_x87, .to_x87 } }, | 18944 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| 10219 | }, | 18945 | }, |
| 10220 | .extra_temps = .{ | 18946 | .extra_temps = .{ |
| 10221 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 18947 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| ... | @@ -10249,9 +18975,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10249,9 +18975,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10249 | .src_constraints = .{ | 18975 | .src_constraints = .{ |
| 10250 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | 18976 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 10251 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | 18977 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 18978 | .any, |
| 10252 | }, | 18979 | }, |
| 10253 | .patterns = &.{ | 18980 | .patterns = &.{ |
| 10254 | .{ .src = .{ .to_mem, .to_mem } }, | 18981 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10255 | }, | 18982 | }, |
| 10256 | .extra_temps = .{ | 18983 | .extra_temps = .{ |
| 10257 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 18984 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10284,9 +19011,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10284,9 +19011,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10284 | .src_constraints = .{ | 19011 | .src_constraints = .{ |
| 10285 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | 19012 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 10286 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | 19013 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 19014 | .any, |
| 10287 | }, | 19015 | }, |
| 10288 | .patterns = &.{ | 19016 | .patterns = &.{ |
| 10289 | .{ .src = .{ .to_mem, .to_mem } }, | 19017 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10290 | }, | 19018 | }, |
| 10291 | .extra_temps = .{ | 19019 | .extra_temps = .{ |
| 10292 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19020 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10325,9 +19053,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10325,9 +19053,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10325 | .src_constraints = .{ | 19053 | .src_constraints = .{ |
| 10326 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | 19054 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 10327 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | 19055 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 19056 | .any, |
| 10328 | }, | 19057 | }, |
| 10329 | .patterns = &.{ | 19058 | .patterns = &.{ |
| 10330 | .{ .src = .{ .to_mem, .to_mem } }, | 19059 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10331 | }, | 19060 | }, |
| 10332 | .extra_temps = .{ | 19061 | .extra_temps = .{ |
| 10333 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19062 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10366,9 +19095,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10366,9 +19095,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10366 | .src_constraints = .{ | 19095 | .src_constraints = .{ |
| 10367 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, | 19096 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| 10368 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, | 19097 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 19098 | .any, |
| 10369 | }, | 19099 | }, |
| 10370 | .patterns = &.{ | 19100 | .patterns = &.{ |
| 10371 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | 19101 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 10372 | }, | 19102 | }, |
| 10373 | .call_frame = .{ .alignment = .@"16" }, | 19103 | .call_frame = .{ .alignment = .@"16" }, |
| 10374 | .extra_temps = .{ | 19104 | .extra_temps = .{ |
| ... | @@ -10392,9 +19122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10392,9 +19122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10392 | .src_constraints = .{ | 19122 | .src_constraints = .{ |
| 10393 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 19123 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 10394 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 19124 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 19125 | .any, |
| 10395 | }, | 19126 | }, |
| 10396 | .patterns = &.{ | 19127 | .patterns = &.{ |
| 10397 | .{ .src = .{ .to_mem, .to_mem } }, | 19128 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10398 | }, | 19129 | }, |
| 10399 | .call_frame = .{ .alignment = .@"16" }, | 19130 | .call_frame = .{ .alignment = .@"16" }, |
| 10400 | .extra_temps = .{ | 19131 | .extra_temps = .{ |
| ... | @@ -10424,9 +19155,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10424,9 +19155,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10424 | .src_constraints = .{ | 19155 | .src_constraints = .{ |
| 10425 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 19156 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 10426 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 19157 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 19158 | .any, |
| 10427 | }, | 19159 | }, |
| 10428 | .patterns = &.{ | 19160 | .patterns = &.{ |
| 10429 | .{ .src = .{ .to_mem, .to_mem } }, | 19161 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10430 | }, | 19162 | }, |
| 10431 | .call_frame = .{ .alignment = .@"16" }, | 19163 | .call_frame = .{ .alignment = .@"16" }, |
| 10432 | .extra_temps = .{ | 19164 | .extra_temps = .{ |
| ... | @@ -10456,9 +19188,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10456,9 +19188,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10456 | .src_constraints = .{ | 19188 | .src_constraints = .{ |
| 10457 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 19189 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 10458 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 19190 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 19191 | .any, |
| 10459 | }, | 19192 | }, |
| 10460 | .patterns = &.{ | 19193 | .patterns = &.{ |
| 10461 | .{ .src = .{ .to_mem, .to_mem } }, | 19194 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10462 | }, | 19195 | }, |
| 10463 | .call_frame = .{ .alignment = .@"16" }, | 19196 | .call_frame = .{ .alignment = .@"16" }, |
| 10464 | .extra_temps = .{ | 19197 | .extra_temps = .{ |
| ... | @@ -10530,17 +19263,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10530,17 +19263,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10530 | })) { | 19263 | })) { |
| 10531 | else => unreachable, | 19264 | else => unreachable, |
| 10532 | inline .@"and", .@"or", .xor => |mir_tag| comptime &.{ .{ | 19265 | inline .@"and", .@"or", .xor => |mir_tag| comptime &.{ .{ |
| 10533 | .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte } }, | 19266 | .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any }, |
| 10534 | .patterns = &.{ | 19267 | .patterns = &.{ |
| 10535 | .{ .src = .{ .mut_mem, .imm8 } }, | 19268 | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 10536 | .{ .src = .{ .imm8, .mut_mem }, .commute = .{ 0, 1 } }, | 19269 | .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 10537 | .{ .src = .{ .to_mut_gpr, .imm8 } }, | 19270 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 10538 | .{ .src = .{ .imm8, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 19271 | .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 10539 | .{ .src = .{ .mut_mem, .to_gpr } }, | 19272 | .{ .src = .{ .mut_mem, .to_gpr, .none } }, |
| 10540 | .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, | 19273 | .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 10541 | .{ .src = .{ .to_mut_gpr, .mem } }, | 19274 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 10542 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 19275 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 10543 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 19276 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 10544 | }, | 19277 | }, |
| 10545 | .dst_temps = .{.{ .ref = .src0 }}, | 19278 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10546 | .clobbers = .{ .eflags = true }, | 19279 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10548,17 +19281,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10548,17 +19281,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10548 | .{ ._, ._, mir_tag, .dst0b, .src1b, ._, ._ }, | 19281 | .{ ._, ._, mir_tag, .dst0b, .src1b, ._, ._ }, |
| 10549 | } }, | 19282 | } }, |
| 10550 | }, .{ | 19283 | }, .{ |
| 10551 | .src_constraints = .{ .{ .size = .word }, .{ .size = .word } }, | 19284 | .src_constraints = .{ .{ .size = .word }, .{ .size = .word }, .any }, |
| 10552 | .patterns = &.{ | 19285 | .patterns = &.{ |
| 10553 | .{ .src = .{ .mut_mem, .imm16 } }, | 19286 | .{ .src = .{ .mut_mem, .imm16, .none } }, |
| 10554 | .{ .src = .{ .imm16, .mut_mem }, .commute = .{ 0, 1 } }, | 19287 | .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 10555 | .{ .src = .{ .to_mut_gpr, .imm16 } }, | 19288 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 10556 | .{ .src = .{ .imm16, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 19289 | .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 10557 | .{ .src = .{ .mut_mem, .to_gpr } }, | 19290 | .{ .src = .{ .mut_mem, .to_gpr, .none } }, |
| 10558 | .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, | 19291 | .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 10559 | .{ .src = .{ .to_mut_gpr, .mem } }, | 19292 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 10560 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 19293 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 10561 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 19294 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 10562 | }, | 19295 | }, |
| 10563 | .dst_temps = .{.{ .ref = .src0 }}, | 19296 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10564 | .clobbers = .{ .eflags = true }, | 19297 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10566,17 +19299,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10566,17 +19299,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10566 | .{ ._, ._, mir_tag, .dst0w, .src1w, ._, ._ }, | 19299 | .{ ._, ._, mir_tag, .dst0w, .src1w, ._, ._ }, |
| 10567 | } }, | 19300 | } }, |
| 10568 | }, .{ | 19301 | }, .{ |
| 10569 | .src_constraints = .{ .{ .size = .dword }, .{ .size = .dword } }, | 19302 | .src_constraints = .{ .{ .size = .dword }, .{ .size = .dword }, .any }, |
| 10570 | .patterns = &.{ | 19303 | .patterns = &.{ |
| 10571 | .{ .src = .{ .mut_mem, .imm32 } }, | 19304 | .{ .src = .{ .mut_mem, .imm32, .none } }, |
| 10572 | .{ .src = .{ .imm32, .mut_mem }, .commute = .{ 0, 1 } }, | 19305 | .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 10573 | .{ .src = .{ .to_mut_gpr, .imm32 } }, | 19306 | .{ .src = .{ .to_mut_gpr, .imm32, .none } }, |
| 10574 | .{ .src = .{ .imm32, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 19307 | .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 10575 | .{ .src = .{ .mut_mem, .to_gpr } }, | 19308 | .{ .src = .{ .mut_mem, .to_gpr, .none } }, |
| 10576 | .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, | 19309 | .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 10577 | .{ .src = .{ .to_mut_gpr, .mem } }, | 19310 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 10578 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 19311 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 10579 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 19312 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 10580 | }, | 19313 | }, |
| 10581 | .dst_temps = .{.{ .ref = .src0 }}, | 19314 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10582 | .clobbers = .{ .eflags = true }, | 19315 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10585,17 +19318,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10585,17 +19318,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10585 | } }, | 19318 | } }, |
| 10586 | }, .{ | 19319 | }, .{ |
| 10587 | .required_features = .{ .@"64bit", null, null, null }, | 19320 | .required_features = .{ .@"64bit", null, null, null }, |
| 10588 | .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword } }, | 19321 | .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any }, |
| 10589 | .patterns = &.{ | 19322 | .patterns = &.{ |
| 10590 | .{ .src = .{ .mut_mem, .simm32 } }, | 19323 | .{ .src = .{ .mut_mem, .simm32, .none } }, |
| 10591 | .{ .src = .{ .simm32, .mut_mem }, .commute = .{ 0, 1 } }, | 19324 | .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 10592 | .{ .src = .{ .to_mut_gpr, .simm32 } }, | 19325 | .{ .src = .{ .to_mut_gpr, .simm32, .none } }, |
| 10593 | .{ .src = .{ .simm32, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 19326 | .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 10594 | .{ .src = .{ .mut_mem, .to_gpr } }, | 19327 | .{ .src = .{ .mut_mem, .to_gpr, .none } }, |
| 10595 | .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, | 19328 | .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 10596 | .{ .src = .{ .to_mut_gpr, .mem } }, | 19329 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 10597 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 19330 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 10598 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 19331 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 10599 | }, | 19332 | }, |
| 10600 | .dst_temps = .{.{ .ref = .src0 }}, | 19333 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10601 | .clobbers = .{ .eflags = true }, | 19334 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10604,11 +19337,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10604,11 +19337,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10604 | } }, | 19337 | } }, |
| 10605 | }, .{ | 19338 | }, .{ |
| 10606 | .required_features = .{ .mmx, null, null, null }, | 19339 | .required_features = .{ .mmx, null, null, null }, |
| 10607 | .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword } }, | 19340 | .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any }, |
| 10608 | .patterns = &.{ | 19341 | .patterns = &.{ |
| 10609 | .{ .src = .{ .to_mut_mm, .mem } }, | 19342 | .{ .src = .{ .to_mut_mm, .mem, .none } }, |
| 10610 | .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } }, | 19343 | .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, |
| 10611 | .{ .src = .{ .to_mut_mm, .to_mm } }, | 19344 | .{ .src = .{ .to_mut_mm, .to_mm, .none } }, |
| 10612 | }, | 19345 | }, |
| 10613 | .dst_temps = .{.{ .ref = .src0 }}, | 19346 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10614 | .each = .{ .once = &.{ | 19347 | .each = .{ .once = &.{ |
| ... | @@ -10616,11 +19349,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10616,11 +19349,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10616 | } }, | 19349 | } }, |
| 10617 | }, .{ | 19350 | }, .{ |
| 10618 | .required_features = .{ .avx, null, null, null }, | 19351 | .required_features = .{ .avx, null, null, null }, |
| 10619 | .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } }, | 19352 | .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any }, |
| 10620 | .patterns = &.{ | 19353 | .patterns = &.{ |
| 10621 | .{ .src = .{ .to_xmm, .mem } }, | 19354 | .{ .src = .{ .to_xmm, .mem, .none } }, |
| 10622 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, | 19355 | .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, |
| 10623 | .{ .src = .{ .to_xmm, .to_xmm } }, | 19356 | .{ .src = .{ .to_xmm, .to_xmm, .none } }, |
| 10624 | }, | 19357 | }, |
| 10625 | .dst_temps = .{.{ .rc = .sse }}, | 19358 | .dst_temps = .{.{ .rc = .sse }}, |
| 10626 | .each = .{ .once = &.{ | 19359 | .each = .{ .once = &.{ |
| ... | @@ -10628,11 +19361,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10628,11 +19361,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10628 | } }, | 19361 | } }, |
| 10629 | }, .{ | 19362 | }, .{ |
| 10630 | .required_features = .{ .sse2, null, null, null }, | 19363 | .required_features = .{ .sse2, null, null, null }, |
| 10631 | .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } }, | 19364 | .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any }, |
| 10632 | .patterns = &.{ | 19365 | .patterns = &.{ |
| 10633 | .{ .src = .{ .to_mut_xmm, .mem } }, | 19366 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, |
| 10634 | .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, | 19367 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, |
| 10635 | .{ .src = .{ .to_mut_xmm, .to_xmm } }, | 19368 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, |
| 10636 | }, | 19369 | }, |
| 10637 | .dst_temps = .{.{ .ref = .src0 }}, | 19370 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10638 | .each = .{ .once = &.{ | 19371 | .each = .{ .once = &.{ |
| ... | @@ -10640,11 +19373,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10640,11 +19373,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10640 | } }, | 19373 | } }, |
| 10641 | }, .{ | 19374 | }, .{ |
| 10642 | .required_features = .{ .sse, null, null, null }, | 19375 | .required_features = .{ .sse, null, null, null }, |
| 10643 | .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } }, | 19376 | .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any }, |
| 10644 | .patterns = &.{ | 19377 | .patterns = &.{ |
| 10645 | .{ .src = .{ .to_mut_xmm, .mem } }, | 19378 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, |
| 10646 | .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, | 19379 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, |
| 10647 | .{ .src = .{ .to_mut_xmm, .to_xmm } }, | 19380 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, |
| 10648 | }, | 19381 | }, |
| 10649 | .dst_temps = .{.{ .ref = .src0 }}, | 19382 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10650 | .each = .{ .once = &.{ | 19383 | .each = .{ .once = &.{ |
| ... | @@ -10652,11 +19385,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10652,11 +19385,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10652 | } }, | 19385 | } }, |
| 10653 | }, .{ | 19386 | }, .{ |
| 10654 | .required_features = .{ .avx2, null, null, null }, | 19387 | .required_features = .{ .avx2, null, null, null }, |
| 10655 | .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword } }, | 19388 | .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any }, |
| 10656 | .patterns = &.{ | 19389 | .patterns = &.{ |
| 10657 | .{ .src = .{ .to_ymm, .mem } }, | 19390 | .{ .src = .{ .to_ymm, .mem, .none } }, |
| 10658 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, | 19391 | .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, |
| 10659 | .{ .src = .{ .to_ymm, .to_ymm } }, | 19392 | .{ .src = .{ .to_ymm, .to_ymm, .none } }, |
| 10660 | }, | 19393 | }, |
| 10661 | .dst_temps = .{.{ .rc = .sse }}, | 19394 | .dst_temps = .{.{ .rc = .sse }}, |
| 10662 | .each = .{ .once = &.{ | 19395 | .each = .{ .once = &.{ |
| ... | @@ -10664,11 +19397,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10664,11 +19397,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10664 | } }, | 19397 | } }, |
| 10665 | }, .{ | 19398 | }, .{ |
| 10666 | .required_features = .{ .avx, null, null, null }, | 19399 | .required_features = .{ .avx, null, null, null }, |
| 10667 | .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword } }, | 19400 | .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any }, |
| 10668 | .patterns = &.{ | 19401 | .patterns = &.{ |
| 10669 | .{ .src = .{ .to_ymm, .mem } }, | 19402 | .{ .src = .{ .to_ymm, .mem, .none } }, |
| 10670 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, | 19403 | .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, |
| 10671 | .{ .src = .{ .to_ymm, .to_ymm } }, | 19404 | .{ .src = .{ .to_ymm, .to_ymm, .none } }, |
| 10672 | }, | 19405 | }, |
| 10673 | .dst_temps = .{.{ .rc = .sse }}, | 19406 | .dst_temps = .{.{ .rc = .sse }}, |
| 10674 | .each = .{ .once = &.{ | 19407 | .each = .{ .once = &.{ |
| ... | @@ -10676,9 +19409,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10676,9 +19409,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10676 | } }, | 19409 | } }, |
| 10677 | }, .{ | 19410 | }, .{ |
| 10678 | .required_features = .{ .avx2, null, null, null }, | 19411 | .required_features = .{ .avx2, null, null, null }, |
| 10679 | .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword } }, | 19412 | .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword }, .any }, |
| 10680 | .patterns = &.{ | 19413 | .patterns = &.{ |
| 10681 | .{ .src = .{ .to_mem, .to_mem } }, | 19414 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10682 | }, | 19415 | }, |
| 10683 | .extra_temps = .{ | 19416 | .extra_temps = .{ |
| 10684 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19417 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10703,9 +19436,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10703,9 +19436,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10703 | } }, | 19436 | } }, |
| 10704 | }, .{ | 19437 | }, .{ |
| 10705 | .required_features = .{ .avx, null, null, null }, | 19438 | .required_features = .{ .avx, null, null, null }, |
| 10706 | .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword } }, | 19439 | .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword }, .any }, |
| 10707 | .patterns = &.{ | 19440 | .patterns = &.{ |
| 10708 | .{ .src = .{ .to_mem, .to_mem } }, | 19441 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10709 | }, | 19442 | }, |
| 10710 | .extra_temps = .{ | 19443 | .extra_temps = .{ |
| 10711 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19444 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10730,9 +19463,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10730,9 +19463,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10730 | } }, | 19463 | } }, |
| 10731 | }, .{ | 19464 | }, .{ |
| 10732 | .required_features = .{ .avx, null, null, null }, | 19465 | .required_features = .{ .avx, null, null, null }, |
| 10733 | .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword } }, | 19466 | .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword }, .any }, |
| 10734 | .patterns = &.{ | 19467 | .patterns = &.{ |
| 10735 | .{ .src = .{ .to_mem, .to_mem } }, | 19468 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10736 | }, | 19469 | }, |
| 10737 | .extra_temps = .{ | 19470 | .extra_temps = .{ |
| 10738 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19471 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10757,9 +19490,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10757,9 +19490,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10757 | } }, | 19490 | } }, |
| 10758 | }, .{ | 19491 | }, .{ |
| 10759 | .required_features = .{ .sse2, null, null, null }, | 19492 | .required_features = .{ .sse2, null, null, null }, |
| 10760 | .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword } }, | 19493 | .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword }, .any }, |
| 10761 | .patterns = &.{ | 19494 | .patterns = &.{ |
| 10762 | .{ .src = .{ .to_mem, .to_mem } }, | 19495 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10763 | }, | 19496 | }, |
| 10764 | .extra_temps = .{ | 19497 | .extra_temps = .{ |
| 10765 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19498 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10784,9 +19517,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10784,9 +19517,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10784 | } }, | 19517 | } }, |
| 10785 | }, .{ | 19518 | }, .{ |
| 10786 | .required_features = .{ .sse, null, null, null }, | 19519 | .required_features = .{ .sse, null, null, null }, |
| 10787 | .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword } }, | 19520 | .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword }, .any }, |
| 10788 | .patterns = &.{ | 19521 | .patterns = &.{ |
| 10789 | .{ .src = .{ .to_mem, .to_mem } }, | 19522 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10790 | }, | 19523 | }, |
| 10791 | .extra_temps = .{ | 19524 | .extra_temps = .{ |
| 10792 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19525 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10811,9 +19544,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10811,9 +19544,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10811 | } }, | 19544 | } }, |
| 10812 | }, .{ | 19545 | }, .{ |
| 10813 | .required_features = .{ .mmx, null, null, null }, | 19546 | .required_features = .{ .mmx, null, null, null }, |
| 10814 | .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword } }, | 19547 | .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword }, .any }, |
| 10815 | .patterns = &.{ | 19548 | .patterns = &.{ |
| 10816 | .{ .src = .{ .to_mem, .to_mem } }, | 19549 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10817 | }, | 19550 | }, |
| 10818 | .extra_temps = .{ | 19551 | .extra_temps = .{ |
| 10819 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19552 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10837,9 +19570,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10837,9 +19570,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10837 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 19570 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10838 | } }, | 19571 | } }, |
| 10839 | }, .{ | 19572 | }, .{ |
| 10840 | .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword } }, | 19573 | .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword }, .any }, |
| 10841 | .patterns = &.{ | 19574 | .patterns = &.{ |
| 10842 | .{ .src = .{ .to_mem, .to_mem } }, | 19575 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 10843 | }, | 19576 | }, |
| 10844 | .extra_temps = .{ | 19577 | .extra_temps = .{ |
| 10845 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19578 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -10879,20 +19612,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10879,20 +19612,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10879 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | 19612 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| 10880 | var res: [1]Temp = undefined; | 19613 | var res: [1]Temp = undefined; |
| 10881 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ | 19614 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ |
| 10882 | .src_constraints = .{ .{ .signed_or_exact_int = .byte }, .any }, | 19615 | .src_constraints = .{ .{ .signed_or_exact_int = .byte }, .any, .any }, |
| 10883 | .patterns = &.{ | 19616 | .patterns = &.{ |
| 10884 | .{ .src = .{ .mut_mem, .none } }, | 19617 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 10885 | .{ .src = .{ .to_mut_gpr, .none } }, | 19618 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 10886 | }, | 19619 | }, |
| 10887 | .dst_temps = .{.{ .ref = .src0 }}, | 19620 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10888 | .each = .{ .once = &.{ | 19621 | .each = .{ .once = &.{ |
| 10889 | .{ ._, ._, .not, .dst0b, ._, ._, ._ }, | 19622 | .{ ._, ._, .not, .dst0b, ._, ._, ._ }, |
| 10890 | } }, | 19623 | } }, |
| 10891 | }, .{ | 19624 | }, .{ |
| 10892 | .src_constraints = .{ .{ .unsigned_int = .byte }, .any }, | 19625 | .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, |
| 10893 | .patterns = &.{ | 19626 | .patterns = &.{ |
| 10894 | .{ .src = .{ .mut_mem, .none } }, | 19627 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 10895 | .{ .src = .{ .to_mut_gpr, .none } }, | 19628 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 10896 | }, | 19629 | }, |
| 10897 | .dst_temps = .{.{ .ref = .src0 }}, | 19630 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10898 | .clobbers = .{ .eflags = true }, | 19631 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10900,20 +19633,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10900,20 +19633,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10900 | .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_umax), ._, ._ }, | 19633 | .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_umax), ._, ._ }, |
| 10901 | } }, | 19634 | } }, |
| 10902 | }, .{ | 19635 | }, .{ |
| 10903 | .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any }, | 19636 | .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any, .any }, |
| 10904 | .patterns = &.{ | 19637 | .patterns = &.{ |
| 10905 | .{ .src = .{ .mut_mem, .none } }, | 19638 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 10906 | .{ .src = .{ .to_mut_gpr, .none } }, | 19639 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 10907 | }, | 19640 | }, |
| 10908 | .dst_temps = .{.{ .ref = .src0 }}, | 19641 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10909 | .each = .{ .once = &.{ | 19642 | .each = .{ .once = &.{ |
| 10910 | .{ ._, ._, .not, .dst0w, ._, ._, ._ }, | 19643 | .{ ._, ._, .not, .dst0w, ._, ._, ._ }, |
| 10911 | } }, | 19644 | } }, |
| 10912 | }, .{ | 19645 | }, .{ |
| 10913 | .src_constraints = .{ .{ .unsigned_int = .word }, .any }, | 19646 | .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, |
| 10914 | .patterns = &.{ | 19647 | .patterns = &.{ |
| 10915 | .{ .src = .{ .mut_mem, .none } }, | 19648 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 10916 | .{ .src = .{ .to_mut_gpr, .none } }, | 19649 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 10917 | }, | 19650 | }, |
| 10918 | .dst_temps = .{.{ .ref = .src0 }}, | 19651 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10919 | .clobbers = .{ .eflags = true }, | 19652 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10921,20 +19654,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10921,20 +19654,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10921 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_umax), ._, ._ }, | 19654 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_umax), ._, ._ }, |
| 10922 | } }, | 19655 | } }, |
| 10923 | }, .{ | 19656 | }, .{ |
| 10924 | .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any }, | 19657 | .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any, .any }, |
| 10925 | .patterns = &.{ | 19658 | .patterns = &.{ |
| 10926 | .{ .src = .{ .mut_mem, .none } }, | 19659 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 10927 | .{ .src = .{ .to_mut_gpr, .none } }, | 19660 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 10928 | }, | 19661 | }, |
| 10929 | .dst_temps = .{.{ .ref = .src0 }}, | 19662 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10930 | .each = .{ .once = &.{ | 19663 | .each = .{ .once = &.{ |
| 10931 | .{ ._, ._, .not, .dst0d, ._, ._, ._ }, | 19664 | .{ ._, ._, .not, .dst0d, ._, ._, ._ }, |
| 10932 | } }, | 19665 | } }, |
| 10933 | }, .{ | 19666 | }, .{ |
| 10934 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any }, | 19667 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, |
| 10935 | .patterns = &.{ | 19668 | .patterns = &.{ |
| 10936 | .{ .src = .{ .mut_mem, .none } }, | 19669 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 10937 | .{ .src = .{ .to_mut_gpr, .none } }, | 19670 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 10938 | }, | 19671 | }, |
| 10939 | .dst_temps = .{.{ .ref = .src0 }}, | 19672 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10940 | .clobbers = .{ .eflags = true }, | 19673 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10943,10 +19676,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10943,10 +19676,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10943 | } }, | 19676 | } }, |
| 10944 | }, .{ | 19677 | }, .{ |
| 10945 | .required_features = .{ .@"64bit", null, null, null }, | 19678 | .required_features = .{ .@"64bit", null, null, null }, |
| 10946 | .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any }, | 19679 | .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any, .any }, |
| 10947 | .patterns = &.{ | 19680 | .patterns = &.{ |
| 10948 | .{ .src = .{ .mut_mem, .none } }, | 19681 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 10949 | .{ .src = .{ .to_mut_gpr, .none } }, | 19682 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 10950 | }, | 19683 | }, |
| 10951 | .dst_temps = .{.{ .ref = .src0 }}, | 19684 | .dst_temps = .{.{ .ref = .src0 }}, |
| 10952 | .each = .{ .once = &.{ | 19685 | .each = .{ .once = &.{ |
| ... | @@ -10954,10 +19687,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10954,10 +19687,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10954 | } }, | 19687 | } }, |
| 10955 | }, .{ | 19688 | }, .{ |
| 10956 | .required_features = .{ .@"64bit", null, null, null }, | 19689 | .required_features = .{ .@"64bit", null, null, null }, |
| 10957 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, | 19690 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| 10958 | .patterns = &.{ | 19691 | .patterns = &.{ |
| 10959 | .{ .src = .{ .mem, .none } }, | 19692 | .{ .src = .{ .mem, .none, .none } }, |
| 10960 | .{ .src = .{ .to_gpr, .none } }, | 19693 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 10961 | }, | 19694 | }, |
| 10962 | .dst_temps = .{.{ .rc = .general_purpose }}, | 19695 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 10963 | .each = .{ .once = &.{ | 19696 | .each = .{ .once = &.{ |
| ... | @@ -10966,10 +19699,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10966,10 +19699,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10966 | } }, | 19699 | } }, |
| 10967 | }, .{ | 19700 | }, .{ |
| 10968 | .required_features = .{ .mmx, null, null, null }, | 19701 | .required_features = .{ .mmx, null, null, null }, |
| 10969 | .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any }, | 19702 | .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any, .any }, |
| 10970 | .patterns = &.{ | 19703 | .patterns = &.{ |
| 10971 | .{ .src = .{ .mem, .none } }, | 19704 | .{ .src = .{ .mem, .none, .none } }, |
| 10972 | .{ .src = .{ .to_mm, .none } }, | 19705 | .{ .src = .{ .to_mm, .none, .none } }, |
| 10973 | }, | 19706 | }, |
| 10974 | .dst_temps = .{.{ .rc = .mmx }}, | 19707 | .dst_temps = .{.{ .rc = .mmx }}, |
| 10975 | .each = .{ .once = &.{ | 19708 | .each = .{ .once = &.{ |
| ... | @@ -10978,9 +19711,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10978,9 +19711,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10978 | } }, | 19711 | } }, |
| 10979 | }, .{ | 19712 | }, .{ |
| 10980 | .required_features = .{ .mmx, null, null, null }, | 19713 | .required_features = .{ .mmx, null, null, null }, |
| 10981 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, | 19714 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| 10982 | .patterns = &.{ | 19715 | .patterns = &.{ |
| 10983 | .{ .src = .{ .to_mut_mm, .none } }, | 19716 | .{ .src = .{ .to_mut_mm, .none, .none } }, |
| 10984 | }, | 19717 | }, |
| 10985 | .extra_temps = .{ | 19718 | .extra_temps = .{ |
| 10986 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 19719 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11000,10 +19733,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11000,10 +19733,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11000 | } }, | 19733 | } }, |
| 11001 | }, .{ | 19734 | }, .{ |
| 11002 | .required_features = .{ .avx, null, null, null }, | 19735 | .required_features = .{ .avx, null, null, null }, |
| 11003 | .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any }, | 19736 | .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any, .any }, |
| 11004 | .patterns = &.{ | 19737 | .patterns = &.{ |
| 11005 | .{ .src = .{ .mem, .none } }, | 19738 | .{ .src = .{ .mem, .none, .none } }, |
| 11006 | .{ .src = .{ .to_xmm, .none } }, | 19739 | .{ .src = .{ .to_xmm, .none, .none } }, |
| 11007 | }, | 19740 | }, |
| 11008 | .dst_temps = .{.{ .rc = .sse }}, | 19741 | .dst_temps = .{.{ .rc = .sse }}, |
| 11009 | .each = .{ .once = &.{ | 19742 | .each = .{ .once = &.{ |
| ... | @@ -11012,9 +19745,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11012,9 +19745,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11012 | } }, | 19745 | } }, |
| 11013 | }, .{ | 19746 | }, .{ |
| 11014 | .required_features = .{ .avx, null, null, null }, | 19747 | .required_features = .{ .avx, null, null, null }, |
| 11015 | .src_constraints = .{ .{ .unsigned_int = .xword }, .any }, | 19748 | .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, |
| 11016 | .patterns = &.{ | 19749 | .patterns = &.{ |
| 11017 | .{ .src = .{ .to_xmm, .none } }, | 19750 | .{ .src = .{ .to_xmm, .none, .none } }, |
| 11018 | }, | 19751 | }, |
| 11019 | .extra_temps = .{ | 19752 | .extra_temps = .{ |
| 11020 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 19753 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11034,10 +19767,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11034,10 +19767,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11034 | } }, | 19767 | } }, |
| 11035 | }, .{ | 19768 | }, .{ |
| 11036 | .required_features = .{ .sse2, null, null, null }, | 19769 | .required_features = .{ .sse2, null, null, null }, |
| 11037 | .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any }, | 19770 | .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any, .any }, |
| 11038 | .patterns = &.{ | 19771 | .patterns = &.{ |
| 11039 | .{ .src = .{ .mem, .none } }, | 19772 | .{ .src = .{ .mem, .none, .none } }, |
| 11040 | .{ .src = .{ .to_xmm, .none } }, | 19773 | .{ .src = .{ .to_xmm, .none, .none } }, |
| 11041 | }, | 19774 | }, |
| 11042 | .dst_temps = .{.{ .rc = .sse }}, | 19775 | .dst_temps = .{.{ .rc = .sse }}, |
| 11043 | .each = .{ .once = &.{ | 19776 | .each = .{ .once = &.{ |
| ... | @@ -11046,9 +19779,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11046,9 +19779,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11046 | } }, | 19779 | } }, |
| 11047 | }, .{ | 19780 | }, .{ |
| 11048 | .required_features = .{ .sse2, null, null, null }, | 19781 | .required_features = .{ .sse2, null, null, null }, |
| 11049 | .src_constraints = .{ .{ .unsigned_int = .xword }, .any }, | 19782 | .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, |
| 11050 | .patterns = &.{ | 19783 | .patterns = &.{ |
| 11051 | .{ .src = .{ .to_mut_xmm, .none } }, | 19784 | .{ .src = .{ .to_mut_xmm, .none, .none } }, |
| 11052 | }, | 19785 | }, |
| 11053 | .extra_temps = .{ | 19786 | .extra_temps = .{ |
| 11054 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 19787 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11068,9 +19801,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11068,9 +19801,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11068 | } }, | 19801 | } }, |
| 11069 | }, .{ | 19802 | }, .{ |
| 11070 | .required_features = .{ .sse, null, null, null }, | 19803 | .required_features = .{ .sse, null, null, null }, |
| 11071 | .src_constraints = .{ .{ .int = .xword }, .any }, | 19804 | .src_constraints = .{ .{ .int = .xword }, .any, .any }, |
| 11072 | .patterns = &.{ | 19805 | .patterns = &.{ |
| 11073 | .{ .src = .{ .to_mut_xmm, .none } }, | 19806 | .{ .src = .{ .to_mut_xmm, .none, .none } }, |
| 11074 | }, | 19807 | }, |
| 11075 | .extra_temps = .{ | 19808 | .extra_temps = .{ |
| 11076 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 19809 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11090,10 +19823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11090,10 +19823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11090 | } }, | 19823 | } }, |
| 11091 | }, .{ | 19824 | }, .{ |
| 11092 | .required_features = .{ .avx2, null, null, null }, | 19825 | .required_features = .{ .avx2, null, null, null }, |
| 11093 | .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any }, | 19826 | .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any, .any }, |
| 11094 | .patterns = &.{ | 19827 | .patterns = &.{ |
| 11095 | .{ .src = .{ .mem, .none } }, | 19828 | .{ .src = .{ .mem, .none, .none } }, |
| 11096 | .{ .src = .{ .to_ymm, .none } }, | 19829 | .{ .src = .{ .to_ymm, .none, .none } }, |
| 11097 | }, | 19830 | }, |
| 11098 | .dst_temps = .{.{ .rc = .sse }}, | 19831 | .dst_temps = .{.{ .rc = .sse }}, |
| 11099 | .each = .{ .once = &.{ | 19832 | .each = .{ .once = &.{ |
| ... | @@ -11102,9 +19835,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11102,9 +19835,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11102 | } }, | 19835 | } }, |
| 11103 | }, .{ | 19836 | }, .{ |
| 11104 | .required_features = .{ .avx2, null, null, null }, | 19837 | .required_features = .{ .avx2, null, null, null }, |
| 11105 | .src_constraints = .{ .{ .unsigned_int = .yword }, .any }, | 19838 | .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any }, |
| 11106 | .patterns = &.{ | 19839 | .patterns = &.{ |
| 11107 | .{ .src = .{ .to_ymm, .none } }, | 19840 | .{ .src = .{ .to_ymm, .none, .none } }, |
| 11108 | }, | 19841 | }, |
| 11109 | .extra_temps = .{ | 19842 | .extra_temps = .{ |
| 11110 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 19843 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11124,10 +19857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11124,10 +19857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11124 | } }, | 19857 | } }, |
| 11125 | }, .{ | 19858 | }, .{ |
| 11126 | .required_features = .{ .avx, null, null, null }, | 19859 | .required_features = .{ .avx, null, null, null }, |
| 11127 | .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any }, | 19860 | .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any, .any }, |
| 11128 | .patterns = &.{ | 19861 | .patterns = &.{ |
| 11129 | .{ .src = .{ .mem, .none } }, | 19862 | .{ .src = .{ .mem, .none, .none } }, |
| 11130 | .{ .src = .{ .to_ymm, .none } }, | 19863 | .{ .src = .{ .to_ymm, .none, .none } }, |
| 11131 | }, | 19864 | }, |
| 11132 | .dst_temps = .{.{ .rc = .sse }}, | 19865 | .dst_temps = .{.{ .rc = .sse }}, |
| 11133 | .each = .{ .once = &.{ | 19866 | .each = .{ .once = &.{ |
| ... | @@ -11136,9 +19869,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11136,9 +19869,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11136 | } }, | 19869 | } }, |
| 11137 | }, .{ | 19870 | }, .{ |
| 11138 | .required_features = .{ .avx, null, null, null }, | 19871 | .required_features = .{ .avx, null, null, null }, |
| 11139 | .src_constraints = .{ .{ .unsigned_int = .yword }, .any }, | 19872 | .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any }, |
| 11140 | .patterns = &.{ | 19873 | .patterns = &.{ |
| 11141 | .{ .src = .{ .to_ymm, .none } }, | 19874 | .{ .src = .{ .to_ymm, .none, .none } }, |
| 11142 | }, | 19875 | }, |
| 11143 | .extra_temps = .{ | 19876 | .extra_temps = .{ |
| 11144 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 19877 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11158,9 +19891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11158,9 +19891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11158 | } }, | 19891 | } }, |
| 11159 | }, .{ | 19892 | }, .{ |
| 11160 | .required_features = .{ .avx2, null, null, null }, | 19893 | .required_features = .{ .avx2, null, null, null }, |
| 11161 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any }, | 19894 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any, .any }, |
| 11162 | .patterns = &.{ | 19895 | .patterns = &.{ |
| 11163 | .{ .src = .{ .to_mem, .none } }, | 19896 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11164 | }, | 19897 | }, |
| 11165 | .extra_temps = .{ | 19898 | .extra_temps = .{ |
| 11166 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19899 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11187,9 +19920,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11187,9 +19920,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11187 | } }, | 19920 | } }, |
| 11188 | }, .{ | 19921 | }, .{ |
| 11189 | .required_features = .{ .avx2, null, null, null }, | 19922 | .required_features = .{ .avx2, null, null, null }, |
| 11190 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any }, | 19923 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| 11191 | .patterns = &.{ | 19924 | .patterns = &.{ |
| 11192 | .{ .src = .{ .to_mem, .none } }, | 19925 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11193 | }, | 19926 | }, |
| 11194 | .extra_temps = .{ | 19927 | .extra_temps = .{ |
| 11195 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19928 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11214,9 +19947,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11214,9 +19947,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11214 | } }, | 19947 | } }, |
| 11215 | }, .{ | 19948 | }, .{ |
| 11216 | .required_features = .{ .avx, null, null, null }, | 19949 | .required_features = .{ .avx, null, null, null }, |
| 11217 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any }, | 19950 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any, .any }, |
| 11218 | .patterns = &.{ | 19951 | .patterns = &.{ |
| 11219 | .{ .src = .{ .to_mem, .none } }, | 19952 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11220 | }, | 19953 | }, |
| 11221 | .extra_temps = .{ | 19954 | .extra_temps = .{ |
| 11222 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19955 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11243,9 +19976,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11243,9 +19976,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11243 | } }, | 19976 | } }, |
| 11244 | }, .{ | 19977 | }, .{ |
| 11245 | .required_features = .{ .avx, null, null, null }, | 19978 | .required_features = .{ .avx, null, null, null }, |
| 11246 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any }, | 19979 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| 11247 | .patterns = &.{ | 19980 | .patterns = &.{ |
| 11248 | .{ .src = .{ .to_mem, .none } }, | 19981 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11249 | }, | 19982 | }, |
| 11250 | .extra_temps = .{ | 19983 | .extra_temps = .{ |
| 11251 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 19984 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11270,9 +20003,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11270,9 +20003,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11270 | } }, | 20003 | } }, |
| 11271 | }, .{ | 20004 | }, .{ |
| 11272 | .required_features = .{ .avx, null, null, null }, | 20005 | .required_features = .{ .avx, null, null, null }, |
| 11273 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 20006 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 11274 | .patterns = &.{ | 20007 | .patterns = &.{ |
| 11275 | .{ .src = .{ .to_mem, .none } }, | 20008 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11276 | }, | 20009 | }, |
| 11277 | .extra_temps = .{ | 20010 | .extra_temps = .{ |
| 11278 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20011 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11297,9 +20030,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11297,9 +20030,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11297 | } }, | 20030 | } }, |
| 11298 | }, .{ | 20031 | }, .{ |
| 11299 | .required_features = .{ .sse2, null, null, null }, | 20032 | .required_features = .{ .sse2, null, null, null }, |
| 11300 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 20033 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 11301 | .patterns = &.{ | 20034 | .patterns = &.{ |
| 11302 | .{ .src = .{ .to_mem, .none } }, | 20035 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11303 | }, | 20036 | }, |
| 11304 | .extra_temps = .{ | 20037 | .extra_temps = .{ |
| 11305 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20038 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11325,9 +20058,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11325,9 +20058,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11325 | } }, | 20058 | } }, |
| 11326 | }, .{ | 20059 | }, .{ |
| 11327 | .required_features = .{ .@"64bit", null, null, null }, | 20060 | .required_features = .{ .@"64bit", null, null, null }, |
| 11328 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 20061 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 11329 | .patterns = &.{ | 20062 | .patterns = &.{ |
| 11330 | .{ .src = .{ .mut_mem, .none } }, | 20063 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 11331 | }, | 20064 | }, |
| 11332 | .extra_temps = .{ | 20065 | .extra_temps = .{ |
| 11333 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20066 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11351,9 +20084,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11351,9 +20084,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11351 | } }, | 20084 | } }, |
| 11352 | }, .{ | 20085 | }, .{ |
| 11353 | .required_features = .{ .@"64bit", null, null, null }, | 20086 | .required_features = .{ .@"64bit", null, null, null }, |
| 11354 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 20087 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 11355 | .patterns = &.{ | 20088 | .patterns = &.{ |
| 11356 | .{ .src = .{ .to_mem, .none } }, | 20089 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11357 | }, | 20090 | }, |
| 11358 | .extra_temps = .{ | 20091 | .extra_temps = .{ |
| 11359 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20092 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11378,9 +20111,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11378,9 +20111,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11378 | } }, | 20111 | } }, |
| 11379 | }, .{ | 20112 | }, .{ |
| 11380 | .required_features = .{ .@"64bit", null, null, null }, | 20113 | .required_features = .{ .@"64bit", null, null, null }, |
| 11381 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any }, | 20114 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 11382 | .patterns = &.{ | 20115 | .patterns = &.{ |
| 11383 | .{ .src = .{ .mut_mem, .none } }, | 20116 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 11384 | }, | 20117 | }, |
| 11385 | .extra_temps = .{ | 20118 | .extra_temps = .{ |
| 11386 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20119 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11405,9 +20138,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11405,9 +20138,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11405 | } }, | 20138 | } }, |
| 11406 | }, .{ | 20139 | }, .{ |
| 11407 | .required_features = .{ .@"64bit", null, null, null }, | 20140 | .required_features = .{ .@"64bit", null, null, null }, |
| 11408 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any }, | 20141 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 11409 | .patterns = &.{ | 20142 | .patterns = &.{ |
| 11410 | .{ .src = .{ .to_mem, .none } }, | 20143 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11411 | }, | 20144 | }, |
| 11412 | .extra_temps = .{ | 20145 | .extra_temps = .{ |
| 11413 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20146 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11437,9 +20170,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11437,9 +20170,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11437 | } }, | 20170 | } }, |
| 11438 | }, .{ | 20171 | }, .{ |
| 11439 | .required_features = .{ .@"64bit", null, null, null }, | 20172 | .required_features = .{ .@"64bit", null, null, null }, |
| 11440 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any }, | 20173 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 11441 | .patterns = &.{ | 20174 | .patterns = &.{ |
| 11442 | .{ .src = .{ .mut_mem, .none } }, | 20175 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 11443 | }, | 20176 | }, |
| 11444 | .extra_temps = .{ | 20177 | .extra_temps = .{ |
| 11445 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20178 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11464,9 +20197,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11464,9 +20197,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11464 | } }, | 20197 | } }, |
| 11465 | }, .{ | 20198 | }, .{ |
| 11466 | .required_features = .{ .@"64bit", null, null, null }, | 20199 | .required_features = .{ .@"64bit", null, null, null }, |
| 11467 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any }, | 20200 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 11468 | .patterns = &.{ | 20201 | .patterns = &.{ |
| 11469 | .{ .src = .{ .to_mem, .none } }, | 20202 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11470 | }, | 20203 | }, |
| 11471 | .extra_temps = .{ | 20204 | .extra_temps = .{ |
| 11472 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20205 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11492,9 +20225,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11492,9 +20225,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11492 | } }, | 20225 | } }, |
| 11493 | }, .{ | 20226 | }, .{ |
| 11494 | .required_features = .{ .@"64bit", null, null, null }, | 20227 | .required_features = .{ .@"64bit", null, null, null }, |
| 11495 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any }, | 20228 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 11496 | .patterns = &.{ | 20229 | .patterns = &.{ |
| 11497 | .{ .src = .{ .mut_mem, .none } }, | 20230 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 11498 | }, | 20231 | }, |
| 11499 | .extra_temps = .{ | 20232 | .extra_temps = .{ |
| 11500 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20233 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11518,9 +20251,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11518,9 +20251,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11518 | } }, | 20251 | } }, |
| 11519 | }, .{ | 20252 | }, .{ |
| 11520 | .required_features = .{ .@"64bit", null, null, null }, | 20253 | .required_features = .{ .@"64bit", null, null, null }, |
| 11521 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any }, | 20254 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 11522 | .patterns = &.{ | 20255 | .patterns = &.{ |
| 11523 | .{ .src = .{ .to_mem, .none } }, | 20256 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11524 | }, | 20257 | }, |
| 11525 | .extra_temps = .{ | 20258 | .extra_temps = .{ |
| 11526 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20259 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11549,9 +20282,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11549,9 +20282,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11549 | } }, | 20282 | } }, |
| 11550 | }, .{ | 20283 | }, .{ |
| 11551 | .required_features = .{ .@"64bit", null, null, null }, | 20284 | .required_features = .{ .@"64bit", null, null, null }, |
| 11552 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any }, | 20285 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 11553 | .patterns = &.{ | 20286 | .patterns = &.{ |
| 11554 | .{ .src = .{ .mut_mem, .none } }, | 20287 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 11555 | }, | 20288 | }, |
| 11556 | .extra_temps = .{ | 20289 | .extra_temps = .{ |
| 11557 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20290 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11576,9 +20309,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11576,9 +20309,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11576 | } }, | 20309 | } }, |
| 11577 | }, .{ | 20310 | }, .{ |
| 11578 | .required_features = .{ .@"64bit", null, null, null }, | 20311 | .required_features = .{ .@"64bit", null, null, null }, |
| 11579 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any }, | 20312 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 11580 | .patterns = &.{ | 20313 | .patterns = &.{ |
| 11581 | .{ .src = .{ .to_mem, .none } }, | 20314 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11582 | }, | 20315 | }, |
| 11583 | .extra_temps = .{ | 20316 | .extra_temps = .{ |
| 11584 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20317 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11608,9 +20341,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11608,9 +20341,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11608 | } }, | 20341 | } }, |
| 11609 | }, .{ | 20342 | }, .{ |
| 11610 | .required_features = .{ .@"64bit", null, null, null }, | 20343 | .required_features = .{ .@"64bit", null, null, null }, |
| 11611 | .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any }, | 20344 | .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| 11612 | .patterns = &.{ | 20345 | .patterns = &.{ |
| 11613 | .{ .src = .{ .mut_mem, .none } }, | 20346 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 11614 | }, | 20347 | }, |
| 11615 | .extra_temps = .{ | 20348 | .extra_temps = .{ |
| 11616 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20349 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11634,9 +20367,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11634,9 +20367,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11634 | } }, | 20367 | } }, |
| 11635 | }, .{ | 20368 | }, .{ |
| 11636 | .required_features = .{ .@"64bit", null, null, null }, | 20369 | .required_features = .{ .@"64bit", null, null, null }, |
| 11637 | .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any }, | 20370 | .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| 11638 | .patterns = &.{ | 20371 | .patterns = &.{ |
| 11639 | .{ .src = .{ .to_mem, .none } }, | 20372 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11640 | }, | 20373 | }, |
| 11641 | .extra_temps = .{ | 20374 | .extra_temps = .{ |
| 11642 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20375 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11665,9 +20398,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11665,9 +20398,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11665 | } }, | 20398 | } }, |
| 11666 | }, .{ | 20399 | }, .{ |
| 11667 | .required_features = .{ .@"64bit", null, null, null }, | 20400 | .required_features = .{ .@"64bit", null, null, null }, |
| 11668 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 20401 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 11669 | .patterns = &.{ | 20402 | .patterns = &.{ |
| 11670 | .{ .src = .{ .mut_mem, .none } }, | 20403 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 11671 | }, | 20404 | }, |
| 11672 | .extra_temps = .{ | 20405 | .extra_temps = .{ |
| 11673 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20406 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11693,9 +20426,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11693,9 +20426,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11693 | } }, | 20426 | } }, |
| 11694 | }, .{ | 20427 | }, .{ |
| 11695 | .required_features = .{ .@"64bit", null, null, null }, | 20428 | .required_features = .{ .@"64bit", null, null, null }, |
| 11696 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 20429 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 11697 | .patterns = &.{ | 20430 | .patterns = &.{ |
| 11698 | .{ .src = .{ .to_mem, .none } }, | 20431 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11699 | }, | 20432 | }, |
| 11700 | .extra_temps = .{ | 20433 | .extra_temps = .{ |
| 11701 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20434 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11724,9 +20457,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11724,9 +20457,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11724 | } }, | 20457 | } }, |
| 11725 | }, .{ | 20458 | }, .{ |
| 11726 | .required_features = .{ .@"64bit", null, null, null }, | 20459 | .required_features = .{ .@"64bit", null, null, null }, |
| 11727 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 20460 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 11728 | .patterns = &.{ | 20461 | .patterns = &.{ |
| 11729 | .{ .src = .{ .mut_mem, .none } }, | 20462 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 11730 | }, | 20463 | }, |
| 11731 | .extra_temps = .{ | 20464 | .extra_temps = .{ |
| 11732 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20465 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11751,9 +20484,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11751,9 +20484,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11751 | } }, | 20484 | } }, |
| 11752 | }, .{ | 20485 | }, .{ |
| 11753 | .required_features = .{ .@"64bit", null, null, null }, | 20486 | .required_features = .{ .@"64bit", null, null, null }, |
| 11754 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 20487 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 11755 | .patterns = &.{ | 20488 | .patterns = &.{ |
| 11756 | .{ .src = .{ .to_mem, .none } }, | 20489 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11757 | }, | 20490 | }, |
| 11758 | .extra_temps = .{ | 20491 | .extra_temps = .{ |
| 11759 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20492 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11781,10 +20514,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11781,10 +20514,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11781 | } }, | 20514 | } }, |
| 11782 | }, .{ | 20515 | }, .{ |
| 11783 | .required_features = .{ .mmx, null, null, null }, | 20516 | .required_features = .{ .mmx, null, null, null }, |
| 11784 | .src_constraints = .{ .{ .signed_int_or_full_vec = .qword }, .any }, | 20517 | .src_constraints = .{ .{ .signed_int_or_full_vec = .qword }, .any, .any }, |
| 11785 | .patterns = &.{ | 20518 | .patterns = &.{ |
| 11786 | .{ .src = .{ .mem, .none } }, | 20519 | .{ .src = .{ .mem, .none, .none } }, |
| 11787 | .{ .src = .{ .to_mm, .none } }, | 20520 | .{ .src = .{ .to_mm, .none, .none } }, |
| 11788 | }, | 20521 | }, |
| 11789 | .dst_temps = .{.{ .rc = .mmx }}, | 20522 | .dst_temps = .{.{ .rc = .mmx }}, |
| 11790 | .each = .{ .once = &.{ | 20523 | .each = .{ .once = &.{ |
| ... | @@ -11793,9 +20526,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11793,9 +20526,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11793 | } }, | 20526 | } }, |
| 11794 | }, .{ | 20527 | }, .{ |
| 11795 | .required_features = .{ .mmx, null, null, null }, | 20528 | .required_features = .{ .mmx, null, null, null }, |
| 11796 | .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any }, | 20529 | .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any, .any }, |
| 11797 | .patterns = &.{ | 20530 | .patterns = &.{ |
| 11798 | .{ .src = .{ .to_mut_mm, .none } }, | 20531 | .{ .src = .{ .to_mut_mm, .none, .none } }, |
| 11799 | }, | 20532 | }, |
| 11800 | .extra_temps = .{ | 20533 | .extra_temps = .{ |
| 11801 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 20534 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11815,10 +20548,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11815,10 +20548,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11815 | } }, | 20548 | } }, |
| 11816 | }, .{ | 20549 | }, .{ |
| 11817 | .required_features = .{ .avx, null, null, null }, | 20550 | .required_features = .{ .avx, null, null, null }, |
| 11818 | .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any }, | 20551 | .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any, .any }, |
| 11819 | .patterns = &.{ | 20552 | .patterns = &.{ |
| 11820 | .{ .src = .{ .mem, .none } }, | 20553 | .{ .src = .{ .mem, .none, .none } }, |
| 11821 | .{ .src = .{ .to_xmm, .none } }, | 20554 | .{ .src = .{ .to_xmm, .none, .none } }, |
| 11822 | }, | 20555 | }, |
| 11823 | .dst_temps = .{.{ .rc = .sse }}, | 20556 | .dst_temps = .{.{ .rc = .sse }}, |
| 11824 | .each = .{ .once = &.{ | 20557 | .each = .{ .once = &.{ |
| ... | @@ -11827,9 +20560,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11827,9 +20560,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11827 | } }, | 20560 | } }, |
| 11828 | }, .{ | 20561 | }, .{ |
| 11829 | .required_features = .{ .avx, null, null, null }, | 20562 | .required_features = .{ .avx, null, null, null }, |
| 11830 | .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any }, | 20563 | .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any }, |
| 11831 | .patterns = &.{ | 20564 | .patterns = &.{ |
| 11832 | .{ .src = .{ .to_xmm, .none } }, | 20565 | .{ .src = .{ .to_xmm, .none, .none } }, |
| 11833 | }, | 20566 | }, |
| 11834 | .extra_temps = .{ | 20567 | .extra_temps = .{ |
| 11835 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 20568 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11849,10 +20582,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11849,10 +20582,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11849 | } }, | 20582 | } }, |
| 11850 | }, .{ | 20583 | }, .{ |
| 11851 | .required_features = .{ .sse2, null, null, null }, | 20584 | .required_features = .{ .sse2, null, null, null }, |
| 11852 | .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any }, | 20585 | .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any, .any }, |
| 11853 | .patterns = &.{ | 20586 | .patterns = &.{ |
| 11854 | .{ .src = .{ .mem, .none } }, | 20587 | .{ .src = .{ .mem, .none, .none } }, |
| 11855 | .{ .src = .{ .to_xmm, .none } }, | 20588 | .{ .src = .{ .to_xmm, .none, .none } }, |
| 11856 | }, | 20589 | }, |
| 11857 | .dst_temps = .{.{ .rc = .sse }}, | 20590 | .dst_temps = .{.{ .rc = .sse }}, |
| 11858 | .each = .{ .once = &.{ | 20591 | .each = .{ .once = &.{ |
| ... | @@ -11861,9 +20594,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11861,9 +20594,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11861 | } }, | 20594 | } }, |
| 11862 | }, .{ | 20595 | }, .{ |
| 11863 | .required_features = .{ .sse2, null, null, null }, | 20596 | .required_features = .{ .sse2, null, null, null }, |
| 11864 | .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any }, | 20597 | .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any }, |
| 11865 | .patterns = &.{ | 20598 | .patterns = &.{ |
| 11866 | .{ .src = .{ .to_mut_xmm, .none } }, | 20599 | .{ .src = .{ .to_mut_xmm, .none, .none } }, |
| 11867 | }, | 20600 | }, |
| 11868 | .extra_temps = .{ | 20601 | .extra_temps = .{ |
| 11869 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 20602 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11883,9 +20616,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11883,9 +20616,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11883 | } }, | 20616 | } }, |
| 11884 | }, .{ | 20617 | }, .{ |
| 11885 | .required_features = .{ .sse, null, null, null }, | 20618 | .required_features = .{ .sse, null, null, null }, |
| 11886 | .src_constraints = .{ .{ .vec = .xword }, .any }, | 20619 | .src_constraints = .{ .{ .vec = .xword }, .any, .any }, |
| 11887 | .patterns = &.{ | 20620 | .patterns = &.{ |
| 11888 | .{ .src = .{ .to_mut_xmm, .none } }, | 20621 | .{ .src = .{ .to_mut_xmm, .none, .none } }, |
| 11889 | }, | 20622 | }, |
| 11890 | .extra_temps = .{ | 20623 | .extra_temps = .{ |
| 11891 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 20624 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11905,10 +20638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11905,10 +20638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11905 | } }, | 20638 | } }, |
| 11906 | }, .{ | 20639 | }, .{ |
| 11907 | .required_features = .{ .avx2, null, null, null }, | 20640 | .required_features = .{ .avx2, null, null, null }, |
| 11908 | .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any }, | 20641 | .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any, .any }, |
| 11909 | .patterns = &.{ | 20642 | .patterns = &.{ |
| 11910 | .{ .src = .{ .mem, .none } }, | 20643 | .{ .src = .{ .mem, .none, .none } }, |
| 11911 | .{ .src = .{ .to_ymm, .none } }, | 20644 | .{ .src = .{ .to_ymm, .none, .none } }, |
| 11912 | }, | 20645 | }, |
| 11913 | .dst_temps = .{.{ .rc = .sse }}, | 20646 | .dst_temps = .{.{ .rc = .sse }}, |
| 11914 | .each = .{ .once = &.{ | 20647 | .each = .{ .once = &.{ |
| ... | @@ -11917,9 +20650,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11917,9 +20650,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11917 | } }, | 20650 | } }, |
| 11918 | }, .{ | 20651 | }, .{ |
| 11919 | .required_features = .{ .avx2, null, null, null }, | 20652 | .required_features = .{ .avx2, null, null, null }, |
| 11920 | .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any }, | 20653 | .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any }, |
| 11921 | .patterns = &.{ | 20654 | .patterns = &.{ |
| 11922 | .{ .src = .{ .to_ymm, .none } }, | 20655 | .{ .src = .{ .to_ymm, .none, .none } }, |
| 11923 | }, | 20656 | }, |
| 11924 | .extra_temps = .{ | 20657 | .extra_temps = .{ |
| 11925 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 20658 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11939,10 +20672,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11939,10 +20672,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11939 | } }, | 20672 | } }, |
| 11940 | }, .{ | 20673 | }, .{ |
| 11941 | .required_features = .{ .avx, null, null, null }, | 20674 | .required_features = .{ .avx, null, null, null }, |
| 11942 | .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any }, | 20675 | .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any, .any }, |
| 11943 | .patterns = &.{ | 20676 | .patterns = &.{ |
| 11944 | .{ .src = .{ .mem, .none } }, | 20677 | .{ .src = .{ .mem, .none, .none } }, |
| 11945 | .{ .src = .{ .to_ymm, .none } }, | 20678 | .{ .src = .{ .to_ymm, .none, .none } }, |
| 11946 | }, | 20679 | }, |
| 11947 | .dst_temps = .{.{ .rc = .sse }}, | 20680 | .dst_temps = .{.{ .rc = .sse }}, |
| 11948 | .each = .{ .once = &.{ | 20681 | .each = .{ .once = &.{ |
| ... | @@ -11951,9 +20684,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11951,9 +20684,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11951 | } }, | 20684 | } }, |
| 11952 | }, .{ | 20685 | }, .{ |
| 11953 | .required_features = .{ .avx, null, null, null }, | 20686 | .required_features = .{ .avx, null, null, null }, |
| 11954 | .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any }, | 20687 | .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any }, |
| 11955 | .patterns = &.{ | 20688 | .patterns = &.{ |
| 11956 | .{ .src = .{ .to_ymm, .none } }, | 20689 | .{ .src = .{ .to_ymm, .none, .none } }, |
| 11957 | }, | 20690 | }, |
| 11958 | .extra_temps = .{ | 20691 | .extra_temps = .{ |
| 11959 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 20692 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -11974,7 +20707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11974,7 +20707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11974 | }, .{ | 20707 | }, .{ |
| 11975 | .required_features = .{ .@"64bit", null, null, null }, | 20708 | .required_features = .{ .@"64bit", null, null, null }, |
| 11976 | .patterns = &.{ | 20709 | .patterns = &.{ |
| 11977 | .{ .src = .{ .to_mem, .none } }, | 20710 | .{ .src = .{ .to_mem, .none, .none } }, |
| 11978 | }, | 20711 | }, |
| 11979 | .extra_temps = .{ | 20712 | .extra_temps = .{ |
| 11980 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20713 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12000,7 +20733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12000,7 +20733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12000 | } }, | 20733 | } }, |
| 12001 | }, .{ | 20734 | }, .{ |
| 12002 | .patterns = &.{ | 20735 | .patterns = &.{ |
| 12003 | .{ .src = .{ .to_mem, .none } }, | 20736 | .{ .src = .{ .to_mem, .none, .none } }, |
| 12004 | }, | 20737 | }, |
| 12005 | .extra_temps = .{ | 20738 | .extra_temps = .{ |
| 12006 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 20739 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12090,10 +20823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12090,10 +20823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12090 | var res: [1]Temp = undefined; | 20823 | var res: [1]Temp = undefined; |
| 12091 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ | 20824 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ |
| 12092 | .required_features = .{ .slow_incdec, null, null, null }, | 20825 | .required_features = .{ .slow_incdec, null, null, null }, |
| 12093 | .src_constraints = .{ .{ .exact_signed_int = 1 }, .any }, | 20826 | .src_constraints = .{ .{ .exact_signed_int = 1 }, .any, .any }, |
| 12094 | .patterns = &.{ | 20827 | .patterns = &.{ |
| 12095 | .{ .src = .{ .mut_mem, .none } }, | 20828 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 12096 | .{ .src = .{ .to_mut_gpr, .none } }, | 20829 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12097 | }, | 20830 | }, |
| 12098 | .dst_temps = .{.{ .ref = .src0 }}, | 20831 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12099 | .clobbers = .{ .eflags = true }, | 20832 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12101,10 +20834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12101,10 +20834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12101 | .{ ._, ._, .add, .dst0b, .si(1), ._, ._ }, | 20834 | .{ ._, ._, .add, .dst0b, .si(1), ._, ._ }, |
| 12102 | } }, | 20835 | } }, |
| 12103 | }, .{ | 20836 | }, .{ |
| 12104 | .src_constraints = .{ .{ .exact_signed_int = 1 }, .any }, | 20837 | .src_constraints = .{ .{ .exact_signed_int = 1 }, .any, .any }, |
| 12105 | .patterns = &.{ | 20838 | .patterns = &.{ |
| 12106 | .{ .src = .{ .mut_mem, .none } }, | 20839 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 12107 | .{ .src = .{ .to_mut_gpr, .none } }, | 20840 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12108 | }, | 20841 | }, |
| 12109 | .dst_temps = .{.{ .ref = .src0 }}, | 20842 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12110 | .clobbers = .{ .eflags = true }, | 20843 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12112,10 +20845,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12112,10 +20845,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12112 | .{ ._, ._c, .in, .dst0b, ._, ._, ._ }, | 20845 | .{ ._, ._c, .in, .dst0b, ._, ._, ._ }, |
| 12113 | } }, | 20846 | } }, |
| 12114 | }, .{ | 20847 | }, .{ |
| 12115 | .src_constraints = .{ .{ .exact_unsigned_int = 1 }, .any }, | 20848 | .src_constraints = .{ .{ .exact_unsigned_int = 1 }, .any, .any }, |
| 12116 | .patterns = &.{ | 20849 | .patterns = &.{ |
| 12117 | .{ .src = .{ .mut_mem, .none } }, | 20850 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 12118 | .{ .src = .{ .to_mut_gpr, .none } }, | 20851 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12119 | }, | 20852 | }, |
| 12120 | .dst_temps = .{.{ .ref = .src0 }}, | 20853 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12121 | .clobbers = .{ .eflags = true }, | 20854 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12124,10 +20857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12124,10 +20857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12124 | } }, | 20857 | } }, |
| 12125 | }, .{ | 20858 | }, .{ |
| 12126 | .required_features = .{ .lzcnt, null, null, null }, | 20859 | .required_features = .{ .lzcnt, null, null, null }, |
| 12127 | .src_constraints = .{ .{ .unsigned_or_exact_int = .byte }, .any }, | 20860 | .src_constraints = .{ .{ .unsigned_or_exact_int = .byte }, .any, .any }, |
| 12128 | .patterns = &.{ | 20861 | .patterns = &.{ |
| 12129 | .{ .src = .{ .mem, .none } }, | 20862 | .{ .src = .{ .mem, .none, .none } }, |
| 12130 | .{ .src = .{ .to_gpr, .none } }, | 20863 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12131 | }, | 20864 | }, |
| 12132 | .dst_temps = .{.{ .rc = .general_purpose }}, | 20865 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12133 | .clobbers = .{ .eflags = true }, | 20866 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12138,10 +20871,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12138,10 +20871,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12138 | } }, | 20871 | } }, |
| 12139 | }, .{ | 20872 | }, .{ |
| 12140 | .required_features = .{ .lzcnt, null, null, null }, | 20873 | .required_features = .{ .lzcnt, null, null, null }, |
| 12141 | .src_constraints = .{ .{ .signed_int = .byte }, .any }, | 20874 | .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, |
| 12142 | .patterns = &.{ | 20875 | .patterns = &.{ |
| 12143 | .{ .src = .{ .mem, .none } }, | 20876 | .{ .src = .{ .mem, .none, .none } }, |
| 12144 | .{ .src = .{ .to_gpr, .none } }, | 20877 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12145 | }, | 20878 | }, |
| 12146 | .dst_temps = .{.{ .rc = .general_purpose }}, | 20879 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12147 | .clobbers = .{ .eflags = true }, | 20880 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12153,9 +20886,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12153,9 +20886,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12153 | } }, | 20886 | } }, |
| 12154 | }, .{ | 20887 | }, .{ |
| 12155 | .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null }, | 20888 | .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null }, |
| 12156 | .src_constraints = .{ .{ .exact_int = 16 }, .any }, | 20889 | .src_constraints = .{ .{ .exact_int = 16 }, .any, .any }, |
| 12157 | .patterns = &.{ | 20890 | .patterns = &.{ |
| 12158 | .{ .src = .{ .to_mut_gpr, .none } }, | 20891 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12159 | }, | 20892 | }, |
| 12160 | .dst_temps = .{.{ .ref = .src0 }}, | 20893 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12161 | .clobbers = .{ .eflags = true }, | 20894 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12164,10 +20897,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12164,10 +20897,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12164 | } }, | 20897 | } }, |
| 12165 | }, .{ | 20898 | }, .{ |
| 12166 | .required_features = .{ .lzcnt, null, null, null }, | 20899 | .required_features = .{ .lzcnt, null, null, null }, |
| 12167 | .src_constraints = .{ .{ .exact_int = 16 }, .any }, | 20900 | .src_constraints = .{ .{ .exact_int = 16 }, .any, .any }, |
| 12168 | .patterns = &.{ | 20901 | .patterns = &.{ |
| 12169 | .{ .src = .{ .mem, .none } }, | 20902 | .{ .src = .{ .mem, .none, .none } }, |
| 12170 | .{ .src = .{ .to_gpr, .none } }, | 20903 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12171 | }, | 20904 | }, |
| 12172 | .dst_temps = .{.{ .rc = .general_purpose }}, | 20905 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12173 | .clobbers = .{ .eflags = true }, | 20906 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12176,9 +20909,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12176,9 +20909,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12176 | } }, | 20909 | } }, |
| 12177 | }, .{ | 20910 | }, .{ |
| 12178 | .required_features = .{ .lzcnt, null, null, null }, | 20911 | .required_features = .{ .lzcnt, null, null, null }, |
| 12179 | .src_constraints = .{ .{ .signed_int = .word }, .any }, | 20912 | .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, |
| 12180 | .patterns = &.{ | 20913 | .patterns = &.{ |
| 12181 | .{ .src = .{ .to_mut_gpr, .none } }, | 20914 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12182 | }, | 20915 | }, |
| 12183 | .dst_temps = .{.{ .ref = .src0 }}, | 20916 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12184 | .clobbers = .{ .eflags = true }, | 20917 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12189,9 +20922,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12189,9 +20922,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12189 | } }, | 20922 | } }, |
| 12190 | }, .{ | 20923 | }, .{ |
| 12191 | .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null }, | 20924 | .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null }, |
| 12192 | .src_constraints = .{ .{ .unsigned_int = .word }, .any }, | 20925 | .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, |
| 12193 | .patterns = &.{ | 20926 | .patterns = &.{ |
| 12194 | .{ .src = .{ .to_mut_gpr, .none } }, | 20927 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12195 | }, | 20928 | }, |
| 12196 | .dst_temps = .{.{ .ref = .src0 }}, | 20929 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12197 | .clobbers = .{ .eflags = true }, | 20930 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12201,10 +20934,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12201,10 +20934,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12201 | } }, | 20934 | } }, |
| 12202 | }, .{ | 20935 | }, .{ |
| 12203 | .required_features = .{ .lzcnt, null, null, null }, | 20936 | .required_features = .{ .lzcnt, null, null, null }, |
| 12204 | .src_constraints = .{ .{ .unsigned_int = .word }, .any }, | 20937 | .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, |
| 12205 | .patterns = &.{ | 20938 | .patterns = &.{ |
| 12206 | .{ .src = .{ .mem, .none } }, | 20939 | .{ .src = .{ .mem, .none, .none } }, |
| 12207 | .{ .src = .{ .to_gpr, .none } }, | 20940 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12208 | }, | 20941 | }, |
| 12209 | .dst_temps = .{.{ .rc = .general_purpose }}, | 20942 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12210 | .clobbers = .{ .eflags = true }, | 20943 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12214,9 +20947,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12214,9 +20947,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12214 | } }, | 20947 | } }, |
| 12215 | }, .{ | 20948 | }, .{ |
| 12216 | .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null }, | 20949 | .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null }, |
| 12217 | .src_constraints = .{ .{ .exact_int = 32 }, .any }, | 20950 | .src_constraints = .{ .{ .exact_int = 32 }, .any, .any }, |
| 12218 | .patterns = &.{ | 20951 | .patterns = &.{ |
| 12219 | .{ .src = .{ .to_mut_gpr, .none } }, | 20952 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12220 | }, | 20953 | }, |
| 12221 | .dst_temps = .{.{ .ref = .src0 }}, | 20954 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12222 | .clobbers = .{ .eflags = true }, | 20955 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12225,10 +20958,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12225,10 +20958,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12225 | } }, | 20958 | } }, |
| 12226 | }, .{ | 20959 | }, .{ |
| 12227 | .required_features = .{ .lzcnt, null, null, null }, | 20960 | .required_features = .{ .lzcnt, null, null, null }, |
| 12228 | .src_constraints = .{ .{ .exact_int = 32 }, .any }, | 20961 | .src_constraints = .{ .{ .exact_int = 32 }, .any, .any }, |
| 12229 | .patterns = &.{ | 20962 | .patterns = &.{ |
| 12230 | .{ .src = .{ .mem, .none } }, | 20963 | .{ .src = .{ .mem, .none, .none } }, |
| 12231 | .{ .src = .{ .to_gpr, .none } }, | 20964 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12232 | }, | 20965 | }, |
| 12233 | .dst_temps = .{.{ .rc = .general_purpose }}, | 20966 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12234 | .clobbers = .{ .eflags = true }, | 20967 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12237,9 +20970,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12237,9 +20970,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12237 | } }, | 20970 | } }, |
| 12238 | }, .{ | 20971 | }, .{ |
| 12239 | .required_features = .{ .lzcnt, null, null, null }, | 20972 | .required_features = .{ .lzcnt, null, null, null }, |
| 12240 | .src_constraints = .{ .{ .signed_int = .dword }, .any }, | 20973 | .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, |
| 12241 | .patterns = &.{ | 20974 | .patterns = &.{ |
| 12242 | .{ .src = .{ .to_mut_gpr, .none } }, | 20975 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12243 | }, | 20976 | }, |
| 12244 | .dst_temps = .{.{ .ref = .src0 }}, | 20977 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12245 | .clobbers = .{ .eflags = true }, | 20978 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12250,9 +20983,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12250,9 +20983,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12250 | } }, | 20983 | } }, |
| 12251 | }, .{ | 20984 | }, .{ |
| 12252 | .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null }, | 20985 | .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null }, |
| 12253 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any }, | 20986 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, |
| 12254 | .patterns = &.{ | 20987 | .patterns = &.{ |
| 12255 | .{ .src = .{ .to_mut_gpr, .none } }, | 20988 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12256 | }, | 20989 | }, |
| 12257 | .dst_temps = .{.{ .ref = .src0 }}, | 20990 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12258 | .clobbers = .{ .eflags = true }, | 20991 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12262,10 +20995,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12262,10 +20995,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12262 | } }, | 20995 | } }, |
| 12263 | }, .{ | 20996 | }, .{ |
| 12264 | .required_features = .{ .lzcnt, null, null, null }, | 20997 | .required_features = .{ .lzcnt, null, null, null }, |
| 12265 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any }, | 20998 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, |
| 12266 | .patterns = &.{ | 20999 | .patterns = &.{ |
| 12267 | .{ .src = .{ .mem, .none } }, | 21000 | .{ .src = .{ .mem, .none, .none } }, |
| 12268 | .{ .src = .{ .to_gpr, .none } }, | 21001 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12269 | }, | 21002 | }, |
| 12270 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21003 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12271 | .clobbers = .{ .eflags = true }, | 21004 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12275,9 +21008,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12275,9 +21008,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12275 | } }, | 21008 | } }, |
| 12276 | }, .{ | 21009 | }, .{ |
| 12277 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, | 21010 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, |
| 12278 | .src_constraints = .{ .{ .exact_int = 64 }, .any }, | 21011 | .src_constraints = .{ .{ .exact_int = 64 }, .any, .any }, |
| 12279 | .patterns = &.{ | 21012 | .patterns = &.{ |
| 12280 | .{ .src = .{ .to_mut_gpr, .none } }, | 21013 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12281 | }, | 21014 | }, |
| 12282 | .dst_temps = .{.{ .ref = .src0 }}, | 21015 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12283 | .clobbers = .{ .eflags = true }, | 21016 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12286,10 +21019,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12286,10 +21019,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12286 | } }, | 21019 | } }, |
| 12287 | }, .{ | 21020 | }, .{ |
| 12288 | .required_features = .{ .@"64bit", .lzcnt, null, null }, | 21021 | .required_features = .{ .@"64bit", .lzcnt, null, null }, |
| 12289 | .src_constraints = .{ .{ .exact_int = 64 }, .any }, | 21022 | .src_constraints = .{ .{ .exact_int = 64 }, .any, .any }, |
| 12290 | .patterns = &.{ | 21023 | .patterns = &.{ |
| 12291 | .{ .src = .{ .mem, .none } }, | 21024 | .{ .src = .{ .mem, .none, .none } }, |
| 12292 | .{ .src = .{ .to_gpr, .none } }, | 21025 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12293 | }, | 21026 | }, |
| 12294 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21027 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12295 | .clobbers = .{ .eflags = true }, | 21028 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12298,10 +21031,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12298,10 +21031,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12298 | } }, | 21031 | } }, |
| 12299 | }, .{ | 21032 | }, .{ |
| 12300 | .required_features = .{ .@"64bit", .lzcnt, null, null }, | 21033 | .required_features = .{ .@"64bit", .lzcnt, null, null }, |
| 12301 | .src_constraints = .{ .{ .signed_int = .qword }, .any }, | 21034 | .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, |
| 12302 | .patterns = &.{ | 21035 | .patterns = &.{ |
| 12303 | .{ .src = .{ .mem, .none } }, | 21036 | .{ .src = .{ .mem, .none, .none } }, |
| 12304 | .{ .src = .{ .to_gpr, .none } }, | 21037 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12305 | }, | 21038 | }, |
| 12306 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21039 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12307 | .clobbers = .{ .eflags = true }, | 21040 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12313,9 +21046,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12313,9 +21046,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12313 | } }, | 21046 | } }, |
| 12314 | }, .{ | 21047 | }, .{ |
| 12315 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, | 21048 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, |
| 12316 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, | 21049 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| 12317 | .patterns = &.{ | 21050 | .patterns = &.{ |
| 12318 | .{ .src = .{ .to_mut_gpr, .none } }, | 21051 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12319 | }, | 21052 | }, |
| 12320 | .dst_temps = .{.{ .ref = .src0 }}, | 21053 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12321 | .clobbers = .{ .eflags = true }, | 21054 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12325,10 +21058,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12325,10 +21058,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12325 | } }, | 21058 | } }, |
| 12326 | }, .{ | 21059 | }, .{ |
| 12327 | .required_features = .{ .@"64bit", .lzcnt, null, null }, | 21060 | .required_features = .{ .@"64bit", .lzcnt, null, null }, |
| 12328 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, | 21061 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| 12329 | .patterns = &.{ | 21062 | .patterns = &.{ |
| 12330 | .{ .src = .{ .mem, .none } }, | 21063 | .{ .src = .{ .mem, .none, .none } }, |
| 12331 | .{ .src = .{ .to_gpr, .none } }, | 21064 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12332 | }, | 21065 | }, |
| 12333 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21066 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12334 | .clobbers = .{ .eflags = true }, | 21067 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12338,10 +21071,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12338,10 +21071,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12338 | } }, | 21071 | } }, |
| 12339 | }, .{ | 21072 | }, .{ |
| 12340 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 21073 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 12341 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any }, | 21074 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any }, |
| 12342 | .patterns = &.{ | 21075 | .patterns = &.{ |
| 12343 | .{ .src = .{ .mem, .none } }, | 21076 | .{ .src = .{ .mem, .none, .none } }, |
| 12344 | .{ .src = .{ .to_gpr, .none } }, | 21077 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12345 | }, | 21078 | }, |
| 12346 | .extra_temps = .{ | 21079 | .extra_temps = .{ |
| 12347 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21080 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12365,10 +21098,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12365,10 +21098,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12365 | } }, | 21098 | } }, |
| 12366 | }, .{ | 21099 | }, .{ |
| 12367 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 21100 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 12368 | .src_constraints = .{ .{ .signed_po2_int = .byte }, .any }, | 21101 | .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any }, |
| 12369 | .patterns = &.{ | 21102 | .patterns = &.{ |
| 12370 | .{ .src = .{ .mem, .none } }, | 21103 | .{ .src = .{ .mem, .none, .none } }, |
| 12371 | .{ .src = .{ .to_gpr, .none } }, | 21104 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12372 | }, | 21105 | }, |
| 12373 | .extra_temps = .{ | 21106 | .extra_temps = .{ |
| 12374 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21107 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12393,10 +21126,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12393,10 +21126,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12393 | } }, | 21126 | } }, |
| 12394 | }, .{ | 21127 | }, .{ |
| 12395 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 21128 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 12396 | .src_constraints = .{ .{ .signed_int = .byte }, .any }, | 21129 | .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, |
| 12397 | .patterns = &.{ | 21130 | .patterns = &.{ |
| 12398 | .{ .src = .{ .mem, .none } }, | 21131 | .{ .src = .{ .mem, .none, .none } }, |
| 12399 | .{ .src = .{ .to_gpr, .none } }, | 21132 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12400 | }, | 21133 | }, |
| 12401 | .extra_temps = .{ | 21134 | .extra_temps = .{ |
| 12402 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21135 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12422,10 +21155,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12422,10 +21155,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12422 | } }, | 21155 | } }, |
| 12423 | }, .{ | 21156 | }, .{ |
| 12424 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 21157 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 12425 | .src_constraints = .{ .{ .unsigned_int = .byte }, .any }, | 21158 | .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, |
| 12426 | .patterns = &.{ | 21159 | .patterns = &.{ |
| 12427 | .{ .src = .{ .mem, .none } }, | 21160 | .{ .src = .{ .mem, .none, .none } }, |
| 12428 | .{ .src = .{ .to_gpr, .none } }, | 21161 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12429 | }, | 21162 | }, |
| 12430 | .extra_temps = .{ | 21163 | .extra_temps = .{ |
| 12431 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21164 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12450,10 +21183,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12450,10 +21183,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12450 | } }, | 21183 | } }, |
| 12451 | }, .{ | 21184 | }, .{ |
| 12452 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 21185 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 12453 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any }, | 21186 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any }, |
| 12454 | .patterns = &.{ | 21187 | .patterns = &.{ |
| 12455 | .{ .src = .{ .mem, .none } }, | 21188 | .{ .src = .{ .mem, .none, .none } }, |
| 12456 | .{ .src = .{ .to_gpr, .none } }, | 21189 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12457 | }, | 21190 | }, |
| 12458 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21191 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12459 | .clobbers = .{ .eflags = true }, | 21192 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12466,10 +21199,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12466,10 +21199,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12466 | } }, | 21199 | } }, |
| 12467 | }, .{ | 21200 | }, .{ |
| 12468 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 21201 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 12469 | .src_constraints = .{ .{ .signed_po2_int = .byte }, .any }, | 21202 | .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any }, |
| 12470 | .patterns = &.{ | 21203 | .patterns = &.{ |
| 12471 | .{ .src = .{ .mem, .none } }, | 21204 | .{ .src = .{ .mem, .none, .none } }, |
| 12472 | .{ .src = .{ .to_gpr, .none } }, | 21205 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12473 | }, | 21206 | }, |
| 12474 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21207 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12475 | .clobbers = .{ .eflags = true }, | 21208 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12483,10 +21216,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12483,10 +21216,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12483 | } }, | 21216 | } }, |
| 12484 | }, .{ | 21217 | }, .{ |
| 12485 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 21218 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 12486 | .src_constraints = .{ .{ .signed_int = .byte }, .any }, | 21219 | .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, |
| 12487 | .patterns = &.{ | 21220 | .patterns = &.{ |
| 12488 | .{ .src = .{ .mem, .none } }, | 21221 | .{ .src = .{ .mem, .none, .none } }, |
| 12489 | .{ .src = .{ .to_gpr, .none } }, | 21222 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12490 | }, | 21223 | }, |
| 12491 | .extra_temps = .{ | 21224 | .extra_temps = .{ |
| 12492 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21225 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12512,10 +21245,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12512,10 +21245,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12512 | } }, | 21245 | } }, |
| 12513 | }, .{ | 21246 | }, .{ |
| 12514 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 21247 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 12515 | .src_constraints = .{ .{ .unsigned_int = .byte }, .any }, | 21248 | .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, |
| 12516 | .patterns = &.{ | 21249 | .patterns = &.{ |
| 12517 | .{ .src = .{ .mem, .none } }, | 21250 | .{ .src = .{ .mem, .none, .none } }, |
| 12518 | .{ .src = .{ .to_gpr, .none } }, | 21251 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12519 | }, | 21252 | }, |
| 12520 | .extra_temps = .{ | 21253 | .extra_temps = .{ |
| 12521 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21254 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12539,10 +21272,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12539,10 +21272,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12539 | .{ ._, ._, .sbb, .dst0b, .tmp0b, ._, ._ }, | 21272 | .{ ._, ._, .sbb, .dst0b, .tmp0b, ._, ._ }, |
| 12540 | } }, | 21273 | } }, |
| 12541 | }, .{ | 21274 | }, .{ |
| 12542 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any }, | 21275 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any }, |
| 12543 | .patterns = &.{ | 21276 | .patterns = &.{ |
| 12544 | .{ .src = .{ .mem, .none } }, | 21277 | .{ .src = .{ .mem, .none, .none } }, |
| 12545 | .{ .src = .{ .to_gpr, .none } }, | 21278 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12546 | }, | 21279 | }, |
| 12547 | .extra_temps = .{ | 21280 | .extra_temps = .{ |
| 12548 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21281 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12564,10 +21297,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12564,10 +21297,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12564 | .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ }, | 21297 | .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 12565 | } }, | 21298 | } }, |
| 12566 | }, .{ | 21299 | }, .{ |
| 12567 | .src_constraints = .{ .{ .signed_po2_int = .byte }, .any }, | 21300 | .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any }, |
| 12568 | .patterns = &.{ | 21301 | .patterns = &.{ |
| 12569 | .{ .src = .{ .mem, .none } }, | 21302 | .{ .src = .{ .mem, .none, .none } }, |
| 12570 | .{ .src = .{ .to_gpr, .none } }, | 21303 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12571 | }, | 21304 | }, |
| 12572 | .extra_temps = .{ | 21305 | .extra_temps = .{ |
| 12573 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21306 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12590,10 +21323,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12590,10 +21323,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12590 | .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ }, | 21323 | .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 12591 | } }, | 21324 | } }, |
| 12592 | }, .{ | 21325 | }, .{ |
| 12593 | .src_constraints = .{ .{ .signed_int = .byte }, .any }, | 21326 | .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, |
| 12594 | .patterns = &.{ | 21327 | .patterns = &.{ |
| 12595 | .{ .src = .{ .mem, .none } }, | 21328 | .{ .src = .{ .mem, .none, .none } }, |
| 12596 | .{ .src = .{ .to_gpr, .none } }, | 21329 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12597 | }, | 21330 | }, |
| 12598 | .extra_temps = .{ | 21331 | .extra_temps = .{ |
| 12599 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21332 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12617,10 +21350,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12617,10 +21350,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12617 | .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ }, | 21350 | .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ }, |
| 12618 | } }, | 21351 | } }, |
| 12619 | }, .{ | 21352 | }, .{ |
| 12620 | .src_constraints = .{ .{ .unsigned_int = .byte }, .any }, | 21353 | .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, |
| 12621 | .patterns = &.{ | 21354 | .patterns = &.{ |
| 12622 | .{ .src = .{ .mem, .none } }, | 21355 | .{ .src = .{ .mem, .none, .none } }, |
| 12623 | .{ .src = .{ .to_gpr, .none } }, | 21356 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12624 | }, | 21357 | }, |
| 12625 | .extra_temps = .{ | 21358 | .extra_temps = .{ |
| 12626 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21359 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12644,9 +21377,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12644,9 +21377,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12644 | } }, | 21377 | } }, |
| 12645 | }, .{ | 21378 | }, .{ |
| 12646 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 21379 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 12647 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any }, | 21380 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any }, |
| 12648 | .patterns = &.{ | 21381 | .patterns = &.{ |
| 12649 | .{ .src = .{ .to_mut_gpr, .none } }, | 21382 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12650 | }, | 21383 | }, |
| 12651 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21384 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12652 | .clobbers = .{ .eflags = true }, | 21385 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12658,9 +21391,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12658,9 +21391,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12658 | } }, | 21391 | } }, |
| 12659 | }, .{ | 21392 | }, .{ |
| 12660 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 21393 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 12661 | .src_constraints = .{ .{ .signed_int = .word }, .any }, | 21394 | .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, |
| 12662 | .patterns = &.{ | 21395 | .patterns = &.{ |
| 12663 | .{ .src = .{ .to_mut_gpr, .none } }, | 21396 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12664 | }, | 21397 | }, |
| 12665 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21398 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12666 | .clobbers = .{ .eflags = true }, | 21399 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12674,9 +21407,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12674,9 +21407,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12674 | } }, | 21407 | } }, |
| 12675 | }, .{ | 21408 | }, .{ |
| 12676 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 21409 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 12677 | .src_constraints = .{ .{ .unsigned_int = .word }, .any }, | 21410 | .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, |
| 12678 | .patterns = &.{ | 21411 | .patterns = &.{ |
| 12679 | .{ .src = .{ .to_mut_gpr, .none } }, | 21412 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12680 | }, | 21413 | }, |
| 12681 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21414 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12682 | .clobbers = .{ .eflags = true }, | 21415 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12689,9 +21422,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12689,9 +21422,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12689 | } }, | 21422 | } }, |
| 12690 | }, .{ | 21423 | }, .{ |
| 12691 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 21424 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 12692 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any }, | 21425 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any }, |
| 12693 | .patterns = &.{ | 21426 | .patterns = &.{ |
| 12694 | .{ .src = .{ .to_mut_gpr, .none } }, | 21427 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12695 | }, | 21428 | }, |
| 12696 | .dst_temps = .{.{ .ref = .src0 }}, | 21429 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12697 | .clobbers = .{ .eflags = true }, | 21430 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12703,9 +21436,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12703,9 +21436,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12703 | } }, | 21436 | } }, |
| 12704 | }, .{ | 21437 | }, .{ |
| 12705 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 21438 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 12706 | .src_constraints = .{ .{ .signed_int = .word }, .any }, | 21439 | .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, |
| 12707 | .patterns = &.{ | 21440 | .patterns = &.{ |
| 12708 | .{ .src = .{ .to_mut_gpr, .none } }, | 21441 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12709 | }, | 21442 | }, |
| 12710 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21443 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12711 | .clobbers = .{ .eflags = true }, | 21444 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12719,9 +21452,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12719,9 +21452,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12719 | } }, | 21452 | } }, |
| 12720 | }, .{ | 21453 | }, .{ |
| 12721 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 21454 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 12722 | .src_constraints = .{ .{ .unsigned_int = .word }, .any }, | 21455 | .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, |
| 12723 | .patterns = &.{ | 21456 | .patterns = &.{ |
| 12724 | .{ .src = .{ .to_mut_gpr, .none } }, | 21457 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12725 | }, | 21458 | }, |
| 12726 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21459 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12727 | .clobbers = .{ .eflags = true }, | 21460 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12733,10 +21466,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12733,10 +21466,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12733 | .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ }, | 21466 | .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ }, |
| 12734 | } }, | 21467 | } }, |
| 12735 | }, .{ | 21468 | }, .{ |
| 12736 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any }, | 21469 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any }, |
| 12737 | .patterns = &.{ | 21470 | .patterns = &.{ |
| 12738 | .{ .src = .{ .mem, .none } }, | 21471 | .{ .src = .{ .mem, .none, .none } }, |
| 12739 | .{ .src = .{ .to_gpr, .none } }, | 21472 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12740 | }, | 21473 | }, |
| 12741 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21474 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12742 | .clobbers = .{ .eflags = true }, | 21475 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12746,9 +21479,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12746,9 +21479,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12746 | .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ }, | 21479 | .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 12747 | } }, | 21480 | } }, |
| 12748 | }, .{ | 21481 | }, .{ |
| 12749 | .src_constraints = .{ .{ .signed_int = .word }, .any }, | 21482 | .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, |
| 12750 | .patterns = &.{ | 21483 | .patterns = &.{ |
| 12751 | .{ .src = .{ .to_mut_gpr, .none } }, | 21484 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12752 | }, | 21485 | }, |
| 12753 | .extra_temps = .{ | 21486 | .extra_temps = .{ |
| 12754 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, | 21487 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12771,10 +21504,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12771,10 +21504,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12771 | .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ }, | 21504 | .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ }, |
| 12772 | } }, | 21505 | } }, |
| 12773 | }, .{ | 21506 | }, .{ |
| 12774 | .src_constraints = .{ .{ .unsigned_int = .word }, .any }, | 21507 | .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, |
| 12775 | .patterns = &.{ | 21508 | .patterns = &.{ |
| 12776 | .{ .src = .{ .mem, .none } }, | 21509 | .{ .src = .{ .mem, .none, .none } }, |
| 12777 | .{ .src = .{ .to_gpr, .none } }, | 21510 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12778 | }, | 21511 | }, |
| 12779 | .extra_temps = .{ | 21512 | .extra_temps = .{ |
| 12780 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, | 21513 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12797,9 +21530,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12797,9 +21530,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12797 | } }, | 21530 | } }, |
| 12798 | }, .{ | 21531 | }, .{ |
| 12799 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 21532 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 12800 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any }, | 21533 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any }, |
| 12801 | .patterns = &.{ | 21534 | .patterns = &.{ |
| 12802 | .{ .src = .{ .to_mut_gpr, .none } }, | 21535 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12803 | }, | 21536 | }, |
| 12804 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21537 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12805 | .clobbers = .{ .eflags = true }, | 21538 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12811,9 +21544,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12811,9 +21544,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12811 | } }, | 21544 | } }, |
| 12812 | }, .{ | 21545 | }, .{ |
| 12813 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 21546 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 12814 | .src_constraints = .{ .{ .signed_int = .dword }, .any }, | 21547 | .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, |
| 12815 | .patterns = &.{ | 21548 | .patterns = &.{ |
| 12816 | .{ .src = .{ .to_mut_gpr, .none } }, | 21549 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12817 | }, | 21550 | }, |
| 12818 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21551 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12819 | .clobbers = .{ .eflags = true }, | 21552 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12827,9 +21560,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12827,9 +21560,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12827 | } }, | 21560 | } }, |
| 12828 | }, .{ | 21561 | }, .{ |
| 12829 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 21562 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 12830 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any }, | 21563 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, |
| 12831 | .patterns = &.{ | 21564 | .patterns = &.{ |
| 12832 | .{ .src = .{ .to_mut_gpr, .none } }, | 21565 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12833 | }, | 21566 | }, |
| 12834 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21567 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12835 | .clobbers = .{ .eflags = true }, | 21568 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12842,9 +21575,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12842,9 +21575,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12842 | } }, | 21575 | } }, |
| 12843 | }, .{ | 21576 | }, .{ |
| 12844 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 21577 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 12845 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any }, | 21578 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any }, |
| 12846 | .patterns = &.{ | 21579 | .patterns = &.{ |
| 12847 | .{ .src = .{ .to_mut_gpr, .none } }, | 21580 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12848 | }, | 21581 | }, |
| 12849 | .dst_temps = .{.{ .ref = .src0 }}, | 21582 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12850 | .clobbers = .{ .eflags = true }, | 21583 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12856,9 +21589,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12856,9 +21589,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12856 | } }, | 21589 | } }, |
| 12857 | }, .{ | 21590 | }, .{ |
| 12858 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 21591 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 12859 | .src_constraints = .{ .{ .signed_int = .dword }, .any }, | 21592 | .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, |
| 12860 | .patterns = &.{ | 21593 | .patterns = &.{ |
| 12861 | .{ .src = .{ .to_mut_gpr, .none } }, | 21594 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12862 | }, | 21595 | }, |
| 12863 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21596 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12864 | .clobbers = .{ .eflags = true }, | 21597 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12872,9 +21605,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12872,9 +21605,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12872 | } }, | 21605 | } }, |
| 12873 | }, .{ | 21606 | }, .{ |
| 12874 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 21607 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 12875 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any }, | 21608 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, |
| 12876 | .patterns = &.{ | 21609 | .patterns = &.{ |
| 12877 | .{ .src = .{ .to_mut_gpr, .none } }, | 21610 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12878 | }, | 21611 | }, |
| 12879 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21612 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12880 | .clobbers = .{ .eflags = true }, | 21613 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12886,10 +21619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12886,10 +21619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12886 | .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ }, | 21619 | .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ }, |
| 12887 | } }, | 21620 | } }, |
| 12888 | }, .{ | 21621 | }, .{ |
| 12889 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any }, | 21622 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any }, |
| 12890 | .patterns = &.{ | 21623 | .patterns = &.{ |
| 12891 | .{ .src = .{ .mem, .none } }, | 21624 | .{ .src = .{ .mem, .none, .none } }, |
| 12892 | .{ .src = .{ .to_gpr, .none } }, | 21625 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12893 | }, | 21626 | }, |
| 12894 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21627 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12895 | .clobbers = .{ .eflags = true }, | 21628 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12899,9 +21632,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12899,9 +21632,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12899 | .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ }, | 21632 | .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 12900 | } }, | 21633 | } }, |
| 12901 | }, .{ | 21634 | }, .{ |
| 12902 | .src_constraints = .{ .{ .signed_int = .dword }, .any }, | 21635 | .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, |
| 12903 | .patterns = &.{ | 21636 | .patterns = &.{ |
| 12904 | .{ .src = .{ .to_mut_gpr, .none } }, | 21637 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12905 | }, | 21638 | }, |
| 12906 | .extra_temps = .{ | 21639 | .extra_temps = .{ |
| 12907 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21640 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12924,10 +21657,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12924,10 +21657,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12924 | .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ }, | 21657 | .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ }, |
| 12925 | } }, | 21658 | } }, |
| 12926 | }, .{ | 21659 | }, .{ |
| 12927 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any }, | 21660 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, |
| 12928 | .patterns = &.{ | 21661 | .patterns = &.{ |
| 12929 | .{ .src = .{ .mem, .none } }, | 21662 | .{ .src = .{ .mem, .none, .none } }, |
| 12930 | .{ .src = .{ .to_gpr, .none } }, | 21663 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12931 | }, | 21664 | }, |
| 12932 | .extra_temps = .{ | 21665 | .extra_temps = .{ |
| 12933 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21666 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12950,9 +21683,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12950,9 +21683,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12950 | } }, | 21683 | } }, |
| 12951 | }, .{ | 21684 | }, .{ |
| 12952 | .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null }, | 21685 | .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null }, |
| 12953 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any }, | 21686 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any, .any }, |
| 12954 | .patterns = &.{ | 21687 | .patterns = &.{ |
| 12955 | .{ .src = .{ .to_mut_gpr, .none } }, | 21688 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12956 | }, | 21689 | }, |
| 12957 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21690 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 12958 | .clobbers = .{ .eflags = true }, | 21691 | .clobbers = .{ .eflags = true }, |
| ... | @@ -12964,10 +21697,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12964,10 +21697,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12964 | } }, | 21697 | } }, |
| 12965 | }, .{ | 21698 | }, .{ |
| 12966 | .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null }, | 21699 | .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null }, |
| 12967 | .src_constraints = .{ .{ .signed_int = .qword }, .any }, | 21700 | .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, |
| 12968 | .patterns = &.{ | 21701 | .patterns = &.{ |
| 12969 | .{ .src = .{ .mem, .none } }, | 21702 | .{ .src = .{ .mem, .none, .none } }, |
| 12970 | .{ .src = .{ .to_gpr, .none } }, | 21703 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 12971 | }, | 21704 | }, |
| 12972 | .extra_temps = .{ | 21705 | .extra_temps = .{ |
| 12973 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 21706 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -12993,9 +21726,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12993,9 +21726,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12993 | } }, | 21726 | } }, |
| 12994 | }, .{ | 21727 | }, .{ |
| 12995 | .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null }, | 21728 | .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null }, |
| 12996 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, | 21729 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| 12997 | .patterns = &.{ | 21730 | .patterns = &.{ |
| 12998 | .{ .src = .{ .to_mut_gpr, .none } }, | 21731 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 12999 | }, | 21732 | }, |
| 13000 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21733 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 13001 | .clobbers = .{ .eflags = true }, | 21734 | .clobbers = .{ .eflags = true }, |
| ... | @@ -13008,9 +21741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13008,9 +21741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13008 | } }, | 21741 | } }, |
| 13009 | }, .{ | 21742 | }, .{ |
| 13010 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, | 21743 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, |
| 13011 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any }, | 21744 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any, .any }, |
| 13012 | .patterns = &.{ | 21745 | .patterns = &.{ |
| 13013 | .{ .src = .{ .to_mut_gpr, .none } }, | 21746 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 13014 | }, | 21747 | }, |
| 13015 | .dst_temps = .{.{ .ref = .src0 }}, | 21748 | .dst_temps = .{.{ .ref = .src0 }}, |
| 13016 | .clobbers = .{ .eflags = true }, | 21749 | .clobbers = .{ .eflags = true }, |
| ... | @@ -13022,10 +21755,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13022,10 +21755,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13022 | } }, | 21755 | } }, |
| 13023 | }, .{ | 21756 | }, .{ |
| 13024 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, | 21757 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, |
| 13025 | .src_constraints = .{ .{ .signed_int = .qword }, .any }, | 21758 | .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, |
| 13026 | .patterns = &.{ | 21759 | .patterns = &.{ |
| 13027 | .{ .src = .{ .mem, .none } }, | 21760 | .{ .src = .{ .mem, .none, .none } }, |
| 13028 | .{ .src = .{ .to_gpr, .none } }, | 21761 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 13029 | }, | 21762 | }, |
| 13030 | .extra_temps = .{ | 21763 | .extra_temps = .{ |
| 13031 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 21764 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13051,9 +21784,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13051,9 +21784,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13051 | } }, | 21784 | } }, |
| 13052 | }, .{ | 21785 | }, .{ |
| 13053 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, | 21786 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, |
| 13054 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, | 21787 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| 13055 | .patterns = &.{ | 21788 | .patterns = &.{ |
| 13056 | .{ .src = .{ .to_mut_gpr, .none } }, | 21789 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 13057 | }, | 21790 | }, |
| 13058 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21791 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 13059 | .clobbers = .{ .eflags = true }, | 21792 | .clobbers = .{ .eflags = true }, |
| ... | @@ -13066,10 +21799,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13066,10 +21799,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13066 | } }, | 21799 | } }, |
| 13067 | }, .{ | 21800 | }, .{ |
| 13068 | .required_features = .{ .@"64bit", null, null, null }, | 21801 | .required_features = .{ .@"64bit", null, null, null }, |
| 13069 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any }, | 21802 | .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any, .any }, |
| 13070 | .patterns = &.{ | 21803 | .patterns = &.{ |
| 13071 | .{ .src = .{ .mem, .none } }, | 21804 | .{ .src = .{ .mem, .none, .none } }, |
| 13072 | .{ .src = .{ .to_gpr, .none } }, | 21805 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 13073 | }, | 21806 | }, |
| 13074 | .dst_temps = .{.{ .rc = .general_purpose }}, | 21807 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 13075 | .clobbers = .{ .eflags = true }, | 21808 | .clobbers = .{ .eflags = true }, |
| ... | @@ -13080,10 +21813,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13080,10 +21813,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13080 | } }, | 21813 | } }, |
| 13081 | }, .{ | 21814 | }, .{ |
| 13082 | .required_features = .{ .@"64bit", null, null, null }, | 21815 | .required_features = .{ .@"64bit", null, null, null }, |
| 13083 | .src_constraints = .{ .{ .signed_int = .qword }, .any }, | 21816 | .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, |
| 13084 | .patterns = &.{ | 21817 | .patterns = &.{ |
| 13085 | .{ .src = .{ .mem, .none } }, | 21818 | .{ .src = .{ .mem, .none, .none } }, |
| 13086 | .{ .src = .{ .to_gpr, .none } }, | 21819 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 13087 | }, | 21820 | }, |
| 13088 | .extra_temps = .{ | 21821 | .extra_temps = .{ |
| 13089 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 21822 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13108,10 +21841,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13108,10 +21841,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13108 | } }, | 21841 | } }, |
| 13109 | }, .{ | 21842 | }, .{ |
| 13110 | .required_features = .{ .@"64bit", null, null, null }, | 21843 | .required_features = .{ .@"64bit", null, null, null }, |
| 13111 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, | 21844 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| 13112 | .patterns = &.{ | 21845 | .patterns = &.{ |
| 13113 | .{ .src = .{ .mem, .none } }, | 21846 | .{ .src = .{ .mem, .none, .none } }, |
| 13114 | .{ .src = .{ .to_gpr, .none } }, | 21847 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 13115 | }, | 21848 | }, |
| 13116 | .extra_temps = .{ | 21849 | .extra_temps = .{ |
| 13117 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 21850 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13134,9 +21867,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13134,9 +21867,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13134 | } }, | 21867 | } }, |
| 13135 | }, .{ | 21868 | }, .{ |
| 13136 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, | 21869 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, |
| 13137 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 21870 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 13138 | .patterns = &.{ | 21871 | .patterns = &.{ |
| 13139 | .{ .src = .{ .to_mem, .none } }, | 21872 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13140 | }, | 21873 | }, |
| 13141 | .extra_temps = .{ | 21874 | .extra_temps = .{ |
| 13142 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21875 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13164,9 +21897,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13164,9 +21897,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13164 | } }, | 21897 | } }, |
| 13165 | }, .{ | 21898 | }, .{ |
| 13166 | .required_features = .{ .@"64bit", .lzcnt, null, null }, | 21899 | .required_features = .{ .@"64bit", .lzcnt, null, null }, |
| 13167 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 21900 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 13168 | .patterns = &.{ | 21901 | .patterns = &.{ |
| 13169 | .{ .src = .{ .to_mem, .none } }, | 21902 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13170 | }, | 21903 | }, |
| 13171 | .extra_temps = .{ | 21904 | .extra_temps = .{ |
| 13172 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21905 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13193,9 +21926,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13193,9 +21926,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13193 | } }, | 21926 | } }, |
| 13194 | }, .{ | 21927 | }, .{ |
| 13195 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, | 21928 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, |
| 13196 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 21929 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 13197 | .patterns = &.{ | 21930 | .patterns = &.{ |
| 13198 | .{ .src = .{ .to_mem, .none } }, | 21931 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13199 | }, | 21932 | }, |
| 13200 | .extra_temps = .{ | 21933 | .extra_temps = .{ |
| 13201 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21934 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13224,9 +21957,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13224,9 +21957,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13224 | } }, | 21957 | } }, |
| 13225 | }, .{ | 21958 | }, .{ |
| 13226 | .required_features = .{ .@"64bit", null, null, null }, | 21959 | .required_features = .{ .@"64bit", null, null, null }, |
| 13227 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 21960 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 13228 | .patterns = &.{ | 21961 | .patterns = &.{ |
| 13229 | .{ .src = .{ .to_mem, .none } }, | 21962 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13230 | }, | 21963 | }, |
| 13231 | .extra_temps = .{ | 21964 | .extra_temps = .{ |
| 13232 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21965 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13254,9 +21987,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13254,9 +21987,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13254 | } }, | 21987 | } }, |
| 13255 | }, .{ | 21988 | }, .{ |
| 13256 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, | 21989 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, |
| 13257 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 21990 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 13258 | .patterns = &.{ | 21991 | .patterns = &.{ |
| 13259 | .{ .src = .{ .to_mem, .none } }, | 21992 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13260 | }, | 21993 | }, |
| 13261 | .extra_temps = .{ | 21994 | .extra_temps = .{ |
| 13262 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 21995 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13284,9 +22017,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13284,9 +22017,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13284 | } }, | 22017 | } }, |
| 13285 | }, .{ | 22018 | }, .{ |
| 13286 | .required_features = .{ .@"64bit", .lzcnt, null, null }, | 22019 | .required_features = .{ .@"64bit", .lzcnt, null, null }, |
| 13287 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 22020 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 13288 | .patterns = &.{ | 22021 | .patterns = &.{ |
| 13289 | .{ .src = .{ .to_mem, .none } }, | 22022 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13290 | }, | 22023 | }, |
| 13291 | .extra_temps = .{ | 22024 | .extra_temps = .{ |
| 13292 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 22025 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13313,9 +22046,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13313,9 +22046,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13313 | } }, | 22046 | } }, |
| 13314 | }, .{ | 22047 | }, .{ |
| 13315 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, | 22048 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, |
| 13316 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 22049 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 13317 | .patterns = &.{ | 22050 | .patterns = &.{ |
| 13318 | .{ .src = .{ .to_mem, .none } }, | 22051 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13319 | }, | 22052 | }, |
| 13320 | .extra_temps = .{ | 22053 | .extra_temps = .{ |
| 13321 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 22054 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13344,9 +22077,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13344,9 +22077,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13344 | } }, | 22077 | } }, |
| 13345 | }, .{ | 22078 | }, .{ |
| 13346 | .required_features = .{ .@"64bit", null, null, null }, | 22079 | .required_features = .{ .@"64bit", null, null, null }, |
| 13347 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 22080 | .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 13348 | .patterns = &.{ | 22081 | .patterns = &.{ |
| 13349 | .{ .src = .{ .to_mem, .none } }, | 22082 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13350 | }, | 22083 | }, |
| 13351 | .extra_temps = .{ | 22084 | .extra_temps = .{ |
| 13352 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 22085 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13374,9 +22107,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13374,9 +22107,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13374 | } }, | 22107 | } }, |
| 13375 | }, .{ | 22108 | }, .{ |
| 13376 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, | 22109 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, |
| 13377 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 22110 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 13378 | .patterns = &.{ | 22111 | .patterns = &.{ |
| 13379 | .{ .src = .{ .to_mem, .none } }, | 22112 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13380 | }, | 22113 | }, |
| 13381 | .extra_temps = .{ | 22114 | .extra_temps = .{ |
| 13382 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 22115 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13407,9 +22140,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13407,9 +22140,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13407 | } }, | 22140 | } }, |
| 13408 | }, .{ | 22141 | }, .{ |
| 13409 | .required_features = .{ .@"64bit", .lzcnt, null, null }, | 22142 | .required_features = .{ .@"64bit", .lzcnt, null, null }, |
| 13410 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 22143 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 13411 | .patterns = &.{ | 22144 | .patterns = &.{ |
| 13412 | .{ .src = .{ .to_mem, .none } }, | 22145 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13413 | }, | 22146 | }, |
| 13414 | .extra_temps = .{ | 22147 | .extra_temps = .{ |
| 13415 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 22148 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13439,9 +22172,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13439,9 +22172,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13439 | } }, | 22172 | } }, |
| 13440 | }, .{ | 22173 | }, .{ |
| 13441 | .required_features = .{ .@"64bit", null, null, null }, | 22174 | .required_features = .{ .@"64bit", null, null, null }, |
| 13442 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 22175 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 13443 | .patterns = &.{ | 22176 | .patterns = &.{ |
| 13444 | .{ .src = .{ .to_mem, .none } }, | 22177 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13445 | }, | 22178 | }, |
| 13446 | .extra_temps = .{ | 22179 | .extra_temps = .{ |
| 13447 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 22180 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13471,9 +22204,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13471,9 +22204,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13471 | } }, | 22204 | } }, |
| 13472 | }, .{ | 22205 | }, .{ |
| 13473 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, | 22206 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, |
| 13474 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 22207 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 13475 | .patterns = &.{ | 22208 | .patterns = &.{ |
| 13476 | .{ .src = .{ .to_mem, .none } }, | 22209 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13477 | }, | 22210 | }, |
| 13478 | .extra_temps = .{ | 22211 | .extra_temps = .{ |
| 13479 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 22212 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13504,9 +22237,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13504,9 +22237,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13504 | } }, | 22237 | } }, |
| 13505 | }, .{ | 22238 | }, .{ |
| 13506 | .required_features = .{ .@"64bit", .lzcnt, null, null }, | 22239 | .required_features = .{ .@"64bit", .lzcnt, null, null }, |
| 13507 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 22240 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 13508 | .patterns = &.{ | 22241 | .patterns = &.{ |
| 13509 | .{ .src = .{ .to_mem, .none } }, | 22242 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13510 | }, | 22243 | }, |
| 13511 | .extra_temps = .{ | 22244 | .extra_temps = .{ |
| 13512 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 22245 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13536,9 +22269,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13536,9 +22269,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13536 | } }, | 22269 | } }, |
| 13537 | }, .{ | 22270 | }, .{ |
| 13538 | .required_features = .{ .@"64bit", null, null, null }, | 22271 | .required_features = .{ .@"64bit", null, null, null }, |
| 13539 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 22272 | .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 13540 | .patterns = &.{ | 22273 | .patterns = &.{ |
| 13541 | .{ .src = .{ .to_mem, .none } }, | 22274 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13542 | }, | 22275 | }, |
| 13543 | .extra_temps = .{ | 22276 | .extra_temps = .{ |
| 13544 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 22277 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13568,9 +22301,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13568,9 +22301,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13568 | } }, | 22301 | } }, |
| 13569 | }, .{ | 22302 | }, .{ |
| 13570 | .required_features = .{ .lzcnt, .slow_incdec, null, null }, | 22303 | .required_features = .{ .lzcnt, .slow_incdec, null, null }, |
| 13571 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, | 22304 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, |
| 13572 | .patterns = &.{ | 22305 | .patterns = &.{ |
| 13573 | .{ .src = .{ .to_mem, .none } }, | 22306 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13574 | }, | 22307 | }, |
| 13575 | .extra_temps = .{ | 22308 | .extra_temps = .{ |
| 13576 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22309 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13597,9 +22330,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13597,9 +22330,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13597 | } }, | 22330 | } }, |
| 13598 | }, .{ | 22331 | }, .{ |
| 13599 | .required_features = .{ .lzcnt, null, null, null }, | 22332 | .required_features = .{ .lzcnt, null, null, null }, |
| 13600 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, | 22333 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, |
| 13601 | .patterns = &.{ | 22334 | .patterns = &.{ |
| 13602 | .{ .src = .{ .to_mem, .none } }, | 22335 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13603 | }, | 22336 | }, |
| 13604 | .extra_temps = .{ | 22337 | .extra_temps = .{ |
| 13605 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22338 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13626,9 +22359,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13626,9 +22359,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13626 | } }, | 22359 | } }, |
| 13627 | }, .{ | 22360 | }, .{ |
| 13628 | .required_features = .{ .lzcnt, .slow_incdec, null, null }, | 22361 | .required_features = .{ .lzcnt, .slow_incdec, null, null }, |
| 13629 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, | 22362 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, |
| 13630 | .patterns = &.{ | 22363 | .patterns = &.{ |
| 13631 | .{ .src = .{ .to_mem, .none } }, | 22364 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13632 | }, | 22365 | }, |
| 13633 | .extra_temps = .{ | 22366 | .extra_temps = .{ |
| 13634 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22367 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13655,9 +22388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13655,9 +22388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13655 | } }, | 22388 | } }, |
| 13656 | }, .{ | 22389 | }, .{ |
| 13657 | .required_features = .{ .lzcnt, null, null, null }, | 22390 | .required_features = .{ .lzcnt, null, null, null }, |
| 13658 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, | 22391 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, |
| 13659 | .patterns = &.{ | 22392 | .patterns = &.{ |
| 13660 | .{ .src = .{ .to_mem, .none } }, | 22393 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13661 | }, | 22394 | }, |
| 13662 | .extra_temps = .{ | 22395 | .extra_temps = .{ |
| 13663 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22396 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13684,9 +22417,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13684,9 +22417,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13684 | } }, | 22417 | } }, |
| 13685 | }, .{ | 22418 | }, .{ |
| 13686 | .required_features = .{ .lzcnt, .slow_incdec, null, null }, | 22419 | .required_features = .{ .lzcnt, .slow_incdec, null, null }, |
| 13687 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, | 22420 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, |
| 13688 | .patterns = &.{ | 22421 | .patterns = &.{ |
| 13689 | .{ .src = .{ .to_mem, .none } }, | 22422 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13690 | }, | 22423 | }, |
| 13691 | .extra_temps = .{ | 22424 | .extra_temps = .{ |
| 13692 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22425 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13713,9 +22446,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13713,9 +22446,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13713 | } }, | 22446 | } }, |
| 13714 | }, .{ | 22447 | }, .{ |
| 13715 | .required_features = .{ .lzcnt, null, null, null }, | 22448 | .required_features = .{ .lzcnt, null, null, null }, |
| 13716 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, | 22449 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, |
| 13717 | .patterns = &.{ | 22450 | .patterns = &.{ |
| 13718 | .{ .src = .{ .to_mem, .none } }, | 22451 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13719 | }, | 22452 | }, |
| 13720 | .extra_temps = .{ | 22453 | .extra_temps = .{ |
| 13721 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22454 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13742,9 +22475,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13742,9 +22475,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13742 | } }, | 22475 | } }, |
| 13743 | }, .{ | 22476 | }, .{ |
| 13744 | .required_features = .{ .@"64bit", .lzcnt, .slow_incdec, null }, | 22477 | .required_features = .{ .@"64bit", .lzcnt, .slow_incdec, null }, |
| 13745 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, | 22478 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, |
| 13746 | .patterns = &.{ | 22479 | .patterns = &.{ |
| 13747 | .{ .src = .{ .to_mem, .none } }, | 22480 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13748 | }, | 22481 | }, |
| 13749 | .extra_temps = .{ | 22482 | .extra_temps = .{ |
| 13750 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22483 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13771,9 +22504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13771,9 +22504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13771 | } }, | 22504 | } }, |
| 13772 | }, .{ | 22505 | }, .{ |
| 13773 | .required_features = .{ .@"64bit", .lzcnt, null, null }, | 22506 | .required_features = .{ .@"64bit", .lzcnt, null, null }, |
| 13774 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, | 22507 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, |
| 13775 | .patterns = &.{ | 22508 | .patterns = &.{ |
| 13776 | .{ .src = .{ .to_mem, .none } }, | 22509 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13777 | }, | 22510 | }, |
| 13778 | .extra_temps = .{ | 22511 | .extra_temps = .{ |
| 13779 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22512 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13800,9 +22533,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13800,9 +22533,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13800 | } }, | 22533 | } }, |
| 13801 | }, .{ | 22534 | }, .{ |
| 13802 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null }, | 22535 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null }, |
| 13803 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, | 22536 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, |
| 13804 | .patterns = &.{ | 22537 | .patterns = &.{ |
| 13805 | .{ .src = .{ .to_mem, .none } }, | 22538 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13806 | }, | 22539 | }, |
| 13807 | .extra_temps = .{ | 22540 | .extra_temps = .{ |
| 13808 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22541 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13832,9 +22565,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13832,9 +22565,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13832 | } }, | 22565 | } }, |
| 13833 | }, .{ | 22566 | }, .{ |
| 13834 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 22567 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 13835 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, | 22568 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, |
| 13836 | .patterns = &.{ | 22569 | .patterns = &.{ |
| 13837 | .{ .src = .{ .to_mem, .none } }, | 22570 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13838 | }, | 22571 | }, |
| 13839 | .extra_temps = .{ | 22572 | .extra_temps = .{ |
| 13840 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22573 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13864,9 +22597,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13864,9 +22597,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13864 | } }, | 22597 | } }, |
| 13865 | }, .{ | 22598 | }, .{ |
| 13866 | .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null }, | 22599 | .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null }, |
| 13867 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, | 22600 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, |
| 13868 | .patterns = &.{ | 22601 | .patterns = &.{ |
| 13869 | .{ .src = .{ .to_mem, .none } }, | 22602 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13870 | }, | 22603 | }, |
| 13871 | .extra_temps = .{ | 22604 | .extra_temps = .{ |
| 13872 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22605 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13896,9 +22629,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13896,9 +22629,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13896 | } }, | 22629 | } }, |
| 13897 | }, .{ | 22630 | }, .{ |
| 13898 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 22631 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 13899 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, | 22632 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, |
| 13900 | .patterns = &.{ | 22633 | .patterns = &.{ |
| 13901 | .{ .src = .{ .to_mem, .none } }, | 22634 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13902 | }, | 22635 | }, |
| 13903 | .extra_temps = .{ | 22636 | .extra_temps = .{ |
| 13904 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22637 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13928,9 +22661,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13928,9 +22661,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13928 | } }, | 22661 | } }, |
| 13929 | }, .{ | 22662 | }, .{ |
| 13930 | .required_features = .{ .slow_incdec, null, null, null }, | 22663 | .required_features = .{ .slow_incdec, null, null, null }, |
| 13931 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, | 22664 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, |
| 13932 | .patterns = &.{ | 22665 | .patterns = &.{ |
| 13933 | .{ .src = .{ .to_mem, .none } }, | 22666 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13934 | }, | 22667 | }, |
| 13935 | .extra_temps = .{ | 22668 | .extra_temps = .{ |
| 13936 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22669 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13958,9 +22691,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13958,9 +22691,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13958 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 22691 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 13959 | } }, | 22692 | } }, |
| 13960 | }, .{ | 22693 | }, .{ |
| 13961 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, | 22694 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, |
| 13962 | .patterns = &.{ | 22695 | .patterns = &.{ |
| 13963 | .{ .src = .{ .to_mem, .none } }, | 22696 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13964 | }, | 22697 | }, |
| 13965 | .extra_temps = .{ | 22698 | .extra_temps = .{ |
| 13966 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22699 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -13989,9 +22722,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -13989,9 +22722,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 13989 | } }, | 22722 | } }, |
| 13990 | }, .{ | 22723 | }, .{ |
| 13991 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null }, | 22724 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null }, |
| 13992 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, | 22725 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, |
| 13993 | .patterns = &.{ | 22726 | .patterns = &.{ |
| 13994 | .{ .src = .{ .to_mem, .none } }, | 22727 | .{ .src = .{ .to_mem, .none, .none } }, |
| 13995 | }, | 22728 | }, |
| 13996 | .extra_temps = .{ | 22729 | .extra_temps = .{ |
| 13997 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22730 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14021,9 +22754,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14021,9 +22754,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14021 | } }, | 22754 | } }, |
| 14022 | }, .{ | 22755 | }, .{ |
| 14023 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 22756 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 14024 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, | 22757 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, |
| 14025 | .patterns = &.{ | 22758 | .patterns = &.{ |
| 14026 | .{ .src = .{ .to_mem, .none } }, | 22759 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14027 | }, | 22760 | }, |
| 14028 | .extra_temps = .{ | 22761 | .extra_temps = .{ |
| 14029 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22762 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14053,9 +22786,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14053,9 +22786,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14053 | } }, | 22786 | } }, |
| 14054 | }, .{ | 22787 | }, .{ |
| 14055 | .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null }, | 22788 | .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null }, |
| 14056 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, | 22789 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, |
| 14057 | .patterns = &.{ | 22790 | .patterns = &.{ |
| 14058 | .{ .src = .{ .to_mem, .none } }, | 22791 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14059 | }, | 22792 | }, |
| 14060 | .extra_temps = .{ | 22793 | .extra_temps = .{ |
| 14061 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22794 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14085,9 +22818,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14085,9 +22818,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14085 | } }, | 22818 | } }, |
| 14086 | }, .{ | 22819 | }, .{ |
| 14087 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 22820 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 14088 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, | 22821 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, |
| 14089 | .patterns = &.{ | 22822 | .patterns = &.{ |
| 14090 | .{ .src = .{ .to_mem, .none } }, | 22823 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14091 | }, | 22824 | }, |
| 14092 | .extra_temps = .{ | 22825 | .extra_temps = .{ |
| 14093 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22826 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14117,9 +22850,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14117,9 +22850,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14117 | } }, | 22850 | } }, |
| 14118 | }, .{ | 22851 | }, .{ |
| 14119 | .required_features = .{ .slow_incdec, null, null, null }, | 22852 | .required_features = .{ .slow_incdec, null, null, null }, |
| 14120 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, | 22853 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, |
| 14121 | .patterns = &.{ | 22854 | .patterns = &.{ |
| 14122 | .{ .src = .{ .to_mem, .none } }, | 22855 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14123 | }, | 22856 | }, |
| 14124 | .extra_temps = .{ | 22857 | .extra_temps = .{ |
| 14125 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22858 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14147,9 +22880,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14147,9 +22880,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14147 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 22880 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 14148 | } }, | 22881 | } }, |
| 14149 | }, .{ | 22882 | }, .{ |
| 14150 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, | 22883 | .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, |
| 14151 | .patterns = &.{ | 22884 | .patterns = &.{ |
| 14152 | .{ .src = .{ .to_mem, .none } }, | 22885 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14153 | }, | 22886 | }, |
| 14154 | .extra_temps = .{ | 22887 | .extra_temps = .{ |
| 14155 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22888 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14178,9 +22911,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14178,9 +22911,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14178 | } }, | 22911 | } }, |
| 14179 | }, .{ | 22912 | }, .{ |
| 14180 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null }, | 22913 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null }, |
| 14181 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, | 22914 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, |
| 14182 | .patterns = &.{ | 22915 | .patterns = &.{ |
| 14183 | .{ .src = .{ .to_mem, .none } }, | 22916 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14184 | }, | 22917 | }, |
| 14185 | .extra_temps = .{ | 22918 | .extra_temps = .{ |
| 14186 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22919 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14210,9 +22943,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14210,9 +22943,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14210 | } }, | 22943 | } }, |
| 14211 | }, .{ | 22944 | }, .{ |
| 14212 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, | 22945 | .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, |
| 14213 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, | 22946 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, |
| 14214 | .patterns = &.{ | 22947 | .patterns = &.{ |
| 14215 | .{ .src = .{ .to_mem, .none } }, | 22948 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14216 | }, | 22949 | }, |
| 14217 | .extra_temps = .{ | 22950 | .extra_temps = .{ |
| 14218 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22951 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14242,9 +22975,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14242,9 +22975,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14242 | } }, | 22975 | } }, |
| 14243 | }, .{ | 22976 | }, .{ |
| 14244 | .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null }, | 22977 | .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null }, |
| 14245 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, | 22978 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, |
| 14246 | .patterns = &.{ | 22979 | .patterns = &.{ |
| 14247 | .{ .src = .{ .to_mem, .none } }, | 22980 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14248 | }, | 22981 | }, |
| 14249 | .extra_temps = .{ | 22982 | .extra_temps = .{ |
| 14250 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 22983 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14274,9 +23007,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14274,9 +23007,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14274 | } }, | 23007 | } }, |
| 14275 | }, .{ | 23008 | }, .{ |
| 14276 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, | 23009 | .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, |
| 14277 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, | 23010 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, |
| 14278 | .patterns = &.{ | 23011 | .patterns = &.{ |
| 14279 | .{ .src = .{ .to_mem, .none } }, | 23012 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14280 | }, | 23013 | }, |
| 14281 | .extra_temps = .{ | 23014 | .extra_temps = .{ |
| 14282 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23015 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14306,9 +23039,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14306,9 +23039,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14306 | } }, | 23039 | } }, |
| 14307 | }, .{ | 23040 | }, .{ |
| 14308 | .required_features = .{ .slow_incdec, null, null, null }, | 23041 | .required_features = .{ .slow_incdec, null, null, null }, |
| 14309 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, | 23042 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, |
| 14310 | .patterns = &.{ | 23043 | .patterns = &.{ |
| 14311 | .{ .src = .{ .to_mem, .none } }, | 23044 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14312 | }, | 23045 | }, |
| 14313 | .extra_temps = .{ | 23046 | .extra_temps = .{ |
| 14314 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23047 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14336,9 +23069,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14336,9 +23069,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14336 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 23069 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 14337 | } }, | 23070 | } }, |
| 14338 | }, .{ | 23071 | }, .{ |
| 14339 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, | 23072 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, |
| 14340 | .patterns = &.{ | 23073 | .patterns = &.{ |
| 14341 | .{ .src = .{ .to_mem, .none } }, | 23074 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14342 | }, | 23075 | }, |
| 14343 | .extra_temps = .{ | 23076 | .extra_temps = .{ |
| 14344 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23077 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14367,9 +23100,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14367,9 +23100,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14367 | } }, | 23100 | } }, |
| 14368 | }, .{ | 23101 | }, .{ |
| 14369 | .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec }, | 23102 | .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec }, |
| 14370 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, | 23103 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, |
| 14371 | .patterns = &.{ | 23104 | .patterns = &.{ |
| 14372 | .{ .src = .{ .to_mem, .none } }, | 23105 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14373 | }, | 23106 | }, |
| 14374 | .extra_temps = .{ | 23107 | .extra_temps = .{ |
| 14375 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23108 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14399,9 +23132,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14399,9 +23132,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14399 | } }, | 23132 | } }, |
| 14400 | }, .{ | 23133 | }, .{ |
| 14401 | .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null }, | 23134 | .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null }, |
| 14402 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, | 23135 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, |
| 14403 | .patterns = &.{ | 23136 | .patterns = &.{ |
| 14404 | .{ .src = .{ .to_mem, .none } }, | 23137 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14405 | }, | 23138 | }, |
| 14406 | .extra_temps = .{ | 23139 | .extra_temps = .{ |
| 14407 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23140 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14431,9 +23164,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14431,9 +23164,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14431 | } }, | 23164 | } }, |
| 14432 | }, .{ | 23165 | }, .{ |
| 14433 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, .slow_incdec, null }, | 23166 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, .slow_incdec, null }, |
| 14434 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, | 23167 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, |
| 14435 | .patterns = &.{ | 23168 | .patterns = &.{ |
| 14436 | .{ .src = .{ .to_mem, .none } }, | 23169 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14437 | }, | 23170 | }, |
| 14438 | .extra_temps = .{ | 23171 | .extra_temps = .{ |
| 14439 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23172 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14463,9 +23196,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14463,9 +23196,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14463 | } }, | 23196 | } }, |
| 14464 | }, .{ | 23197 | }, .{ |
| 14465 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, | 23198 | .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, |
| 14466 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, | 23199 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, |
| 14467 | .patterns = &.{ | 23200 | .patterns = &.{ |
| 14468 | .{ .src = .{ .to_mem, .none } }, | 23201 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14469 | }, | 23202 | }, |
| 14470 | .extra_temps = .{ | 23203 | .extra_temps = .{ |
| 14471 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23204 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14495,9 +23228,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14495,9 +23228,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14495 | } }, | 23228 | } }, |
| 14496 | }, .{ | 23229 | }, .{ |
| 14497 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, | 23230 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 14498 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, | 23231 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, |
| 14499 | .patterns = &.{ | 23232 | .patterns = &.{ |
| 14500 | .{ .src = .{ .to_mem, .none } }, | 23233 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14501 | }, | 23234 | }, |
| 14502 | .extra_temps = .{ | 23235 | .extra_temps = .{ |
| 14503 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23236 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14526,9 +23259,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14526,9 +23259,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14526 | } }, | 23259 | } }, |
| 14527 | }, .{ | 23260 | }, .{ |
| 14528 | .required_features = .{ .@"64bit", null, null, null }, | 23261 | .required_features = .{ .@"64bit", null, null, null }, |
| 14529 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, | 23262 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, |
| 14530 | .patterns = &.{ | 23263 | .patterns = &.{ |
| 14531 | .{ .src = .{ .to_mem, .none } }, | 23264 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14532 | }, | 23265 | }, |
| 14533 | .extra_temps = .{ | 23266 | .extra_temps = .{ |
| 14534 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23267 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14557,10 +23290,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14557,10 +23290,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14557 | } }, | 23290 | } }, |
| 14558 | }, .{ | 23291 | }, .{ |
| 14559 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, | 23292 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, |
| 14560 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 23293 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 14561 | .dst_constraints = .{.{ .scalar_int_is = .byte }}, | 23294 | .dst_constraints = .{.{ .scalar_int_is = .byte }}, |
| 14562 | .patterns = &.{ | 23295 | .patterns = &.{ |
| 14563 | .{ .src = .{ .to_mem, .none } }, | 23296 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14564 | }, | 23297 | }, |
| 14565 | .extra_temps = .{ | 23298 | .extra_temps = .{ |
| 14566 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23299 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14597,10 +23330,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14597,10 +23330,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14597 | } }, | 23330 | } }, |
| 14598 | }, .{ | 23331 | }, .{ |
| 14599 | .required_features = .{ .@"64bit", .lzcnt, null, null }, | 23332 | .required_features = .{ .@"64bit", .lzcnt, null, null }, |
| 14600 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 23333 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 14601 | .dst_constraints = .{.{ .scalar_int_is = .byte }}, | 23334 | .dst_constraints = .{.{ .scalar_int_is = .byte }}, |
| 14602 | .patterns = &.{ | 23335 | .patterns = &.{ |
| 14603 | .{ .src = .{ .to_mem, .none } }, | 23336 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14604 | }, | 23337 | }, |
| 14605 | .extra_temps = .{ | 23338 | .extra_temps = .{ |
| 14606 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23339 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14636,10 +23369,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14636,10 +23369,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14636 | } }, | 23369 | } }, |
| 14637 | }, .{ | 23370 | }, .{ |
| 14638 | .required_features = .{ .@"64bit", null, null, null }, | 23371 | .required_features = .{ .@"64bit", null, null, null }, |
| 14639 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 23372 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 14640 | .dst_constraints = .{.{ .scalar_int_is = .byte }}, | 23373 | .dst_constraints = .{.{ .scalar_int_is = .byte }}, |
| 14641 | .patterns = &.{ | 23374 | .patterns = &.{ |
| 14642 | .{ .src = .{ .to_mem, .none } }, | 23375 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14643 | }, | 23376 | }, |
| 14644 | .extra_temps = .{ | 23377 | .extra_temps = .{ |
| 14645 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23378 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14675,10 +23408,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14675,10 +23408,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14675 | } }, | 23408 | } }, |
| 14676 | }, .{ | 23409 | }, .{ |
| 14677 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, | 23410 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, |
| 14678 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 23411 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 14679 | .dst_constraints = .{.{ .scalar_int_is = .byte }}, | 23412 | .dst_constraints = .{.{ .scalar_int_is = .byte }}, |
| 14680 | .patterns = &.{ | 23413 | .patterns = &.{ |
| 14681 | .{ .src = .{ .to_mem, .none } }, | 23414 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14682 | }, | 23415 | }, |
| 14683 | .extra_temps = .{ | 23416 | .extra_temps = .{ |
| 14684 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23417 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14715,10 +23448,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14715,10 +23448,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14715 | } }, | 23448 | } }, |
| 14716 | }, .{ | 23449 | }, .{ |
| 14717 | .required_features = .{ .@"64bit", .lzcnt, null, null }, | 23450 | .required_features = .{ .@"64bit", .lzcnt, null, null }, |
| 14718 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 23451 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 14719 | .dst_constraints = .{.{ .scalar_int_is = .byte }}, | 23452 | .dst_constraints = .{.{ .scalar_int_is = .byte }}, |
| 14720 | .patterns = &.{ | 23453 | .patterns = &.{ |
| 14721 | .{ .src = .{ .to_mem, .none } }, | 23454 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14722 | }, | 23455 | }, |
| 14723 | .extra_temps = .{ | 23456 | .extra_temps = .{ |
| 14724 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23457 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14754,10 +23487,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14754,10 +23487,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14754 | } }, | 23487 | } }, |
| 14755 | }, .{ | 23488 | }, .{ |
| 14756 | .required_features = .{ .@"64bit", null, null, null }, | 23489 | .required_features = .{ .@"64bit", null, null, null }, |
| 14757 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 23490 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 14758 | .dst_constraints = .{.{ .scalar_int_is = .byte }}, | 23491 | .dst_constraints = .{.{ .scalar_int_is = .byte }}, |
| 14759 | .patterns = &.{ | 23492 | .patterns = &.{ |
| 14760 | .{ .src = .{ .to_mem, .none } }, | 23493 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14761 | }, | 23494 | }, |
| 14762 | .extra_temps = .{ | 23495 | .extra_temps = .{ |
| 14763 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23496 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14793,10 +23526,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14793,10 +23526,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14793 | } }, | 23526 | } }, |
| 14794 | }, .{ | 23527 | }, .{ |
| 14795 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, | 23528 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, |
| 14796 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 23529 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 14797 | .dst_constraints = .{.{ .scalar_int_is = .word }}, | 23530 | .dst_constraints = .{.{ .scalar_int_is = .word }}, |
| 14798 | .patterns = &.{ | 23531 | .patterns = &.{ |
| 14799 | .{ .src = .{ .to_mem, .none } }, | 23532 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14800 | }, | 23533 | }, |
| 14801 | .extra_temps = .{ | 23534 | .extra_temps = .{ |
| 14802 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23535 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14833,10 +23566,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14833,10 +23566,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14833 | } }, | 23566 | } }, |
| 14834 | }, .{ | 23567 | }, .{ |
| 14835 | .required_features = .{ .@"64bit", .lzcnt, null, null }, | 23568 | .required_features = .{ .@"64bit", .lzcnt, null, null }, |
| 14836 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 23569 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 14837 | .dst_constraints = .{.{ .scalar_int_is = .word }}, | 23570 | .dst_constraints = .{.{ .scalar_int_is = .word }}, |
| 14838 | .patterns = &.{ | 23571 | .patterns = &.{ |
| 14839 | .{ .src = .{ .to_mem, .none } }, | 23572 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14840 | }, | 23573 | }, |
| 14841 | .extra_temps = .{ | 23574 | .extra_temps = .{ |
| 14842 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23575 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14872,10 +23605,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14872,10 +23605,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14872 | } }, | 23605 | } }, |
| 14873 | }, .{ | 23606 | }, .{ |
| 14874 | .required_features = .{ .@"64bit", null, null, null }, | 23607 | .required_features = .{ .@"64bit", null, null, null }, |
| 14875 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, | 23608 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 14876 | .dst_constraints = .{.{ .scalar_int_is = .word }}, | 23609 | .dst_constraints = .{.{ .scalar_int_is = .word }}, |
| 14877 | .patterns = &.{ | 23610 | .patterns = &.{ |
| 14878 | .{ .src = .{ .to_mem, .none } }, | 23611 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14879 | }, | 23612 | }, |
| 14880 | .extra_temps = .{ | 23613 | .extra_temps = .{ |
| 14881 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23614 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14911,10 +23644,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14911,10 +23644,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14911 | } }, | 23644 | } }, |
| 14912 | }, .{ | 23645 | }, .{ |
| 14913 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, | 23646 | .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, |
| 14914 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 23647 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 14915 | .dst_constraints = .{.{ .scalar_int_is = .word }}, | 23648 | .dst_constraints = .{.{ .scalar_int_is = .word }}, |
| 14916 | .patterns = &.{ | 23649 | .patterns = &.{ |
| 14917 | .{ .src = .{ .to_mem, .none } }, | 23650 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14918 | }, | 23651 | }, |
| 14919 | .extra_temps = .{ | 23652 | .extra_temps = .{ |
| 14920 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23653 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14951,10 +23684,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14951,10 +23684,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14951 | } }, | 23684 | } }, |
| 14952 | }, .{ | 23685 | }, .{ |
| 14953 | .required_features = .{ .@"64bit", .lzcnt, null, null }, | 23686 | .required_features = .{ .@"64bit", .lzcnt, null, null }, |
| 14954 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 23687 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 14955 | .dst_constraints = .{.{ .scalar_int_is = .word }}, | 23688 | .dst_constraints = .{.{ .scalar_int_is = .word }}, |
| 14956 | .patterns = &.{ | 23689 | .patterns = &.{ |
| 14957 | .{ .src = .{ .to_mem, .none } }, | 23690 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14958 | }, | 23691 | }, |
| 14959 | .extra_temps = .{ | 23692 | .extra_temps = .{ |
| 14960 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23693 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -14990,10 +23723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -14990,10 +23723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14990 | } }, | 23723 | } }, |
| 14991 | }, .{ | 23724 | }, .{ |
| 14992 | .required_features = .{ .@"64bit", null, null, null }, | 23725 | .required_features = .{ .@"64bit", null, null, null }, |
| 14993 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, | 23726 | .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 14994 | .dst_constraints = .{.{ .scalar_int_is = .word }}, | 23727 | .dst_constraints = .{.{ .scalar_int_is = .word }}, |
| 14995 | .patterns = &.{ | 23728 | .patterns = &.{ |
| 14996 | .{ .src = .{ .to_mem, .none } }, | 23729 | .{ .src = .{ .to_mem, .none, .none } }, |
| 14997 | }, | 23730 | }, |
| 14998 | .extra_temps = .{ | 23731 | .extra_temps = .{ |
| 14999 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 23732 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -15006,50 +23739,2361 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15006,50 +23739,2361 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15006 | .unused, | 23739 | .unused, |
| 15007 | .unused, | 23740 | .unused, |
| 15008 | }, | 23741 | }, |
| 15009 | .dst_temps = .{.mem}, | 23742 | .dst_temps = .{.mem}, |
| 15010 | .clobbers = .{ .eflags = true }, | 23743 | .clobbers = .{ .eflags = true }, |
| 15011 | .each = .{ .once = &.{ | 23744 | .each = .{ .once = &.{ |
| 15012 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ }, | 23745 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ }, |
| 15013 | .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ }, | 23746 | .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ }, |
| 15014 | .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ }, | 23747 | .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ }, |
| 15015 | .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ }, | 23748 | .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ }, |
| 15016 | .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ }, | 23749 | .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ }, |
| 15017 | .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ }, | 23750 | .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ }, |
| 15018 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, | 23751 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 15019 | .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ }, | 23752 | .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ }, |
| 15020 | .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ }, | 23753 | .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ }, |
| 15021 | .{ ._, ._nc, .j, .@"1b", ._, ._, ._ }, | 23754 | .{ ._, ._nc, .j, .@"1b", ._, ._, ._ }, |
| 15022 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, | 23755 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 15023 | .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ }, | 23756 | .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ }, |
| 15024 | .{ ._, ._, .neg, .tmp3d, ._, ._, ._ }, | 23757 | .{ ._, ._, .neg, .tmp3d, ._, ._, ._ }, |
| 15025 | .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ }, | 23758 | .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ }, |
| 15026 | .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, | 23759 | .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| 15027 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 23760 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 15028 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 23761 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 15029 | } }, | 23762 | } }, |
| 15030 | } }) catch |err| switch (err) { | 23763 | } }) catch |err| switch (err) { |
| 15031 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ | 23764 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ |
| 15032 | @tagName(air_tag), | 23765 | @tagName(air_tag), |
| 15033 | cg.typeOf(ty_op.operand).fmt(pt), | 23766 | cg.typeOf(ty_op.operand).fmt(pt), |
| 15034 | ops[0].tracking(cg), | 23767 | ops[0].tracking(cg), |
| 15035 | }), | 23768 | }), |
| 15036 | else => |e| return e, | 23769 | else => |e| return e, |
| 15037 | }; | 23770 | }; |
| 15038 | try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); | 23771 | try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| 15039 | }, | 23772 | }, |
| 15040 | | 23773 | |
| 15041 | .cmp_vector, .cmp_vector_optimized => |air_tag| if (use_old) try cg.airCmpVector(inst) else fallback: { | 23774 | .cmp_vector, .cmp_vector_optimized => |air_tag| if (use_old) try cg.airCmpVector(inst) else fallback: { |
| 15042 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; | 23775 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; |
| 15043 | const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data; | 23776 | const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data; |
| 15044 | switch (extra.compareOperator()) { | 23777 | switch (extra.compareOperator()) { |
| 15045 | .eq, .neq => {}, | 23778 | .eq, .neq => {}, |
| 15046 | else => break :fallback try cg.airCmpVector(inst), | 23779 | .lt, .lte, .gte, .gt => if (cg.floatBits(cg.typeOf(extra.lhs).childType(zcu)) == null) |
| 15047 | } | 23780 | break :fallback try cg.airCmpVector(inst), |
| 15048 | var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs }); | 23781 | } |
| 15049 | var res: [1]Temp = undefined; | 23782 | var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs }); |
| 15050 | switch (extra.compareOperator()) { | 23783 | var res: [1]Temp = undefined; |
| 15051 | .lt => unreachable, | 23784 | (err: switch (extra.compareOperator()) { |
| 15052 | .lte => unreachable, | 23785 | .lt, .lte, .gte, .gt => |cmp_op| { |
| | 23786 | switch (cmp_op) { |
| | 23787 | else => unreachable, |
| | 23788 | .lt, .lte => {}, |
| | 23789 | .gt, .gte => std.mem.swap(Temp, &ops[0], &ops[1]), |
| | 23790 | } |
| | 23791 | break :err cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) { |
| | 23792 | else => unreachable, |
| | 23793 | .lt, .gt => .l, |
| | 23794 | .lte, .gte => .le, |
| | 23795 | })) { |
| | 23796 | else => unreachable, |
| | 23797 | inline .l, .le => |cc| comptime &.{ .{ |
| | 23798 | .required_features = .{ .f16c, null, null, null }, |
| | 23799 | .src_constraints = .{ |
| | 23800 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 23801 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 23802 | .any, |
| | 23803 | }, |
| | 23804 | .patterns = &.{ |
| | 23805 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 23806 | }, |
| | 23807 | .extra_temps = .{ |
| | 23808 | .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| | 23809 | .unused, |
| | 23810 | .unused, |
| | 23811 | .unused, |
| | 23812 | .unused, |
| | 23813 | .unused, |
| | 23814 | .unused, |
| | 23815 | .unused, |
| | 23816 | .unused, |
| | 23817 | }, |
| | 23818 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| | 23819 | .ref = .src0, |
| | 23820 | .rc = .sse, |
| | 23821 | .info = .{ .kind = .all, .scalar = .dword }, |
| | 23822 | } }}, |
| | 23823 | .each = .{ .once = &.{ |
| | 23824 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 23825 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| | 23826 | .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0d, .vp(switch (cc) { |
| | 23827 | else => unreachable, |
| | 23828 | .l => .lt, |
| | 23829 | .le => .le, |
| | 23830 | }) }, |
| | 23831 | } }, |
| | 23832 | }, .{ |
| | 23833 | .required_features = .{ .f16c, null, null, null }, |
| | 23834 | .src_constraints = .{ |
| | 23835 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 23836 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 23837 | .any, |
| | 23838 | }, |
| | 23839 | .patterns = &.{ |
| | 23840 | .{ .src = .{ .mem, .mem, .none } }, |
| | 23841 | .{ .src = .{ .sse, .mem, .none } }, |
| | 23842 | .{ .src = .{ .mem, .sse, .none } }, |
| | 23843 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 23844 | }, |
| | 23845 | .extra_temps = .{ |
| | 23846 | .{ .kind = .{ .rc = .sse } }, |
| | 23847 | .unused, |
| | 23848 | .unused, |
| | 23849 | .unused, |
| | 23850 | .unused, |
| | 23851 | .unused, |
| | 23852 | .unused, |
| | 23853 | .unused, |
| | 23854 | .unused, |
| | 23855 | }, |
| | 23856 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| | 23857 | .ref = .src0, |
| | 23858 | .rc = .sse, |
| | 23859 | .info = .{ .kind = .all, .scalar = .dword }, |
| | 23860 | } }}, |
| | 23861 | .each = .{ .once = &.{ |
| | 23862 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 23863 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| | 23864 | .{ ._, .v_ps, .cmp, .dst0x, .dst0x, .tmp0x, .vp(switch (cc) { |
| | 23865 | else => unreachable, |
| | 23866 | .l => .lt, |
| | 23867 | .le => .le, |
| | 23868 | }) }, |
| | 23869 | } }, |
| | 23870 | }, .{ |
| | 23871 | .required_features = .{ .f16c, null, null, null }, |
| | 23872 | .src_constraints = .{ |
| | 23873 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 23874 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 23875 | .any, |
| | 23876 | }, |
| | 23877 | .patterns = &.{ |
| | 23878 | .{ .src = .{ .mem, .mem, .none } }, |
| | 23879 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 23880 | .{ .src = .{ .mem, .to_sse, .none } }, |
| | 23881 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 23882 | }, |
| | 23883 | .extra_temps = .{ |
| | 23884 | .{ .kind = .{ .rc = .sse } }, |
| | 23885 | .unused, |
| | 23886 | .unused, |
| | 23887 | .unused, |
| | 23888 | .unused, |
| | 23889 | .unused, |
| | 23890 | .unused, |
| | 23891 | .unused, |
| | 23892 | .unused, |
| | 23893 | }, |
| | 23894 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| | 23895 | .ref = .src0, |
| | 23896 | .rc = .sse, |
| | 23897 | .info = .{ .kind = .all, .scalar = .dword }, |
| | 23898 | } }}, |
| | 23899 | .each = .{ .once = &.{ |
| | 23900 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| | 23901 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, |
| | 23902 | .{ ._, .v_ps, .cmp, .dst0y, .dst0y, .tmp0y, .vp(switch (cc) { |
| | 23903 | else => unreachable, |
| | 23904 | .l => .lt, |
| | 23905 | .le => .le, |
| | 23906 | }) }, |
| | 23907 | } }, |
| | 23908 | }, .{ |
| | 23909 | .required_features = .{ .avx, null, null, null }, |
| | 23910 | .src_constraints = .{ |
| | 23911 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 23912 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 23913 | .any, |
| | 23914 | }, |
| | 23915 | .patterns = &.{ |
| | 23916 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 23917 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 23918 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 23919 | }, |
| | 23920 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| | 23921 | .ref = .src0, |
| | 23922 | .rc = .sse, |
| | 23923 | .info = .{ .kind = .all, .scalar = .dword }, |
| | 23924 | } }}, |
| | 23925 | .each = .{ .once = &.{ |
| | 23926 | .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) { |
| | 23927 | else => unreachable, |
| | 23928 | .l => .lt, |
| | 23929 | .le => .le, |
| | 23930 | }) }, |
| | 23931 | } }, |
| | 23932 | }, .{ |
| | 23933 | .required_features = .{ .sse, null, null, null }, |
| | 23934 | .src_constraints = .{ |
| | 23935 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 23936 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 23937 | .any, |
| | 23938 | }, |
| | 23939 | .patterns = &.{ |
| | 23940 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 23941 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 23942 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 23943 | }, |
| | 23944 | .dst_temps = .{.{ .ref_mask = .{ |
| | 23945 | .ref = .src0, |
| | 23946 | .info = .{ .kind = .all, .scalar = .dword }, |
| | 23947 | } }}, |
| | 23948 | .each = .{ .once = &.{ |
| | 23949 | .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) { |
| | 23950 | else => unreachable, |
| | 23951 | .l => .lt, |
| | 23952 | .le => .le, |
| | 23953 | }), ._ }, |
| | 23954 | } }, |
| | 23955 | }, .{ |
| | 23956 | .required_features = .{ .avx, null, null, null }, |
| | 23957 | .src_constraints = .{ |
| | 23958 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 23959 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 23960 | .any, |
| | 23961 | }, |
| | 23962 | .patterns = &.{ |
| | 23963 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 23964 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 23965 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 23966 | }, |
| | 23967 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| | 23968 | .ref = .src0, |
| | 23969 | .rc = .sse, |
| | 23970 | .info = .{ .kind = .all, .scalar = .dword }, |
| | 23971 | } }}, |
| | 23972 | .each = .{ .once = &.{ |
| | 23973 | .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { |
| | 23974 | else => unreachable, |
| | 23975 | .l => .lt, |
| | 23976 | .le => .le, |
| | 23977 | }) }, |
| | 23978 | } }, |
| | 23979 | }, .{ |
| | 23980 | .required_features = .{ .sse, null, null, null }, |
| | 23981 | .src_constraints = .{ |
| | 23982 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 23983 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 23984 | .any, |
| | 23985 | }, |
| | 23986 | .patterns = &.{ |
| | 23987 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 23988 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 23989 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 23990 | }, |
| | 23991 | .dst_temps = .{.{ .ref_mask = .{ |
| | 23992 | .ref = .src0, |
| | 23993 | .info = .{ .kind = .all, .scalar = .dword }, |
| | 23994 | } }}, |
| | 23995 | .each = .{ .once = &.{ |
| | 23996 | .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) { |
| | 23997 | else => unreachable, |
| | 23998 | .l => .lt, |
| | 23999 | .le => .le, |
| | 24000 | }), ._ }, |
| | 24001 | } }, |
| | 24002 | }, .{ |
| | 24003 | .required_features = .{ .avx, null, null, null }, |
| | 24004 | .src_constraints = .{ |
| | 24005 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 24006 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 24007 | .any, |
| | 24008 | }, |
| | 24009 | .patterns = &.{ |
| | 24010 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 24011 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 24012 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 24013 | }, |
| | 24014 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| | 24015 | .ref = .src0, |
| | 24016 | .rc = .sse, |
| | 24017 | .info = .{ .kind = .all, .scalar = .dword }, |
| | 24018 | } }}, |
| | 24019 | .each = .{ .once = &.{ |
| | 24020 | .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { |
| | 24021 | else => unreachable, |
| | 24022 | .l => .lt, |
| | 24023 | .le => .le, |
| | 24024 | }) }, |
| | 24025 | } }, |
| | 24026 | }, .{ |
| | 24027 | .required_features = .{ .avx, null, null, null }, |
| | 24028 | .src_constraints = .{ |
| | 24029 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 24030 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 24031 | .any, |
| | 24032 | }, |
| | 24033 | .patterns = &.{ |
| | 24034 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 24035 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 24036 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 24037 | }, |
| | 24038 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| | 24039 | .ref = .src0, |
| | 24040 | .rc = .sse, |
| | 24041 | .info = .{ .kind = .all, .scalar = .qword }, |
| | 24042 | } }}, |
| | 24043 | .each = .{ .once = &.{ |
| | 24044 | .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) { |
| | 24045 | else => unreachable, |
| | 24046 | .l => .lt, |
| | 24047 | .le => .le, |
| | 24048 | }) }, |
| | 24049 | } }, |
| | 24050 | }, .{ |
| | 24051 | .required_features = .{ .sse2, null, null, null }, |
| | 24052 | .src_constraints = .{ |
| | 24053 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 24054 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 24055 | .any, |
| | 24056 | }, |
| | 24057 | .patterns = &.{ |
| | 24058 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 24059 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 24060 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 24061 | }, |
| | 24062 | .dst_temps = .{.{ .ref_mask = .{ |
| | 24063 | .ref = .src0, |
| | 24064 | .info = .{ .kind = .all, .scalar = .qword }, |
| | 24065 | } }}, |
| | 24066 | .each = .{ .once = &.{ |
| | 24067 | .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) { |
| | 24068 | else => unreachable, |
| | 24069 | .l => .lt, |
| | 24070 | .le => .le, |
| | 24071 | }), ._ }, |
| | 24072 | } }, |
| | 24073 | }, .{ |
| | 24074 | .required_features = .{ .avx, null, null, null }, |
| | 24075 | .src_constraints = .{ |
| | 24076 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 24077 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 24078 | .any, |
| | 24079 | }, |
| | 24080 | .patterns = &.{ |
| | 24081 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 24082 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 24083 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 24084 | }, |
| | 24085 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| | 24086 | .ref = .src0, |
| | 24087 | .rc = .sse, |
| | 24088 | .info = .{ .kind = .all, .scalar = .qword }, |
| | 24089 | } }}, |
| | 24090 | .each = .{ .once = &.{ |
| | 24091 | .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { |
| | 24092 | else => unreachable, |
| | 24093 | .l => .lt, |
| | 24094 | .le => .le, |
| | 24095 | }) }, |
| | 24096 | } }, |
| | 24097 | }, .{ |
| | 24098 | .required_features = .{ .sse2, null, null, null }, |
| | 24099 | .src_constraints = .{ |
| | 24100 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 24101 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 24102 | .any, |
| | 24103 | }, |
| | 24104 | .patterns = &.{ |
| | 24105 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| | 24106 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| | 24107 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| | 24108 | }, |
| | 24109 | .dst_temps = .{.{ .ref_mask = .{ |
| | 24110 | .ref = .src0, |
| | 24111 | .info = .{ .kind = .all, .scalar = .qword }, |
| | 24112 | } }}, |
| | 24113 | .each = .{ .once = &.{ |
| | 24114 | .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) { |
| | 24115 | else => unreachable, |
| | 24116 | .l => .lt, |
| | 24117 | .le => .le, |
| | 24118 | }), ._ }, |
| | 24119 | } }, |
| | 24120 | }, .{ |
| | 24121 | .required_features = .{ .avx, null, null, null }, |
| | 24122 | .src_constraints = .{ |
| | 24123 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 24124 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 24125 | .any, |
| | 24126 | }, |
| | 24127 | .patterns = &.{ |
| | 24128 | .{ .src = .{ .to_sse, .mem, .none } }, |
| | 24129 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| | 24130 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| | 24131 | }, |
| | 24132 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| | 24133 | .ref = .src0, |
| | 24134 | .rc = .sse, |
| | 24135 | .info = .{ .kind = .all, .scalar = .qword }, |
| | 24136 | } }}, |
| | 24137 | .each = .{ .once = &.{ |
| | 24138 | .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { |
| | 24139 | else => unreachable, |
| | 24140 | .l => .lt, |
| | 24141 | .le => .le, |
| | 24142 | }) }, |
| | 24143 | } }, |
| | 24144 | }, .{ |
| | 24145 | .required_features = .{ .f16c, .slow_incdec, null, null }, |
| | 24146 | .src_constraints = .{ |
| | 24147 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 24148 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 24149 | .any, |
| | 24150 | }, |
| | 24151 | .patterns = &.{ |
| | 24152 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24153 | }, |
| | 24154 | .extra_temps = .{ |
| | 24155 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24156 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 24157 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 24158 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 24159 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 24160 | .unused, |
| | 24161 | .unused, |
| | 24162 | .unused, |
| | 24163 | .unused, |
| | 24164 | }, |
| | 24165 | .dst_temps = .{.mem}, |
| | 24166 | .clobbers = .{ .eflags = true }, |
| | 24167 | .each = .{ .once = &.{ |
| | 24168 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 24169 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 24170 | .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 24171 | .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 24172 | .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) { |
| | 24173 | else => unreachable, |
| | 24174 | .l => .lt, |
| | 24175 | .le => .le, |
| | 24176 | }) }, |
| | 24177 | .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ }, |
| | 24178 | .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ }, |
| | 24179 | .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, |
| | 24180 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 24181 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24182 | } }, |
| | 24183 | }, .{ |
| | 24184 | .required_features = .{ .f16c, null, null, null }, |
| | 24185 | .src_constraints = .{ |
| | 24186 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 24187 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 24188 | .any, |
| | 24189 | }, |
| | 24190 | .patterns = &.{ |
| | 24191 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24192 | }, |
| | 24193 | .extra_temps = .{ |
| | 24194 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24195 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 24196 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 24197 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 24198 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 24199 | .unused, |
| | 24200 | .unused, |
| | 24201 | .unused, |
| | 24202 | .unused, |
| | 24203 | }, |
| | 24204 | .dst_temps = .{.mem}, |
| | 24205 | .clobbers = .{ .eflags = true }, |
| | 24206 | .each = .{ .once = &.{ |
| | 24207 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 24208 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 24209 | .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 24210 | .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 24211 | .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) { |
| | 24212 | else => unreachable, |
| | 24213 | .l => .lt, |
| | 24214 | .le => .le, |
| | 24215 | }) }, |
| | 24216 | .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ }, |
| | 24217 | .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ }, |
| | 24218 | .{ ._, ._c, .in, .tmp1p, ._, ._, ._ }, |
| | 24219 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 24220 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24221 | } }, |
| | 24222 | }, .{ |
| | 24223 | .required_features = .{ .avx, .slow_incdec, null, null }, |
| | 24224 | .src_constraints = .{ |
| | 24225 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24226 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24227 | .any, |
| | 24228 | }, |
| | 24229 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| | 24230 | .patterns = &.{ |
| | 24231 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24232 | }, |
| | 24233 | .call_frame = .{ .alignment = .@"16" }, |
| | 24234 | .extra_temps = .{ |
| | 24235 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 24236 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 24237 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 24238 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| | 24239 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 24240 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 24241 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| | 24242 | .unused, |
| | 24243 | .unused, |
| | 24244 | }, |
| | 24245 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 24246 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24247 | .each = .{ .once = &.{ |
| | 24248 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| | 24249 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 24250 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 24251 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) }, |
| | 24252 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) }, |
| | 24253 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 24254 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| | 24255 | .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, |
| | 24256 | .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ }, |
| | 24257 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| | 24258 | .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, |
| | 24259 | .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, |
| | 24260 | .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ }, |
| | 24261 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 24262 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 24263 | } }, |
| | 24264 | }, .{ |
| | 24265 | .required_features = .{ .avx, null, null, null }, |
| | 24266 | .src_constraints = .{ |
| | 24267 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24268 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24269 | .any, |
| | 24270 | }, |
| | 24271 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| | 24272 | .patterns = &.{ |
| | 24273 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24274 | }, |
| | 24275 | .call_frame = .{ .alignment = .@"16" }, |
| | 24276 | .extra_temps = .{ |
| | 24277 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 24278 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 24279 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 24280 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| | 24281 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 24282 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 24283 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| | 24284 | .unused, |
| | 24285 | .unused, |
| | 24286 | }, |
| | 24287 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 24288 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24289 | .each = .{ .once = &.{ |
| | 24290 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| | 24291 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 24292 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 24293 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) }, |
| | 24294 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) }, |
| | 24295 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 24296 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| | 24297 | .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, |
| | 24298 | .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ }, |
| | 24299 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| | 24300 | .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, |
| | 24301 | .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, |
| | 24302 | .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, |
| | 24303 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 24304 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 24305 | } }, |
| | 24306 | }, .{ |
| | 24307 | .required_features = .{ .sse2, .slow_incdec, null, null }, |
| | 24308 | .src_constraints = .{ |
| | 24309 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24310 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24311 | .any, |
| | 24312 | }, |
| | 24313 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| | 24314 | .patterns = &.{ |
| | 24315 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24316 | }, |
| | 24317 | .call_frame = .{ .alignment = .@"16" }, |
| | 24318 | .extra_temps = .{ |
| | 24319 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 24320 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 24321 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 24322 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| | 24323 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 24324 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 24325 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| | 24326 | .unused, |
| | 24327 | .unused, |
| | 24328 | }, |
| | 24329 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 24330 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24331 | .each = .{ .once = &.{ |
| | 24332 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| | 24333 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 24334 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 24335 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 24336 | .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ }, |
| | 24337 | .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ }, |
| | 24338 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 24339 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| | 24340 | .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, |
| | 24341 | .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ }, |
| | 24342 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| | 24343 | .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, |
| | 24344 | .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, |
| | 24345 | .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ }, |
| | 24346 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 24347 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 24348 | } }, |
| | 24349 | }, .{ |
| | 24350 | .required_features = .{ .sse2, null, null, null }, |
| | 24351 | .src_constraints = .{ |
| | 24352 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24353 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24354 | .any, |
| | 24355 | }, |
| | 24356 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| | 24357 | .patterns = &.{ |
| | 24358 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24359 | }, |
| | 24360 | .call_frame = .{ .alignment = .@"16" }, |
| | 24361 | .extra_temps = .{ |
| | 24362 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 24363 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 24364 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 24365 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| | 24366 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 24367 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 24368 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| | 24369 | .unused, |
| | 24370 | .unused, |
| | 24371 | }, |
| | 24372 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 24373 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24374 | .each = .{ .once = &.{ |
| | 24375 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| | 24376 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 24377 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 24378 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 24379 | .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ }, |
| | 24380 | .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ }, |
| | 24381 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 24382 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| | 24383 | .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, |
| | 24384 | .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ }, |
| | 24385 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| | 24386 | .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, |
| | 24387 | .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, |
| | 24388 | .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, |
| | 24389 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 24390 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 24391 | } }, |
| | 24392 | }, .{ |
| | 24393 | .required_features = .{ .sse, .slow_incdec, null, null }, |
| | 24394 | .src_constraints = .{ |
| | 24395 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24396 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24397 | .any, |
| | 24398 | }, |
| | 24399 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| | 24400 | .patterns = &.{ |
| | 24401 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24402 | }, |
| | 24403 | .call_frame = .{ .alignment = .@"16" }, |
| | 24404 | .extra_temps = .{ |
| | 24405 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 24406 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 24407 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 24408 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| | 24409 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 24410 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 24411 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| | 24412 | .{ .type = .f32, .kind = .mem }, |
| | 24413 | .unused, |
| | 24414 | }, |
| | 24415 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 24416 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24417 | .each = .{ .once = &.{ |
| | 24418 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| | 24419 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 24420 | .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ }, |
| | 24421 | .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ }, |
| | 24422 | .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ }, |
| | 24423 | .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ }, |
| | 24424 | .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ }, |
| | 24425 | .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ }, |
| | 24426 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 24427 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| | 24428 | .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, |
| | 24429 | .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ }, |
| | 24430 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| | 24431 | .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, |
| | 24432 | .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, |
| | 24433 | .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ }, |
| | 24434 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 24435 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 24436 | } }, |
| | 24437 | }, .{ |
| | 24438 | .required_features = .{ .sse, null, null, null }, |
| | 24439 | .src_constraints = .{ |
| | 24440 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24441 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24442 | .any, |
| | 24443 | }, |
| | 24444 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| | 24445 | .patterns = &.{ |
| | 24446 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24447 | }, |
| | 24448 | .call_frame = .{ .alignment = .@"16" }, |
| | 24449 | .extra_temps = .{ |
| | 24450 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 24451 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 24452 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 24453 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| | 24454 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 24455 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 24456 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| | 24457 | .{ .type = .f32, .kind = .mem }, |
| | 24458 | .unused, |
| | 24459 | }, |
| | 24460 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 24461 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24462 | .each = .{ .once = &.{ |
| | 24463 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| | 24464 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 24465 | .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ }, |
| | 24466 | .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ }, |
| | 24467 | .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ }, |
| | 24468 | .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ }, |
| | 24469 | .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ }, |
| | 24470 | .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ }, |
| | 24471 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 24472 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| | 24473 | .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, |
| | 24474 | .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ }, |
| | 24475 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| | 24476 | .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, |
| | 24477 | .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, |
| | 24478 | .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, |
| | 24479 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 24480 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 24481 | } }, |
| | 24482 | }, .{ |
| | 24483 | .required_features = .{ .@"64bit", .avx, .slow_incdec, null }, |
| | 24484 | .src_constraints = .{ |
| | 24485 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24486 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24487 | .any, |
| | 24488 | }, |
| | 24489 | .patterns = &.{ |
| | 24490 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24491 | }, |
| | 24492 | .call_frame = .{ .alignment = .@"16" }, |
| | 24493 | .extra_temps = .{ |
| | 24494 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 24495 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 24496 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 24497 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 24498 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| | 24499 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 24500 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 24501 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| | 24502 | .unused, |
| | 24503 | }, |
| | 24504 | .dst_temps = .{.mem}, |
| | 24505 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24506 | .each = .{ .once = &.{ |
| | 24507 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 24508 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 24509 | .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ }, |
| | 24510 | .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) }, |
| | 24511 | .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) }, |
| | 24512 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 24513 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| | 24514 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| | 24515 | .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, |
| | 24516 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| | 24517 | .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, |
| | 24518 | .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, |
| | 24519 | .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ }, |
| | 24520 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| | 24521 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 24522 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| | 24523 | .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, |
| | 24524 | .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, |
| | 24525 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 24526 | .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 24527 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 24528 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| | 24529 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 24530 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| | 24531 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ }, |
| | 24532 | } }, |
| | 24533 | }, .{ |
| | 24534 | .required_features = .{ .@"64bit", .avx, null, null }, |
| | 24535 | .src_constraints = .{ |
| | 24536 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24537 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24538 | .any, |
| | 24539 | }, |
| | 24540 | .patterns = &.{ |
| | 24541 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24542 | }, |
| | 24543 | .call_frame = .{ .alignment = .@"16" }, |
| | 24544 | .extra_temps = .{ |
| | 24545 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 24546 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 24547 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 24548 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 24549 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| | 24550 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 24551 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 24552 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| | 24553 | .unused, |
| | 24554 | }, |
| | 24555 | .dst_temps = .{.mem}, |
| | 24556 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24557 | .each = .{ .once = &.{ |
| | 24558 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 24559 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 24560 | .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ }, |
| | 24561 | .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) }, |
| | 24562 | .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) }, |
| | 24563 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 24564 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| | 24565 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| | 24566 | .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, |
| | 24567 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| | 24568 | .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, |
| | 24569 | .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, |
| | 24570 | .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, |
| | 24571 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| | 24572 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 24573 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| | 24574 | .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, |
| | 24575 | .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, |
| | 24576 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 24577 | .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 24578 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 24579 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| | 24580 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 24581 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| | 24582 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ }, |
| | 24583 | } }, |
| | 24584 | }, .{ |
| | 24585 | .required_features = .{ .@"64bit", .sse2, .slow_incdec, null }, |
| | 24586 | .src_constraints = .{ |
| | 24587 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24588 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24589 | .any, |
| | 24590 | }, |
| | 24591 | .patterns = &.{ |
| | 24592 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24593 | }, |
| | 24594 | .call_frame = .{ .alignment = .@"16" }, |
| | 24595 | .extra_temps = .{ |
| | 24596 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 24597 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 24598 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 24599 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 24600 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| | 24601 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 24602 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 24603 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| | 24604 | .unused, |
| | 24605 | }, |
| | 24606 | .dst_temps = .{.mem}, |
| | 24607 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24608 | .each = .{ .once = &.{ |
| | 24609 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 24610 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 24611 | .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 24612 | .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ }, |
| | 24613 | .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ }, |
| | 24614 | .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ }, |
| | 24615 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 24616 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| | 24617 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| | 24618 | .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, |
| | 24619 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| | 24620 | .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, |
| | 24621 | .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, |
| | 24622 | .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ }, |
| | 24623 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| | 24624 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 24625 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| | 24626 | .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, |
| | 24627 | .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, |
| | 24628 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 24629 | .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 24630 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 24631 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| | 24632 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 24633 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| | 24634 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ }, |
| | 24635 | } }, |
| | 24636 | }, .{ |
| | 24637 | .required_features = .{ .@"64bit", .sse2, null, null }, |
| | 24638 | .src_constraints = .{ |
| | 24639 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24640 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24641 | .any, |
| | 24642 | }, |
| | 24643 | .patterns = &.{ |
| | 24644 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24645 | }, |
| | 24646 | .call_frame = .{ .alignment = .@"16" }, |
| | 24647 | .extra_temps = .{ |
| | 24648 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 24649 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 24650 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 24651 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 24652 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| | 24653 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 24654 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 24655 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| | 24656 | .unused, |
| | 24657 | }, |
| | 24658 | .dst_temps = .{.mem}, |
| | 24659 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24660 | .each = .{ .once = &.{ |
| | 24661 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 24662 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 24663 | .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 24664 | .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ }, |
| | 24665 | .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ }, |
| | 24666 | .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ }, |
| | 24667 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 24668 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| | 24669 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| | 24670 | .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, |
| | 24671 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| | 24672 | .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, |
| | 24673 | .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, |
| | 24674 | .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, |
| | 24675 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| | 24676 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 24677 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| | 24678 | .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, |
| | 24679 | .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, |
| | 24680 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 24681 | .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 24682 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 24683 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| | 24684 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 24685 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| | 24686 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ }, |
| | 24687 | } }, |
| | 24688 | }, .{ |
| | 24689 | .required_features = .{ .@"64bit", .sse, .slow_incdec, null }, |
| | 24690 | .src_constraints = .{ |
| | 24691 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24692 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24693 | .any, |
| | 24694 | }, |
| | 24695 | .patterns = &.{ |
| | 24696 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24697 | }, |
| | 24698 | .call_frame = .{ .alignment = .@"16" }, |
| | 24699 | .extra_temps = .{ |
| | 24700 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 24701 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 24702 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 24703 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 24704 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| | 24705 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 24706 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 24707 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| | 24708 | .{ .type = .f32, .kind = .mem }, |
| | 24709 | }, |
| | 24710 | .dst_temps = .{.mem}, |
| | 24711 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24712 | .each = .{ .once = &.{ |
| | 24713 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 24714 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 24715 | .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ }, |
| | 24716 | .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ }, |
| | 24717 | .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ }, |
| | 24718 | .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ }, |
| | 24719 | .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ }, |
| | 24720 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ }, |
| | 24721 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 24722 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| | 24723 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| | 24724 | .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, |
| | 24725 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| | 24726 | .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, |
| | 24727 | .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, |
| | 24728 | .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ }, |
| | 24729 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| | 24730 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 24731 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| | 24732 | .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, |
| | 24733 | .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, |
| | 24734 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 24735 | .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 24736 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 24737 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| | 24738 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 24739 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| | 24740 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ }, |
| | 24741 | } }, |
| | 24742 | }, .{ |
| | 24743 | .required_features = .{ .@"64bit", .sse, null, null }, |
| | 24744 | .src_constraints = .{ |
| | 24745 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24746 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 24747 | .any, |
| | 24748 | }, |
| | 24749 | .patterns = &.{ |
| | 24750 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24751 | }, |
| | 24752 | .call_frame = .{ .alignment = .@"16" }, |
| | 24753 | .extra_temps = .{ |
| | 24754 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 24755 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 24756 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 24757 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| | 24758 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| | 24759 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 24760 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 24761 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| | 24762 | .{ .type = .f32, .kind = .mem }, |
| | 24763 | }, |
| | 24764 | .dst_temps = .{.mem}, |
| | 24765 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24766 | .each = .{ .once = &.{ |
| | 24767 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 24768 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 24769 | .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ }, |
| | 24770 | .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ }, |
| | 24771 | .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ }, |
| | 24772 | .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ }, |
| | 24773 | .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ }, |
| | 24774 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ }, |
| | 24775 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 24776 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| | 24777 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| | 24778 | .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, |
| | 24779 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| | 24780 | .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, |
| | 24781 | .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, |
| | 24782 | .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, |
| | 24783 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| | 24784 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 24785 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| | 24786 | .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, |
| | 24787 | .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, |
| | 24788 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 24789 | .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 24790 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 24791 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| | 24792 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 24793 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| | 24794 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ }, |
| | 24795 | } }, |
| | 24796 | }, .{ |
| | 24797 | .required_features = .{ .avx, .slow_incdec, null, null }, |
| | 24798 | .src_constraints = .{ |
| | 24799 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 24800 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 24801 | .any, |
| | 24802 | }, |
| | 24803 | .patterns = &.{ |
| | 24804 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24805 | }, |
| | 24806 | .extra_temps = .{ |
| | 24807 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24808 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 24809 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 24810 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 24811 | .unused, |
| | 24812 | .unused, |
| | 24813 | .unused, |
| | 24814 | .unused, |
| | 24815 | .unused, |
| | 24816 | }, |
| | 24817 | .dst_temps = .{.mem}, |
| | 24818 | .clobbers = .{ .eflags = true }, |
| | 24819 | .each = .{ .once = &.{ |
| | 24820 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 24821 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 24822 | .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 24823 | .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) { |
| | 24824 | else => unreachable, |
| | 24825 | .l => .lt, |
| | 24826 | .le => .le, |
| | 24827 | }) }, |
| | 24828 | .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ }, |
| | 24829 | .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, |
| | 24830 | .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, |
| | 24831 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 24832 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24833 | } }, |
| | 24834 | }, .{ |
| | 24835 | .required_features = .{ .avx, null, null, null }, |
| | 24836 | .src_constraints = .{ |
| | 24837 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 24838 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 24839 | .any, |
| | 24840 | }, |
| | 24841 | .patterns = &.{ |
| | 24842 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24843 | }, |
| | 24844 | .extra_temps = .{ |
| | 24845 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24846 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 24847 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 24848 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 24849 | .unused, |
| | 24850 | .unused, |
| | 24851 | .unused, |
| | 24852 | .unused, |
| | 24853 | .unused, |
| | 24854 | }, |
| | 24855 | .dst_temps = .{.mem}, |
| | 24856 | .clobbers = .{ .eflags = true }, |
| | 24857 | .each = .{ .once = &.{ |
| | 24858 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 24859 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 24860 | .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 24861 | .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) { |
| | 24862 | else => unreachable, |
| | 24863 | .l => .lt, |
| | 24864 | .le => .le, |
| | 24865 | }) }, |
| | 24866 | .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ }, |
| | 24867 | .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, |
| | 24868 | .{ ._, ._c, .in, .tmp1q, ._, ._, ._ }, |
| | 24869 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 24870 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24871 | } }, |
| | 24872 | }, .{ |
| | 24873 | .required_features = .{ .sse2, null, null, null }, |
| | 24874 | .src_constraints = .{ |
| | 24875 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 24876 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 24877 | .any, |
| | 24878 | }, |
| | 24879 | .patterns = &.{ |
| | 24880 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24881 | }, |
| | 24882 | .extra_temps = .{ |
| | 24883 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24884 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 24885 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 24886 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 24887 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 24888 | .unused, |
| | 24889 | .unused, |
| | 24890 | .unused, |
| | 24891 | .unused, |
| | 24892 | }, |
| | 24893 | .dst_temps = .{.mem}, |
| | 24894 | .clobbers = .{ .eflags = true }, |
| | 24895 | .each = .{ .once = &.{ |
| | 24896 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 24897 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 24898 | .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 24899 | .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ }, |
| | 24900 | .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { |
| | 24901 | else => unreachable, |
| | 24902 | .l => .lt, |
| | 24903 | .le => .le, |
| | 24904 | }), ._ }, |
| | 24905 | .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) { |
| | 24906 | else => unreachable, |
| | 24907 | .l => .lt, |
| | 24908 | .le => .le, |
| | 24909 | }), ._ }, |
| | 24910 | .{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ }, |
| | 24911 | .{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ }, |
| | 24912 | .{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ }, |
| | 24913 | .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ }, |
| | 24914 | .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, |
| | 24915 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 24916 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24917 | } }, |
| | 24918 | }, .{ |
| | 24919 | .required_features = .{ .sse, null, null, null }, |
| | 24920 | .src_constraints = .{ |
| | 24921 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 24922 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 24923 | .any, |
| | 24924 | }, |
| | 24925 | .patterns = &.{ |
| | 24926 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24927 | }, |
| | 24928 | .extra_temps = .{ |
| | 24929 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24930 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 24931 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 24932 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 24933 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 24934 | .unused, |
| | 24935 | .unused, |
| | 24936 | .unused, |
| | 24937 | .unused, |
| | 24938 | }, |
| | 24939 | .dst_temps = .{.mem}, |
| | 24940 | .clobbers = .{ .eflags = true }, |
| | 24941 | .each = .{ .once = &.{ |
| | 24942 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 24943 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 24944 | .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 24945 | .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { |
| | 24946 | else => unreachable, |
| | 24947 | .l => .lt, |
| | 24948 | .le => .le, |
| | 24949 | }), ._ }, |
| | 24950 | .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ }, |
| | 24951 | .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ }, |
| | 24952 | .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) { |
| | 24953 | else => unreachable, |
| | 24954 | .l => .lt, |
| | 24955 | .le => .le, |
| | 24956 | }), ._ }, |
| | 24957 | .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ }, |
| | 24958 | .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ }, |
| | 24959 | .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ }, |
| | 24960 | .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, |
| | 24961 | .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, |
| | 24962 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 24963 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24964 | } }, |
| | 24965 | }, .{ |
| | 24966 | .required_features = .{ .sse, null, null, null }, |
| | 24967 | .src_constraints = .{ |
| | 24968 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 24969 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 24970 | .any, |
| | 24971 | }, |
| | 24972 | .patterns = &.{ |
| | 24973 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 24974 | }, |
| | 24975 | .extra_temps = .{ |
| | 24976 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24977 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 24978 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 24979 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 24980 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 24981 | .unused, |
| | 24982 | .unused, |
| | 24983 | .unused, |
| | 24984 | .unused, |
| | 24985 | }, |
| | 24986 | .dst_temps = .{.mem}, |
| | 24987 | .clobbers = .{ .eflags = true }, |
| | 24988 | .each = .{ .once = &.{ |
| | 24989 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 24990 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 24991 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| | 24992 | .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ }, |
| | 24993 | .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .sp(switch (cc) { |
| | 24994 | else => unreachable, |
| | 24995 | .l => .lt, |
| | 24996 | .le => .le, |
| | 24997 | }), ._ }, |
| | 24998 | .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ }, |
| | 24999 | .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ }, |
| | 25000 | .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ }, |
| | 25001 | .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, |
| | 25002 | .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, |
| | 25003 | .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 25004 | .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { |
| | 25005 | else => unreachable, |
| | 25006 | .l => .lt, |
| | 25007 | .le => .le, |
| | 25008 | }), ._ }, |
| | 25009 | .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ }, |
| | 25010 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 25011 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25012 | .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, |
| | 25013 | } }, |
| | 25014 | }, .{ |
| | 25015 | .required_features = .{ .avx, .slow_incdec, null, null }, |
| | 25016 | .src_constraints = .{ |
| | 25017 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, |
| | 25018 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, |
| | 25019 | .any, |
| | 25020 | }, |
| | 25021 | .patterns = &.{ |
| | 25022 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25023 | }, |
| | 25024 | .extra_temps = .{ |
| | 25025 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25026 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 25027 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 25028 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 25029 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 25030 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 25031 | .unused, |
| | 25032 | .unused, |
| | 25033 | .unused, |
| | 25034 | }, |
| | 25035 | .dst_temps = .{.mem}, |
| | 25036 | .clobbers = .{ .eflags = true }, |
| | 25037 | .each = .{ .once = &.{ |
| | 25038 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25039 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 25040 | .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 25041 | .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ }, |
| | 25042 | .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) { |
| | 25043 | else => unreachable, |
| | 25044 | .l => .lt, |
| | 25045 | .le => .le, |
| | 25046 | }) }, |
| | 25047 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) { |
| | 25048 | else => unreachable, |
| | 25049 | .l => .lt, |
| | 25050 | .le => .le, |
| | 25051 | }) }, |
| | 25052 | .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ }, |
| | 25053 | .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ }, |
| | 25054 | .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ }, |
| | 25055 | .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ }, |
| | 25056 | .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ }, |
| | 25057 | .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, |
| | 25058 | .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ }, |
| | 25059 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25060 | } }, |
| | 25061 | }, .{ |
| | 25062 | .required_features = .{ .avx, null, null, null }, |
| | 25063 | .src_constraints = .{ |
| | 25064 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, |
| | 25065 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, |
| | 25066 | .any, |
| | 25067 | }, |
| | 25068 | .patterns = &.{ |
| | 25069 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25070 | }, |
| | 25071 | .extra_temps = .{ |
| | 25072 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25073 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 25074 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 25075 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 25076 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 25077 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 25078 | .unused, |
| | 25079 | .unused, |
| | 25080 | .unused, |
| | 25081 | }, |
| | 25082 | .dst_temps = .{.mem}, |
| | 25083 | .clobbers = .{ .eflags = true }, |
| | 25084 | .each = .{ .once = &.{ |
| | 25085 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25086 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 25087 | .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 25088 | .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ }, |
| | 25089 | .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) { |
| | 25090 | else => unreachable, |
| | 25091 | .l => .lt, |
| | 25092 | .le => .le, |
| | 25093 | }) }, |
| | 25094 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) { |
| | 25095 | else => unreachable, |
| | 25096 | .l => .lt, |
| | 25097 | .le => .le, |
| | 25098 | }) }, |
| | 25099 | .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ }, |
| | 25100 | .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ }, |
| | 25101 | .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ }, |
| | 25102 | .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ }, |
| | 25103 | .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ }, |
| | 25104 | .{ ._, ._c, .in, .tmp1q, ._, ._, ._ }, |
| | 25105 | .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ }, |
| | 25106 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25107 | } }, |
| | 25108 | }, .{ |
| | 25109 | .required_features = .{ .avx, null, null, null }, |
| | 25110 | .src_constraints = .{ |
| | 25111 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 25112 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 25113 | .any, |
| | 25114 | }, |
| | 25115 | .patterns = &.{ |
| | 25116 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25117 | }, |
| | 25118 | .extra_temps = .{ |
| | 25119 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25120 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| | 25121 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25122 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 25123 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 25124 | .unused, |
| | 25125 | .unused, |
| | 25126 | .unused, |
| | 25127 | .unused, |
| | 25128 | }, |
| | 25129 | .dst_temps = .{.mem}, |
| | 25130 | .clobbers = .{ .eflags = true }, |
| | 25131 | .each = .{ .once = &.{ |
| | 25132 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25133 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25134 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25135 | .{ .@"0:", .v_pd, .mova, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| | 25136 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) { |
| | 25137 | else => unreachable, |
| | 25138 | .l => .lt, |
| | 25139 | .le => .le, |
| | 25140 | }) }, |
| | 25141 | .{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ }, |
| | 25142 | .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ }, |
| | 25143 | .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ }, |
| | 25144 | .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ }, |
| | 25145 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25146 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 25147 | .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ }, |
| | 25148 | .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ }, |
| | 25149 | .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ }, |
| | 25150 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25151 | .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 25152 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25153 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25154 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 25155 | .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, |
| | 25156 | .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, |
| | 25157 | } }, |
| | 25158 | }, .{ |
| | 25159 | .required_features = .{ .sse2, null, null, null }, |
| | 25160 | .src_constraints = .{ |
| | 25161 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 25162 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 25163 | .any, |
| | 25164 | }, |
| | 25165 | .patterns = &.{ |
| | 25166 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25167 | }, |
| | 25168 | .extra_temps = .{ |
| | 25169 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25170 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| | 25171 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25172 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 25173 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 25174 | .unused, |
| | 25175 | .unused, |
| | 25176 | .unused, |
| | 25177 | .unused, |
| | 25178 | }, |
| | 25179 | .dst_temps = .{.mem}, |
| | 25180 | .clobbers = .{ .eflags = true }, |
| | 25181 | .each = .{ .once = &.{ |
| | 25182 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25183 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25184 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25185 | .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 25186 | .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { |
| | 25187 | else => unreachable, |
| | 25188 | .l => .lt, |
| | 25189 | .le => .le, |
| | 25190 | }), ._ }, |
| | 25191 | .{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ }, |
| | 25192 | .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ }, |
| | 25193 | .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ }, |
| | 25194 | .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ }, |
| | 25195 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25196 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 25197 | .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ }, |
| | 25198 | .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ }, |
| | 25199 | .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ }, |
| | 25200 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25201 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25202 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25203 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25204 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 25205 | .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, |
| | 25206 | .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, |
| | 25207 | } }, |
| | 25208 | }, .{ |
| | 25209 | .required_features = .{ .x87, .cmov, .slow_incdec, null }, |
| | 25210 | .src_constraints = .{ |
| | 25211 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 25212 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 25213 | .any, |
| | 25214 | }, |
| | 25215 | .patterns = &.{ |
| | 25216 | .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, |
| | 25217 | }, |
| | 25218 | .extra_temps = .{ |
| | 25219 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25220 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| | 25221 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25222 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 25223 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| | 25224 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| | 25225 | .unused, |
| | 25226 | .unused, |
| | 25227 | .unused, |
| | 25228 | }, |
| | 25229 | .dst_temps = .{.mem}, |
| | 25230 | .clobbers = .{ .eflags = true }, |
| | 25231 | .each = .{ .once = &.{ |
| | 25232 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25233 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25234 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25235 | .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| | 25236 | .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ }, |
| | 25237 | .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ }, |
| | 25238 | .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ }, |
| | 25239 | .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ }, |
| | 25240 | .{ ._, .fromCond(switch (cc) { |
| | 25241 | else => unreachable, |
| | 25242 | .l => .a, |
| | 25243 | .le => .ae, |
| | 25244 | }), .set, .tmp3b, ._, ._, ._ }, |
| | 25245 | .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, |
| | 25246 | .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, |
| | 25247 | .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, |
| | 25248 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25249 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 25250 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| | 25251 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| | 25252 | .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, |
| | 25253 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25254 | .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 25255 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25256 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25257 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 25258 | .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, |
| | 25259 | .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, |
| | 25260 | } }, |
| | 25261 | }, .{ |
| | 25262 | .required_features = .{ .x87, .cmov, null, null }, |
| | 25263 | .src_constraints = .{ |
| | 25264 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 25265 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 25266 | .any, |
| | 25267 | }, |
| | 25268 | .patterns = &.{ |
| | 25269 | .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, |
| | 25270 | }, |
| | 25271 | .extra_temps = .{ |
| | 25272 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25273 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| | 25274 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25275 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 25276 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| | 25277 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| | 25278 | .unused, |
| | 25279 | .unused, |
| | 25280 | .unused, |
| | 25281 | }, |
| | 25282 | .dst_temps = .{.mem}, |
| | 25283 | .clobbers = .{ .eflags = true }, |
| | 25284 | .each = .{ .once = &.{ |
| | 25285 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25286 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25287 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25288 | .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| | 25289 | .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ }, |
| | 25290 | .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ }, |
| | 25291 | .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ }, |
| | 25292 | .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ }, |
| | 25293 | .{ ._, .fromCond(switch (cc) { |
| | 25294 | else => unreachable, |
| | 25295 | .l => .a, |
| | 25296 | .le => .ae, |
| | 25297 | }), .set, .tmp3b, ._, ._, ._ }, |
| | 25298 | .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, |
| | 25299 | .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, |
| | 25300 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| | 25301 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25302 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 25303 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| | 25304 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| | 25305 | .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, |
| | 25306 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25307 | .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 25308 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25309 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25310 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 25311 | .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, |
| | 25312 | .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, |
| | 25313 | } }, |
| | 25314 | }, .{ |
| | 25315 | .required_features = .{ .x87, null, null, null }, |
| | 25316 | .src_constraints = .{ |
| | 25317 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 25318 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 25319 | .any, |
| | 25320 | }, |
| | 25321 | .patterns = &.{ |
| | 25322 | .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, |
| | 25323 | }, |
| | 25324 | .extra_temps = .{ |
| | 25325 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25326 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| | 25327 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25328 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 25329 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| | 25330 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| | 25331 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| | 25332 | .unused, |
| | 25333 | .unused, |
| | 25334 | }, |
| | 25335 | .dst_temps = .{.mem}, |
| | 25336 | .clobbers = .{ .eflags = true }, |
| | 25337 | .each = .{ .once = &.{ |
| | 25338 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25339 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25340 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25341 | .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| | 25342 | .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ }, |
| | 25343 | .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ }, |
| | 25344 | .{ ._, .f_pp, .ucom, ._, ._, ._, ._ }, |
| | 25345 | .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ }, |
| | 25346 | switch (cc) { |
| | 25347 | else => unreachable, |
| | 25348 | .l => .{ ._, ._, .@"test", .tmp6b, .si(0b1_000_001), ._, ._ }, |
| | 25349 | .le => .{ ._, ._r, .sh, .tmp6b, .ui(1), ._, ._ }, |
| | 25350 | }, |
| | 25351 | .{ ._, .fromCond(switch (cc) { |
| | 25352 | else => unreachable, |
| | 25353 | .l => .z, |
| | 25354 | .le => .nc, |
| | 25355 | }), .set, .tmp3b, ._, ._, ._ }, |
| | 25356 | .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, |
| | 25357 | .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, |
| | 25358 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| | 25359 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25360 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 25361 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| | 25362 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| | 25363 | .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, |
| | 25364 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25365 | .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 25366 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25367 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25368 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 25369 | .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, |
| | 25370 | .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, |
| | 25371 | } }, |
| | 25372 | }, .{ |
| | 25373 | .required_features = .{ .x87, .cmov, .slow_incdec, null }, |
| | 25374 | .src_constraints = .{ |
| | 25375 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 25376 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 25377 | .any, |
| | 25378 | }, |
| | 25379 | .patterns = &.{ |
| | 25380 | .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, |
| | 25381 | }, |
| | 25382 | .extra_temps = .{ |
| | 25383 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25384 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| | 25385 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25386 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 25387 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| | 25388 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 25389 | .unused, |
| | 25390 | .unused, |
| | 25391 | .unused, |
| | 25392 | }, |
| | 25393 | .dst_temps = .{.mem}, |
| | 25394 | .clobbers = .{ .eflags = true }, |
| | 25395 | .each = .{ .once = &.{ |
| | 25396 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25397 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25398 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25399 | .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| | 25400 | .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, |
| | 25401 | .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, |
| | 25402 | .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ }, |
| | 25403 | .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ }, |
| | 25404 | .{ ._, .fromCond(switch (cc) { |
| | 25405 | else => unreachable, |
| | 25406 | .l => .a, |
| | 25407 | .le => .ae, |
| | 25408 | }), .set, .tmp3b, ._, ._, ._ }, |
| | 25409 | .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, |
| | 25410 | .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, |
| | 25411 | .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, |
| | 25412 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25413 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 25414 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| | 25415 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| | 25416 | .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, |
| | 25417 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25418 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25419 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25420 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25421 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 25422 | .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, |
| | 25423 | .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, |
| | 25424 | } }, |
| | 25425 | }, .{ |
| | 25426 | .required_features = .{ .x87, .cmov, null, null }, |
| | 25427 | .src_constraints = .{ |
| | 25428 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 25429 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 25430 | .any, |
| | 25431 | }, |
| | 25432 | .patterns = &.{ |
| | 25433 | .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, |
| | 25434 | }, |
| | 25435 | .extra_temps = .{ |
| | 25436 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25437 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| | 25438 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25439 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 25440 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| | 25441 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 25442 | .unused, |
| | 25443 | .unused, |
| | 25444 | .unused, |
| | 25445 | }, |
| | 25446 | .dst_temps = .{.mem}, |
| | 25447 | .clobbers = .{ .eflags = true }, |
| | 25448 | .each = .{ .once = &.{ |
| | 25449 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25450 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25451 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25452 | .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| | 25453 | .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, |
| | 25454 | .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, |
| | 25455 | .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ }, |
| | 25456 | .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ }, |
| | 25457 | .{ ._, .fromCond(switch (cc) { |
| | 25458 | else => unreachable, |
| | 25459 | .l => .a, |
| | 25460 | .le => .ae, |
| | 25461 | }), .set, .tmp3b, ._, ._, ._ }, |
| | 25462 | .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, |
| | 25463 | .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, |
| | 25464 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| | 25465 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25466 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 25467 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| | 25468 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| | 25469 | .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, |
| | 25470 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25471 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25472 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25473 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25474 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 25475 | .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, |
| | 25476 | .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, |
| | 25477 | } }, |
| | 25478 | }, .{ |
| | 25479 | .required_features = .{ .x87, null, null, null }, |
| | 25480 | .src_constraints = .{ |
| | 25481 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 25482 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 25483 | .any, |
| | 25484 | }, |
| | 25485 | .patterns = &.{ |
| | 25486 | .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, |
| | 25487 | }, |
| | 25488 | .extra_temps = .{ |
| | 25489 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25490 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| | 25491 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25492 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 25493 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| | 25494 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 25495 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| | 25496 | .unused, |
| | 25497 | .unused, |
| | 25498 | }, |
| | 25499 | .dst_temps = .{.mem}, |
| | 25500 | .clobbers = .{ .eflags = true }, |
| | 25501 | .each = .{ .once = &.{ |
| | 25502 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25503 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25504 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25505 | .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| | 25506 | .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, |
| | 25507 | .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, |
| | 25508 | .{ ._, .f_pp, .ucom, ._, ._, ._, ._ }, |
| | 25509 | .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ }, |
| | 25510 | switch (cc) { |
| | 25511 | else => unreachable, |
| | 25512 | .l => .{ ._, ._, .@"test", .tmp6b, .si(0b1_000_001), ._, ._ }, |
| | 25513 | .le => .{ ._, ._r, .sh, .tmp6b, .ui(1), ._, ._ }, |
| | 25514 | }, |
| | 25515 | .{ ._, .fromCond(switch (cc) { |
| | 25516 | else => unreachable, |
| | 25517 | .l => .z, |
| | 25518 | .le => .nc, |
| | 25519 | }), .set, .tmp3b, ._, ._, ._ }, |
| | 25520 | .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, |
| | 25521 | .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, |
| | 25522 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| | 25523 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25524 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 25525 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| | 25526 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| | 25527 | .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, |
| | 25528 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25529 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25530 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25531 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| | 25532 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 25533 | .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, |
| | 25534 | .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, |
| | 25535 | } }, |
| | 25536 | }, .{ |
| | 25537 | .required_features = .{ .avx, .slow_incdec, null, null }, |
| | 25538 | .src_constraints = .{ |
| | 25539 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25540 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25541 | .any, |
| | 25542 | }, |
| | 25543 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| | 25544 | .patterns = &.{ |
| | 25545 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25546 | }, |
| | 25547 | .call_frame = .{ .alignment = .@"16" }, |
| | 25548 | .extra_temps = .{ |
| | 25549 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25550 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25551 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 25552 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 25553 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| | 25554 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 25555 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 25556 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| | 25557 | .unused, |
| | 25558 | }, |
| | 25559 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 25560 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 25561 | .each = .{ .once = &.{ |
| | 25562 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| | 25563 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25564 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25565 | .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 25566 | .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 25567 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 25568 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| | 25569 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| | 25570 | .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, |
| | 25571 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| | 25572 | .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, |
| | 25573 | .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, |
| | 25574 | .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, |
| | 25575 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25576 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25577 | } }, |
| | 25578 | }, .{ |
| | 25579 | .required_features = .{ .avx, .slow_incdec, null, null }, |
| | 25580 | .src_constraints = .{ |
| | 25581 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25582 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25583 | .any, |
| | 25584 | }, |
| | 25585 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| | 25586 | .patterns = &.{ |
| | 25587 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25588 | }, |
| | 25589 | .call_frame = .{ .alignment = .@"16" }, |
| | 25590 | .extra_temps = .{ |
| | 25591 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25592 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25593 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 25594 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 25595 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| | 25596 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 25597 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 25598 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| | 25599 | .unused, |
| | 25600 | }, |
| | 25601 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 25602 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 25603 | .each = .{ .once = &.{ |
| | 25604 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| | 25605 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25606 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25607 | .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 25608 | .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 25609 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 25610 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| | 25611 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| | 25612 | .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, |
| | 25613 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| | 25614 | .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, |
| | 25615 | .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, |
| | 25616 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| | 25617 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25618 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25619 | } }, |
| | 25620 | }, .{ |
| | 25621 | .required_features = .{ .sse2, .slow_incdec, null, null }, |
| | 25622 | .src_constraints = .{ |
| | 25623 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25624 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25625 | .any, |
| | 25626 | }, |
| | 25627 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| | 25628 | .patterns = &.{ |
| | 25629 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25630 | }, |
| | 25631 | .call_frame = .{ .alignment = .@"16" }, |
| | 25632 | .extra_temps = .{ |
| | 25633 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25634 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25635 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 25636 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 25637 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| | 25638 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 25639 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 25640 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| | 25641 | .unused, |
| | 25642 | }, |
| | 25643 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 25644 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 25645 | .each = .{ .once = &.{ |
| | 25646 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| | 25647 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25648 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25649 | .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 25650 | .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 25651 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 25652 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| | 25653 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| | 25654 | .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, |
| | 25655 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| | 25656 | .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, |
| | 25657 | .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, |
| | 25658 | .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, |
| | 25659 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25660 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25661 | } }, |
| | 25662 | }, .{ |
| | 25663 | .required_features = .{ .sse2, .slow_incdec, null, null }, |
| | 25664 | .src_constraints = .{ |
| | 25665 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25666 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25667 | .any, |
| | 25668 | }, |
| | 25669 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| | 25670 | .patterns = &.{ |
| | 25671 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25672 | }, |
| | 25673 | .call_frame = .{ .alignment = .@"16" }, |
| | 25674 | .extra_temps = .{ |
| | 25675 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25676 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25677 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 25678 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 25679 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| | 25680 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 25681 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 25682 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| | 25683 | .unused, |
| | 25684 | }, |
| | 25685 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 25686 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 25687 | .each = .{ .once = &.{ |
| | 25688 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| | 25689 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25690 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25691 | .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 25692 | .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 25693 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 25694 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| | 25695 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| | 25696 | .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, |
| | 25697 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| | 25698 | .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, |
| | 25699 | .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, |
| | 25700 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| | 25701 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25702 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25703 | } }, |
| | 25704 | }, .{ |
| | 25705 | .required_features = .{ .sse, .slow_incdec, null, null }, |
| | 25706 | .src_constraints = .{ |
| | 25707 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25708 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25709 | .any, |
| | 25710 | }, |
| | 25711 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| | 25712 | .patterns = &.{ |
| | 25713 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25714 | }, |
| | 25715 | .call_frame = .{ .alignment = .@"16" }, |
| | 25716 | .extra_temps = .{ |
| | 25717 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25718 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25719 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 25720 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 25721 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| | 25722 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 25723 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 25724 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| | 25725 | .unused, |
| | 25726 | }, |
| | 25727 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 25728 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 25729 | .each = .{ .once = &.{ |
| | 25730 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| | 25731 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25732 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25733 | .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 25734 | .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 25735 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 25736 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| | 25737 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| | 25738 | .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, |
| | 25739 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| | 25740 | .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, |
| | 25741 | .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, |
| | 25742 | .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, |
| | 25743 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25744 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25745 | } }, |
| | 25746 | }, .{ |
| | 25747 | .required_features = .{ .sse2, .slow_incdec, null, null }, |
| | 25748 | .src_constraints = .{ |
| | 25749 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25750 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25751 | .any, |
| | 25752 | }, |
| | 25753 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| | 25754 | .patterns = &.{ |
| | 25755 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25756 | }, |
| | 25757 | .call_frame = .{ .alignment = .@"16" }, |
| | 25758 | .extra_temps = .{ |
| | 25759 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25760 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25761 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 25762 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 25763 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| | 25764 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 25765 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 25766 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| | 25767 | .unused, |
| | 25768 | }, |
| | 25769 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 25770 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 25771 | .each = .{ .once = &.{ |
| | 25772 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| | 25773 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25774 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25775 | .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 25776 | .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 25777 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 25778 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| | 25779 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| | 25780 | .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, |
| | 25781 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| | 25782 | .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, |
| | 25783 | .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, |
| | 25784 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| | 25785 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25786 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25787 | } }, |
| | 25788 | }, .{ |
| | 25789 | .required_features = .{ .@"64bit", .avx, .slow_incdec, null }, |
| | 25790 | .src_constraints = .{ |
| | 25791 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25792 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25793 | .any, |
| | 25794 | }, |
| | 25795 | .patterns = &.{ |
| | 25796 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25797 | }, |
| | 25798 | .call_frame = .{ .alignment = .@"16" }, |
| | 25799 | .extra_temps = .{ |
| | 25800 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25801 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25802 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 25803 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 25804 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 25805 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| | 25806 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 25807 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 25808 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| | 25809 | }, |
| | 25810 | .dst_temps = .{.mem}, |
| | 25811 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 25812 | .each = .{ .once = &.{ |
| | 25813 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25814 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25815 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25816 | .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 25817 | .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 25818 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 25819 | .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, |
| | 25820 | .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, |
| | 25821 | .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ }, |
| | 25822 | .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, |
| | 25823 | .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, |
| | 25824 | .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, |
| | 25825 | .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, |
| | 25826 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| | 25827 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 25828 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| | 25829 | .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, |
| | 25830 | .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, |
| | 25831 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25832 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25833 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25834 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| | 25835 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 25836 | .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, |
| | 25837 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, |
| | 25838 | } }, |
| | 25839 | }, .{ |
| | 25840 | .required_features = .{ .@"64bit", .avx, null, null }, |
| | 25841 | .src_constraints = .{ |
| | 25842 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25843 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25844 | .any, |
| | 25845 | }, |
| | 25846 | .patterns = &.{ |
| | 25847 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25848 | }, |
| | 25849 | .call_frame = .{ .alignment = .@"16" }, |
| | 25850 | .extra_temps = .{ |
| | 25851 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25852 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25853 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 25854 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 25855 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 25856 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| | 25857 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 25858 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 25859 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| | 25860 | }, |
| | 25861 | .dst_temps = .{.mem}, |
| | 25862 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 25863 | .each = .{ .once = &.{ |
| | 25864 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25865 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25866 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25867 | .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 25868 | .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 25869 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 25870 | .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, |
| | 25871 | .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, |
| | 25872 | .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ }, |
| | 25873 | .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, |
| | 25874 | .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, |
| | 25875 | .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, |
| | 25876 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| | 25877 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| | 25878 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 25879 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| | 25880 | .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, |
| | 25881 | .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, |
| | 25882 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25883 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25884 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25885 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| | 25886 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 25887 | .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, |
| | 25888 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, |
| | 25889 | } }, |
| | 25890 | }, .{ |
| | 25891 | .required_features = .{ .@"64bit", .sse2, .slow_incdec, null }, |
| | 25892 | .src_constraints = .{ |
| | 25893 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25894 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25895 | .any, |
| | 25896 | }, |
| | 25897 | .patterns = &.{ |
| | 25898 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25899 | }, |
| | 25900 | .call_frame = .{ .alignment = .@"16" }, |
| | 25901 | .extra_temps = .{ |
| | 25902 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25903 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25904 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 25905 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 25906 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 25907 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| | 25908 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 25909 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 25910 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| | 25911 | }, |
| | 25912 | .dst_temps = .{.mem}, |
| | 25913 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 25914 | .each = .{ .once = &.{ |
| | 25915 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25916 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25917 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25918 | .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 25919 | .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 25920 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 25921 | .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, |
| | 25922 | .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, |
| | 25923 | .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ }, |
| | 25924 | .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, |
| | 25925 | .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, |
| | 25926 | .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, |
| | 25927 | .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, |
| | 25928 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| | 25929 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 25930 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| | 25931 | .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, |
| | 25932 | .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, |
| | 25933 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25934 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25935 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25936 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| | 25937 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 25938 | .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, |
| | 25939 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, |
| | 25940 | } }, |
| | 25941 | }, .{ |
| | 25942 | .required_features = .{ .@"64bit", .sse2, null, null }, |
| | 25943 | .src_constraints = .{ |
| | 25944 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25945 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25946 | .any, |
| | 25947 | }, |
| | 25948 | .patterns = &.{ |
| | 25949 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 25950 | }, |
| | 25951 | .call_frame = .{ .alignment = .@"16" }, |
| | 25952 | .extra_temps = .{ |
| | 25953 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 25954 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 25955 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 25956 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 25957 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 25958 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| | 25959 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 25960 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 25961 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| | 25962 | }, |
| | 25963 | .dst_temps = .{.mem}, |
| | 25964 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 25965 | .each = .{ .once = &.{ |
| | 25966 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 25967 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 25968 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25969 | .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 25970 | .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 25971 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 25972 | .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, |
| | 25973 | .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, |
| | 25974 | .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ }, |
| | 25975 | .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, |
| | 25976 | .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, |
| | 25977 | .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, |
| | 25978 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| | 25979 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| | 25980 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 25981 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| | 25982 | .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, |
| | 25983 | .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, |
| | 25984 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 25985 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 25986 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 25987 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| | 25988 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 25989 | .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, |
| | 25990 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, |
| | 25991 | } }, |
| | 25992 | }, .{ |
| | 25993 | .required_features = .{ .@"64bit", .sse, .slow_incdec, null }, |
| | 25994 | .src_constraints = .{ |
| | 25995 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25996 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 25997 | .any, |
| | 25998 | }, |
| | 25999 | .patterns = &.{ |
| | 26000 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 26001 | }, |
| | 26002 | .call_frame = .{ .alignment = .@"16" }, |
| | 26003 | .extra_temps = .{ |
| | 26004 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 26005 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 26006 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 26007 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 26008 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 26009 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| | 26010 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 26011 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 26012 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| | 26013 | }, |
| | 26014 | .dst_temps = .{.mem}, |
| | 26015 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 26016 | .each = .{ .once = &.{ |
| | 26017 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 26018 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 26019 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 26020 | .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 26021 | .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 26022 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 26023 | .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, |
| | 26024 | .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, |
| | 26025 | .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ }, |
| | 26026 | .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, |
| | 26027 | .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, |
| | 26028 | .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, |
| | 26029 | .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, |
| | 26030 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| | 26031 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 26032 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| | 26033 | .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, |
| | 26034 | .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, |
| | 26035 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 26036 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 26037 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 26038 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| | 26039 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 26040 | .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, |
| | 26041 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, |
| | 26042 | } }, |
| | 26043 | }, .{ |
| | 26044 | .required_features = .{ .@"64bit", .sse, null, null }, |
| | 26045 | .src_constraints = .{ |
| | 26046 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 26047 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 26048 | .any, |
| | 26049 | }, |
| | 26050 | .patterns = &.{ |
| | 26051 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 26052 | }, |
| | 26053 | .call_frame = .{ .alignment = .@"16" }, |
| | 26054 | .extra_temps = .{ |
| | 26055 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 26056 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 26057 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 26058 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 26059 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| | 26060 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| | 26061 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 26062 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| | 26063 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| | 26064 | }, |
| | 26065 | .dst_temps = .{.mem}, |
| | 26066 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 26067 | .each = .{ .once = &.{ |
| | 26068 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 26069 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 26070 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 26071 | .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 26072 | .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| | 26073 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| | 26074 | .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, |
| | 26075 | .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, |
| | 26076 | .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ }, |
| | 26077 | .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, |
| | 26078 | .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, |
| | 26079 | .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, |
| | 26080 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| | 26081 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| | 26082 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| | 26083 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| | 26084 | .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, |
| | 26085 | .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, |
| | 26086 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 26087 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 26088 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 26089 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| | 26090 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| | 26091 | .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, |
| | 26092 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, |
| | 26093 | } }, |
| | 26094 | } }, |
| | 26095 | }); |
| | 26096 | }, |
| 15053 | .eq, .neq => |cmp_op| cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) { | 26097 | .eq, .neq => |cmp_op| cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) { |
| 15054 | else => unreachable, | 26098 | else => unreachable, |
| 15055 | .eq => .e, | 26099 | .eq => .e, |
| ... | @@ -15058,11 +26102,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15058,11 +26102,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15058 | else => unreachable, | 26102 | else => unreachable, |
| 15059 | inline .e, .ne => |cc| comptime &.{ .{ | 26103 | inline .e, .ne => |cc| comptime &.{ .{ |
| 15060 | .required_features = .{ .avx2, null, null, null }, | 26104 | .required_features = .{ .avx2, null, null, null }, |
| 15061 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, | 26105 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, |
| 15062 | .patterns = &.{ | 26106 | .patterns = &.{ |
| 15063 | .{ .src = .{ .to_ymm, .mem } }, | 26107 | .{ .src = .{ .to_ymm, .mem, .none } }, |
| 15064 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, | 26108 | .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, |
| 15065 | .{ .src = .{ .to_ymm, .to_ymm } }, | 26109 | .{ .src = .{ .to_ymm, .to_ymm, .none } }, |
| 15066 | }, | 26110 | }, |
| 15067 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 26111 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 15068 | .kind = .all, | 26112 | .kind = .all, |
| ... | @@ -15078,11 +26122,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15078,11 +26122,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15078 | } }, | 26122 | } }, |
| 15079 | }, .{ | 26123 | }, .{ |
| 15080 | .required_features = .{ .avx2, null, null, null }, | 26124 | .required_features = .{ .avx2, null, null, null }, |
| 15081 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, | 26125 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, |
| 15082 | .patterns = &.{ | 26126 | .patterns = &.{ |
| 15083 | .{ .src = .{ .to_ymm, .mem } }, | 26127 | .{ .src = .{ .to_ymm, .mem, .none } }, |
| 15084 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, | 26128 | .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, |
| 15085 | .{ .src = .{ .to_ymm, .to_ymm } }, | 26129 | .{ .src = .{ .to_ymm, .to_ymm, .none } }, |
| 15086 | }, | 26130 | }, |
| 15087 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 26131 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 15088 | .kind = .all, | 26132 | .kind = .all, |
| ... | @@ -15098,11 +26142,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15098,11 +26142,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15098 | } }, | 26142 | } }, |
| 15099 | }, .{ | 26143 | }, .{ |
| 15100 | .required_features = .{ .avx2, null, null, null }, | 26144 | .required_features = .{ .avx2, null, null, null }, |
| 15101 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, | 26145 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, |
| 15102 | .patterns = &.{ | 26146 | .patterns = &.{ |
| 15103 | .{ .src = .{ .to_ymm, .mem } }, | 26147 | .{ .src = .{ .to_ymm, .mem, .none } }, |
| 15104 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, | 26148 | .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, |
| 15105 | .{ .src = .{ .to_ymm, .to_ymm } }, | 26149 | .{ .src = .{ .to_ymm, .to_ymm, .none } }, |
| 15106 | }, | 26150 | }, |
| 15107 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 26151 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 15108 | .kind = .all, | 26152 | .kind = .all, |
| ... | @@ -15118,11 +26162,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15118,11 +26162,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15118 | } }, | 26162 | } }, |
| 15119 | }, .{ | 26163 | }, .{ |
| 15120 | .required_features = .{ .avx2, null, null, null }, | 26164 | .required_features = .{ .avx2, null, null, null }, |
| 15121 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, | 26165 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, |
| 15122 | .patterns = &.{ | 26166 | .patterns = &.{ |
| 15123 | .{ .src = .{ .to_ymm, .mem } }, | 26167 | .{ .src = .{ .to_ymm, .mem, .none } }, |
| 15124 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, | 26168 | .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, |
| 15125 | .{ .src = .{ .to_ymm, .to_ymm } }, | 26169 | .{ .src = .{ .to_ymm, .to_ymm, .none } }, |
| 15126 | }, | 26170 | }, |
| 15127 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 26171 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 15128 | .kind = .all, | 26172 | .kind = .all, |
| ... | @@ -15138,11 +26182,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15138,11 +26182,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15138 | } }, | 26182 | } }, |
| 15139 | }, .{ | 26183 | }, .{ |
| 15140 | .required_features = .{ .avx, null, null, null }, | 26184 | .required_features = .{ .avx, null, null, null }, |
| 15141 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, | 26185 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, |
| 15142 | .patterns = &.{ | 26186 | .patterns = &.{ |
| 15143 | .{ .src = .{ .to_xmm, .mem } }, | 26187 | .{ .src = .{ .to_xmm, .mem, .none } }, |
| 15144 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, | 26188 | .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, |
| 15145 | .{ .src = .{ .to_xmm, .to_xmm } }, | 26189 | .{ .src = .{ .to_xmm, .to_xmm, .none } }, |
| 15146 | }, | 26190 | }, |
| 15147 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 26191 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 15148 | .kind = .all, | 26192 | .kind = .all, |
| ... | @@ -15158,11 +26202,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15158,11 +26202,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15158 | } }, | 26202 | } }, |
| 15159 | }, .{ | 26203 | }, .{ |
| 15160 | .required_features = .{ .avx, null, null, null }, | 26204 | .required_features = .{ .avx, null, null, null }, |
| 15161 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, | 26205 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, |
| 15162 | .patterns = &.{ | 26206 | .patterns = &.{ |
| 15163 | .{ .src = .{ .to_xmm, .mem } }, | 26207 | .{ .src = .{ .to_xmm, .mem, .none } }, |
| 15164 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, | 26208 | .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, |
| 15165 | .{ .src = .{ .to_xmm, .to_xmm } }, | 26209 | .{ .src = .{ .to_xmm, .to_xmm, .none } }, |
| 15166 | }, | 26210 | }, |
| 15167 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 26211 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 15168 | .kind = .all, | 26212 | .kind = .all, |
| ... | @@ -15178,11 +26222,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15178,11 +26222,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15178 | } }, | 26222 | } }, |
| 15179 | }, .{ | 26223 | }, .{ |
| 15180 | .required_features = .{ .avx, null, null, null }, | 26224 | .required_features = .{ .avx, null, null, null }, |
| 15181 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, | 26225 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, |
| 15182 | .patterns = &.{ | 26226 | .patterns = &.{ |
| 15183 | .{ .src = .{ .to_xmm, .mem } }, | 26227 | .{ .src = .{ .to_xmm, .mem, .none } }, |
| 15184 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, | 26228 | .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, |
| 15185 | .{ .src = .{ .to_xmm, .to_xmm } }, | 26229 | .{ .src = .{ .to_xmm, .to_xmm, .none } }, |
| 15186 | }, | 26230 | }, |
| 15187 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 26231 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 15188 | .kind = .all, | 26232 | .kind = .all, |
| ... | @@ -15198,11 +26242,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15198,11 +26242,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15198 | } }, | 26242 | } }, |
| 15199 | }, .{ | 26243 | }, .{ |
| 15200 | .required_features = .{ .avx, null, null, null }, | 26244 | .required_features = .{ .avx, null, null, null }, |
| 15201 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, | 26245 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, |
| 15202 | .patterns = &.{ | 26246 | .patterns = &.{ |
| 15203 | .{ .src = .{ .to_xmm, .mem } }, | 26247 | .{ .src = .{ .to_xmm, .mem, .none } }, |
| 15204 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, | 26248 | .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, |
| 15205 | .{ .src = .{ .to_xmm, .to_xmm } }, | 26249 | .{ .src = .{ .to_xmm, .to_xmm, .none } }, |
| 15206 | }, | 26250 | }, |
| 15207 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 26251 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 15208 | .kind = .all, | 26252 | .kind = .all, |
| ... | @@ -15218,11 +26262,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15218,11 +26262,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15218 | } }, | 26262 | } }, |
| 15219 | }, .{ | 26263 | }, .{ |
| 15220 | .required_features = .{ .sse2, null, null, null }, | 26264 | .required_features = .{ .sse2, null, null, null }, |
| 15221 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, | 26265 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, |
| 15222 | .patterns = &.{ | 26266 | .patterns = &.{ |
| 15223 | .{ .src = .{ .to_mut_xmm, .mem } }, | 26267 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, |
| 15224 | .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, | 26268 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, |
| 15225 | .{ .src = .{ .to_mut_xmm, .to_xmm } }, | 26269 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, |
| 15226 | }, | 26270 | }, |
| 15227 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ | 26271 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 15228 | .kind = .all, | 26272 | .kind = .all, |
| ... | @@ -15238,11 +26282,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15238,11 +26282,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15238 | } }, | 26282 | } }, |
| 15239 | }, .{ | 26283 | }, .{ |
| 15240 | .required_features = .{ .sse2, null, null, null }, | 26284 | .required_features = .{ .sse2, null, null, null }, |
| 15241 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, | 26285 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, |
| 15242 | .patterns = &.{ | 26286 | .patterns = &.{ |
| 15243 | .{ .src = .{ .to_mut_xmm, .mem } }, | 26287 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, |
| 15244 | .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, | 26288 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, |
| 15245 | .{ .src = .{ .to_mut_xmm, .to_xmm } }, | 26289 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, |
| 15246 | }, | 26290 | }, |
| 15247 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ | 26291 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 15248 | .kind = .all, | 26292 | .kind = .all, |
| ... | @@ -15258,11 +26302,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15258,11 +26302,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15258 | } }, | 26302 | } }, |
| 15259 | }, .{ | 26303 | }, .{ |
| 15260 | .required_features = .{ .sse2, null, null, null }, | 26304 | .required_features = .{ .sse2, null, null, null }, |
| 15261 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, | 26305 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, |
| 15262 | .patterns = &.{ | 26306 | .patterns = &.{ |
| 15263 | .{ .src = .{ .to_mut_xmm, .mem } }, | 26307 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, |
| 15264 | .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, | 26308 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, |
| 15265 | .{ .src = .{ .to_mut_xmm, .to_xmm } }, | 26309 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, |
| 15266 | }, | 26310 | }, |
| 15267 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ | 26311 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 15268 | .kind = .all, | 26312 | .kind = .all, |
| ... | @@ -15278,11 +26322,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15278,11 +26322,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15278 | } }, | 26322 | } }, |
| 15279 | }, .{ | 26323 | }, .{ |
| 15280 | .required_features = .{ .sse4_1, null, null, null }, | 26324 | .required_features = .{ .sse4_1, null, null, null }, |
| 15281 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, | 26325 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, |
| 15282 | .patterns = &.{ | 26326 | .patterns = &.{ |
| 15283 | .{ .src = .{ .to_mut_xmm, .mem } }, | 26327 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, |
| 15284 | .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, | 26328 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, |
| 15285 | .{ .src = .{ .to_mut_xmm, .to_xmm } }, | 26329 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, |
| 15286 | }, | 26330 | }, |
| 15287 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ | 26331 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 15288 | .kind = .all, | 26332 | .kind = .all, |
| ... | @@ -15298,11 +26342,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15298,11 +26342,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15298 | } }, | 26342 | } }, |
| 15299 | }, .{ | 26343 | }, .{ |
| 15300 | .required_features = .{ .mmx, null, null, null }, | 26344 | .required_features = .{ .mmx, null, null, null }, |
| 15301 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, | 26345 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, |
| 15302 | .patterns = &.{ | 26346 | .patterns = &.{ |
| 15303 | .{ .src = .{ .to_mut_mm, .mem } }, | 26347 | .{ .src = .{ .to_mut_mm, .mem, .none } }, |
| 15304 | .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } }, | 26348 | .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, |
| 15305 | .{ .src = .{ .to_mut_mm, .to_mm } }, | 26349 | .{ .src = .{ .to_mut_mm, .to_mm, .none } }, |
| 15306 | }, | 26350 | }, |
| 15307 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ | 26351 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 15308 | .kind = .all, | 26352 | .kind = .all, |
| ... | @@ -15318,11 +26362,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15318,11 +26362,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15318 | } }, | 26362 | } }, |
| 15319 | }, .{ | 26363 | }, .{ |
| 15320 | .required_features = .{ .mmx, null, null, null }, | 26364 | .required_features = .{ .mmx, null, null, null }, |
| 15321 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, | 26365 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, |
| 15322 | .patterns = &.{ | 26366 | .patterns = &.{ |
| 15323 | .{ .src = .{ .to_mut_mm, .mem } }, | 26367 | .{ .src = .{ .to_mut_mm, .mem, .none } }, |
| 15324 | .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } }, | 26368 | .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, |
| 15325 | .{ .src = .{ .to_mut_mm, .to_mm } }, | 26369 | .{ .src = .{ .to_mut_mm, .to_mm, .none } }, |
| 15326 | }, | 26370 | }, |
| 15327 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ | 26371 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 15328 | .kind = .all, | 26372 | .kind = .all, |
| ... | @@ -15338,11 +26382,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15338,11 +26382,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15338 | } }, | 26382 | } }, |
| 15339 | }, .{ | 26383 | }, .{ |
| 15340 | .required_features = .{ .mmx, null, null, null }, | 26384 | .required_features = .{ .mmx, null, null, null }, |
| 15341 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, | 26385 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, |
| 15342 | .patterns = &.{ | 26386 | .patterns = &.{ |
| 15343 | .{ .src = .{ .to_mut_mm, .mem } }, | 26387 | .{ .src = .{ .to_mut_mm, .mem, .none } }, |
| 15344 | .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } }, | 26388 | .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, |
| 15345 | .{ .src = .{ .to_mut_mm, .to_mm } }, | 26389 | .{ .src = .{ .to_mut_mm, .to_mm, .none } }, |
| 15346 | }, | 26390 | }, |
| 15347 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ | 26391 | .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 15348 | .kind = .all, | 26392 | .kind = .all, |
| ... | @@ -15357,17 +26401,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15357,17 +26401,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15357 | .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ }, | 26401 | .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ }, |
| 15358 | } }, | 26402 | } }, |
| 15359 | }, .{ | 26403 | }, .{ |
| 15360 | .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte } }, | 26404 | .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte }, .any }, |
| 15361 | .patterns = &.{ | 26405 | .patterns = &.{ |
| 15362 | .{ .src = .{ .mut_mem, .imm8 } }, | 26406 | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 15363 | .{ .src = .{ .imm8, .mut_mem }, .commute = .{ 0, 1 } }, | 26407 | .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 15364 | .{ .src = .{ .to_mut_gpr, .imm8 } }, | 26408 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 15365 | .{ .src = .{ .imm8, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 26409 | .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 15366 | .{ .src = .{ .mut_mem, .to_gpr } }, | 26410 | .{ .src = .{ .mut_mem, .to_gpr, .none } }, |
| 15367 | .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, | 26411 | .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 15368 | .{ .src = .{ .to_mut_gpr, .mem } }, | 26412 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15369 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 26413 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 15370 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 26414 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15371 | }, | 26415 | }, |
| 15372 | .dst_temps = .{.{ .ref = .src0 }}, | 26416 | .dst_temps = .{.{ .ref = .src0 }}, |
| 15373 | .clobbers = .{ .eflags = true }, | 26417 | .clobbers = .{ .eflags = true }, |
| ... | @@ -15382,17 +26426,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15382,17 +26426,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15382 | }, | 26426 | }, |
| 15383 | } }, | 26427 | } }, |
| 15384 | }, .{ | 26428 | }, .{ |
| 15385 | .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word } }, | 26429 | .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word }, .any }, |
| 15386 | .patterns = &.{ | 26430 | .patterns = &.{ |
| 15387 | .{ .src = .{ .mut_mem, .imm16 } }, | 26431 | .{ .src = .{ .mut_mem, .imm16, .none } }, |
| 15388 | .{ .src = .{ .imm16, .mut_mem }, .commute = .{ 0, 1 } }, | 26432 | .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 15389 | .{ .src = .{ .to_mut_gpr, .imm16 } }, | 26433 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15390 | .{ .src = .{ .imm16, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 26434 | .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 15391 | .{ .src = .{ .mut_mem, .to_gpr } }, | 26435 | .{ .src = .{ .mut_mem, .to_gpr, .none } }, |
| 15392 | .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, | 26436 | .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 15393 | .{ .src = .{ .to_mut_gpr, .mem } }, | 26437 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15394 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 26438 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 15395 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 26439 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15396 | }, | 26440 | }, |
| 15397 | .dst_temps = .{.{ .ref = .src0 }}, | 26441 | .dst_temps = .{.{ .ref = .src0 }}, |
| 15398 | .clobbers = .{ .eflags = true }, | 26442 | .clobbers = .{ .eflags = true }, |
| ... | @@ -15407,17 +26451,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15407,17 +26451,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15407 | }, | 26451 | }, |
| 15408 | } }, | 26452 | } }, |
| 15409 | }, .{ | 26453 | }, .{ |
| 15410 | .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword } }, | 26454 | .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword }, .any }, |
| 15411 | .patterns = &.{ | 26455 | .patterns = &.{ |
| 15412 | .{ .src = .{ .mut_mem, .imm32 } }, | 26456 | .{ .src = .{ .mut_mem, .imm32, .none } }, |
| 15413 | .{ .src = .{ .imm32, .mut_mem }, .commute = .{ 0, 1 } }, | 26457 | .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 15414 | .{ .src = .{ .to_mut_gpr, .imm32 } }, | 26458 | .{ .src = .{ .to_mut_gpr, .imm32, .none } }, |
| 15415 | .{ .src = .{ .imm32, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 26459 | .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 15416 | .{ .src = .{ .mut_mem, .to_gpr } }, | 26460 | .{ .src = .{ .mut_mem, .to_gpr, .none } }, |
| 15417 | .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, | 26461 | .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 15418 | .{ .src = .{ .to_mut_gpr, .mem } }, | 26462 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15419 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 26463 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 15420 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 26464 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15421 | }, | 26465 | }, |
| 15422 | .dst_temps = .{.{ .ref = .src0 }}, | 26466 | .dst_temps = .{.{ .ref = .src0 }}, |
| 15423 | .clobbers = .{ .eflags = true }, | 26467 | .clobbers = .{ .eflags = true }, |
| ... | @@ -15433,17 +26477,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15433,17 +26477,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15433 | } }, | 26477 | } }, |
| 15434 | }, .{ | 26478 | }, .{ |
| 15435 | .required_features = .{ .@"64bit", null, null, null }, | 26479 | .required_features = .{ .@"64bit", null, null, null }, |
| 15436 | .src_constraints = .{ .{ .bool_vec = .qword }, .{ .bool_vec = .qword } }, | 26480 | .src_constraints = .{ .{ .bool_vec = .qword }, .{ .bool_vec = .qword }, .any }, |
| 15437 | .patterns = &.{ | 26481 | .patterns = &.{ |
| 15438 | .{ .src = .{ .mut_mem, .simm32 } }, | 26482 | .{ .src = .{ .mut_mem, .simm32, .none } }, |
| 15439 | .{ .src = .{ .simm32, .mut_mem }, .commute = .{ 0, 1 } }, | 26483 | .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 15440 | .{ .src = .{ .to_mut_gpr, .simm32 } }, | 26484 | .{ .src = .{ .to_mut_gpr, .simm32, .none } }, |
| 15441 | .{ .src = .{ .simm32, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 26485 | .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 15442 | .{ .src = .{ .mut_mem, .to_gpr } }, | 26486 | .{ .src = .{ .mut_mem, .to_gpr, .none } }, |
| 15443 | .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, | 26487 | .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, |
| 15444 | .{ .src = .{ .to_mut_gpr, .mem } }, | 26488 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15445 | .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, | 26489 | .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, |
| 15446 | .{ .src = .{ .to_mut_gpr, .to_gpr } }, | 26490 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15447 | }, | 26491 | }, |
| 15448 | .dst_temps = .{.{ .ref = .src0 }}, | 26492 | .dst_temps = .{.{ .ref = .src0 }}, |
| 15449 | .clobbers = .{ .eflags = true }, | 26493 | .clobbers = .{ .eflags = true }, |
| ... | @@ -15458,9 +26502,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15458,9 +26502,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15458 | }, | 26502 | }, |
| 15459 | } }, | 26503 | } }, |
| 15460 | }, .{ | 26504 | }, .{ |
| 15461 | .src_constraints = .{ .any_bool_vec, .any_bool_vec }, | 26505 | .src_constraints = .{ .any_bool_vec, .any_bool_vec, .any }, |
| 15462 | .patterns = &.{ | 26506 | .patterns = &.{ |
| 15463 | .{ .src = .{ .to_mem, .to_mem } }, | 26507 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 15464 | }, | 26508 | }, |
| 15465 | .extra_temps = .{ | 26509 | .extra_temps = .{ |
| 15466 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 26510 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -15497,9 +26541,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15497,9 +26541,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15497 | } }, | 26541 | } }, |
| 15498 | }, .{ | 26542 | }, .{ |
| 15499 | .required_features = .{ .avx2, null, null, null }, | 26543 | .required_features = .{ .avx2, null, null, null }, |
| 15500 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, | 26544 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, |
| 15501 | .patterns = &.{ | 26545 | .patterns = &.{ |
| 15502 | .{ .src = .{ .to_mem, .to_mem } }, | 26546 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 15503 | }, | 26547 | }, |
| 15504 | .extra_temps = .{ | 26548 | .extra_temps = .{ |
| 15505 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 26549 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -15542,9 +26586,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15542,9 +26586,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15542 | } }, | 26586 | } }, |
| 15543 | }, .{ | 26587 | }, .{ |
| 15544 | .required_features = .{ .avx2, null, null, null }, | 26588 | .required_features = .{ .avx2, null, null, null }, |
| 15545 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, | 26589 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, |
| 15546 | .patterns = &.{ | 26590 | .patterns = &.{ |
| 15547 | .{ .src = .{ .to_mem, .to_mem } }, | 26591 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 15548 | }, | 26592 | }, |
| 15549 | .extra_temps = .{ | 26593 | .extra_temps = .{ |
| 15550 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 26594 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -15589,9 +26633,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15589,9 +26633,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15589 | } }, | 26633 | } }, |
| 15590 | }, .{ | 26634 | }, .{ |
| 15591 | .required_features = .{ .avx2, null, null, null }, | 26635 | .required_features = .{ .avx2, null, null, null }, |
| 15592 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, | 26636 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, |
| 15593 | .patterns = &.{ | 26637 | .patterns = &.{ |
| 15594 | .{ .src = .{ .to_mem, .to_mem } }, | 26638 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 15595 | }, | 26639 | }, |
| 15596 | .extra_temps = .{ | 26640 | .extra_temps = .{ |
| 15597 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 26641 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -15634,9 +26678,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15634,9 +26678,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15634 | } }, | 26678 | } }, |
| 15635 | }, .{ | 26679 | }, .{ |
| 15636 | .required_features = .{ .avx2, null, null, null }, | 26680 | .required_features = .{ .avx2, null, null, null }, |
| 15637 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, | 26681 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, |
| 15638 | .patterns = &.{ | 26682 | .patterns = &.{ |
| 15639 | .{ .src = .{ .to_mem, .to_mem } }, | 26683 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 15640 | }, | 26684 | }, |
| 15641 | .extra_temps = .{ | 26685 | .extra_temps = .{ |
| 15642 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 26686 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -15703,9 +26747,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15703,9 +26747,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15703 | } }, | 26747 | } }, |
| 15704 | }, .{ | 26748 | }, .{ |
| 15705 | .required_features = .{ .avx, null, null, null }, | 26749 | .required_features = .{ .avx, null, null, null }, |
| 15706 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, | 26750 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, |
| 15707 | .patterns = &.{ | 26751 | .patterns = &.{ |
| 15708 | .{ .src = .{ .to_mem, .to_mem } }, | 26752 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 15709 | }, | 26753 | }, |
| 15710 | .extra_temps = .{ | 26754 | .extra_temps = .{ |
| 15711 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 26755 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -15748,9 +26792,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15748,9 +26792,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15748 | } }, | 26792 | } }, |
| 15749 | }, .{ | 26793 | }, .{ |
| 15750 | .required_features = .{ .avx, null, null, null }, | 26794 | .required_features = .{ .avx, null, null, null }, |
| 15751 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, | 26795 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, |
| 15752 | .patterns = &.{ | 26796 | .patterns = &.{ |
| 15753 | .{ .src = .{ .to_mem, .to_mem } }, | 26797 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 15754 | }, | 26798 | }, |
| 15755 | .extra_temps = .{ | 26799 | .extra_temps = .{ |
| 15756 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 26800 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -15795,9 +26839,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15795,9 +26839,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15795 | } }, | 26839 | } }, |
| 15796 | }, .{ | 26840 | }, .{ |
| 15797 | .required_features = .{ .avx, null, null, null }, | 26841 | .required_features = .{ .avx, null, null, null }, |
| 15798 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, | 26842 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, |
| 15799 | .patterns = &.{ | 26843 | .patterns = &.{ |
| 15800 | .{ .src = .{ .to_mem, .to_mem } }, | 26844 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 15801 | }, | 26845 | }, |
| 15802 | .extra_temps = .{ | 26846 | .extra_temps = .{ |
| 15803 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 26847 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -15864,9 +26908,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15864,9 +26908,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15864 | } }, | 26908 | } }, |
| 15865 | }, .{ | 26909 | }, .{ |
| 15866 | .required_features = .{ .avx, null, null, null }, | 26910 | .required_features = .{ .avx, null, null, null }, |
| 15867 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, | 26911 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, |
| 15868 | .patterns = &.{ | 26912 | .patterns = &.{ |
| 15869 | .{ .src = .{ .to_mem, .to_mem } }, | 26913 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 15870 | }, | 26914 | }, |
| 15871 | .extra_temps = .{ | 26915 | .extra_temps = .{ |
| 15872 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 26916 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -15933,9 +26977,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15933,9 +26977,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15933 | } }, | 26977 | } }, |
| 15934 | }, .{ | 26978 | }, .{ |
| 15935 | .required_features = .{ .sse2, null, null, null }, | 26979 | .required_features = .{ .sse2, null, null, null }, |
| 15936 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, | 26980 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, |
| 15937 | .patterns = &.{ | 26981 | .patterns = &.{ |
| 15938 | .{ .src = .{ .to_mem, .to_mem } }, | 26982 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 15939 | }, | 26983 | }, |
| 15940 | .extra_temps = .{ | 26984 | .extra_temps = .{ |
| 15941 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 26985 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -15978,9 +27022,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -15978,9 +27022,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15978 | } }, | 27022 | } }, |
| 15979 | }, .{ | 27023 | }, .{ |
| 15980 | .required_features = .{ .sse2, null, null, null }, | 27024 | .required_features = .{ .sse2, null, null, null }, |
| 15981 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, | 27025 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, |
| 15982 | .patterns = &.{ | 27026 | .patterns = &.{ |
| 15983 | .{ .src = .{ .to_mem, .to_mem } }, | 27027 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 15984 | }, | 27028 | }, |
| 15985 | .extra_temps = .{ | 27029 | .extra_temps = .{ |
| 15986 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27030 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16025,9 +27069,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16025,9 +27069,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16025 | } }, | 27069 | } }, |
| 16026 | }, .{ | 27070 | }, .{ |
| 16027 | .required_features = .{ .sse2, null, null, null }, | 27071 | .required_features = .{ .sse2, null, null, null }, |
| 16028 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, | 27072 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, |
| 16029 | .patterns = &.{ | 27073 | .patterns = &.{ |
| 16030 | .{ .src = .{ .to_mem, .to_mem } }, | 27074 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16031 | }, | 27075 | }, |
| 16032 | .extra_temps = .{ | 27076 | .extra_temps = .{ |
| 16033 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27077 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16094,9 +27138,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16094,9 +27138,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16094 | } }, | 27138 | } }, |
| 16095 | }, .{ | 27139 | }, .{ |
| 16096 | .required_features = .{ .sse4_1, null, null, null }, | 27140 | .required_features = .{ .sse4_1, null, null, null }, |
| 16097 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, | 27141 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, |
| 16098 | .patterns = &.{ | 27142 | .patterns = &.{ |
| 16099 | .{ .src = .{ .to_mem, .to_mem } }, | 27143 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16100 | }, | 27144 | }, |
| 16101 | .extra_temps = .{ | 27145 | .extra_temps = .{ |
| 16102 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27146 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16163,9 +27207,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16163,9 +27207,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16163 | } }, | 27207 | } }, |
| 16164 | }, .{ | 27208 | }, .{ |
| 16165 | .required_features = .{ .sse, .mmx, null, null }, | 27209 | .required_features = .{ .sse, .mmx, null, null }, |
| 16166 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, | 27210 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, |
| 16167 | .patterns = &.{ | 27211 | .patterns = &.{ |
| 16168 | .{ .src = .{ .to_mem, .to_mem } }, | 27212 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16169 | }, | 27213 | }, |
| 16170 | .extra_temps = .{ | 27214 | .extra_temps = .{ |
| 16171 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27215 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16208,9 +27252,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16208,9 +27252,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16208 | } }, | 27252 | } }, |
| 16209 | }, .{ | 27253 | }, .{ |
| 16210 | .required_features = .{ .sse, .mmx, null, null }, | 27254 | .required_features = .{ .sse, .mmx, null, null }, |
| 16211 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, | 27255 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, |
| 16212 | .patterns = &.{ | 27256 | .patterns = &.{ |
| 16213 | .{ .src = .{ .to_mem, .to_mem } }, | 27257 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16214 | }, | 27258 | }, |
| 16215 | .extra_temps = .{ | 27259 | .extra_temps = .{ |
| 16216 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27260 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16281,9 +27325,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16281,9 +27325,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16281 | } }, | 27325 | } }, |
| 16282 | }, .{ | 27326 | }, .{ |
| 16283 | .required_features = .{ .sse, .mmx, null, null }, | 27327 | .required_features = .{ .sse, .mmx, null, null }, |
| 16284 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, | 27328 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, |
| 16285 | .patterns = &.{ | 27329 | .patterns = &.{ |
| 16286 | .{ .src = .{ .to_mem, .to_mem } }, | 27330 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16287 | }, | 27331 | }, |
| 16288 | .extra_temps = .{ | 27332 | .extra_temps = .{ |
| 16289 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27333 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16355,10 +27399,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16355,10 +27399,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16355 | }, | 27399 | }, |
| 16356 | } }, | 27400 | } }, |
| 16357 | }, .{ | 27401 | }, .{ |
| 16358 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, | 27402 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, |
| 16359 | .dst_constraints = .{.{ .bool_vec = .byte }}, | 27403 | .dst_constraints = .{.{ .bool_vec = .byte }}, |
| 16360 | .patterns = &.{ | 27404 | .patterns = &.{ |
| 16361 | .{ .src = .{ .to_mem, .to_mem } }, | 27405 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16362 | }, | 27406 | }, |
| 16363 | .extra_temps = .{ | 27407 | .extra_temps = .{ |
| 16364 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27408 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16387,10 +27431,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16387,10 +27431,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16387 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 27431 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 16388 | } }, | 27432 | } }, |
| 16389 | }, .{ | 27433 | }, .{ |
| 16390 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, | 27434 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, |
| 16391 | .dst_constraints = .{.{ .bool_vec = .byte }}, | 27435 | .dst_constraints = .{.{ .bool_vec = .byte }}, |
| 16392 | .patterns = &.{ | 27436 | .patterns = &.{ |
| 16393 | .{ .src = .{ .to_mem, .to_mem } }, | 27437 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16394 | }, | 27438 | }, |
| 16395 | .extra_temps = .{ | 27439 | .extra_temps = .{ |
| 16396 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27440 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16419,10 +27463,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16419,10 +27463,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16419 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 27463 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 16420 | } }, | 27464 | } }, |
| 16421 | }, .{ | 27465 | }, .{ |
| 16422 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, | 27466 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, |
| 16423 | .dst_constraints = .{.{ .bool_vec = .byte }}, | 27467 | .dst_constraints = .{.{ .bool_vec = .byte }}, |
| 16424 | .patterns = &.{ | 27468 | .patterns = &.{ |
| 16425 | .{ .src = .{ .to_mem, .to_mem } }, | 27469 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16426 | }, | 27470 | }, |
| 16427 | .extra_temps = .{ | 27471 | .extra_temps = .{ |
| 16428 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27472 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16452,10 +27496,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16452,10 +27496,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16452 | } }, | 27496 | } }, |
| 16453 | }, .{ | 27497 | }, .{ |
| 16454 | .required_features = .{ .@"64bit", null, null, null }, | 27498 | .required_features = .{ .@"64bit", null, null, null }, |
| 16455 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, | 27499 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, |
| 16456 | .dst_constraints = .{.{ .bool_vec = .byte }}, | 27500 | .dst_constraints = .{.{ .bool_vec = .byte }}, |
| 16457 | .patterns = &.{ | 27501 | .patterns = &.{ |
| 16458 | .{ .src = .{ .to_mem, .to_mem } }, | 27502 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16459 | }, | 27503 | }, |
| 16460 | .extra_temps = .{ | 27504 | .extra_temps = .{ |
| 16461 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27505 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16484,10 +27528,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16484,10 +27528,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16484 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 27528 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 16485 | } }, | 27529 | } }, |
| 16486 | }, .{ | 27530 | }, .{ |
| 16487 | .src_constraints = .{ .any_scalar_int, .any_scalar_int }, | 27531 | .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any }, |
| 16488 | .dst_constraints = .{.{ .bool_vec = .byte }}, | 27532 | .dst_constraints = .{.{ .bool_vec = .byte }}, |
| 16489 | .patterns = &.{ | 27533 | .patterns = &.{ |
| 16490 | .{ .src = .{ .to_mem, .to_mem } }, | 27534 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16491 | }, | 27535 | }, |
| 16492 | .extra_temps = .{ | 27536 | .extra_temps = .{ |
| 16493 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 27537 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16523,10 +27567,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16523,10 +27567,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16523 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, | 27567 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 16524 | } }, | 27568 | } }, |
| 16525 | }, .{ | 27569 | }, .{ |
| 16526 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, | 27570 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, |
| 16527 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 27571 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 16528 | .patterns = &.{ | 27572 | .patterns = &.{ |
| 16529 | .{ .src = .{ .to_mem, .to_mem } }, | 27573 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16530 | }, | 27574 | }, |
| 16531 | .extra_temps = .{ | 27575 | .extra_temps = .{ |
| 16532 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27576 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16556,10 +27600,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16556,10 +27600,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16556 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 27600 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 16557 | } }, | 27601 | } }, |
| 16558 | }, .{ | 27602 | }, .{ |
| 16559 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, | 27603 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, |
| 16560 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 27604 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 16561 | .patterns = &.{ | 27605 | .patterns = &.{ |
| 16562 | .{ .src = .{ .to_mem, .to_mem } }, | 27606 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16563 | }, | 27607 | }, |
| 16564 | .extra_temps = .{ | 27608 | .extra_temps = .{ |
| 16565 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27609 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16589,10 +27633,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16589,10 +27633,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16589 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 27633 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 16590 | } }, | 27634 | } }, |
| 16591 | }, .{ | 27635 | }, .{ |
| 16592 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, | 27636 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, |
| 16593 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 27637 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 16594 | .patterns = &.{ | 27638 | .patterns = &.{ |
| 16595 | .{ .src = .{ .to_mem, .to_mem } }, | 27639 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16596 | }, | 27640 | }, |
| 16597 | .extra_temps = .{ | 27641 | .extra_temps = .{ |
| 16598 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27642 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16623,10 +27667,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16623,10 +27667,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16623 | } }, | 27667 | } }, |
| 16624 | }, .{ | 27668 | }, .{ |
| 16625 | .required_features = .{ .@"64bit", null, null, null }, | 27669 | .required_features = .{ .@"64bit", null, null, null }, |
| 16626 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, | 27670 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, |
| 16627 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 27671 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 16628 | .patterns = &.{ | 27672 | .patterns = &.{ |
| 16629 | .{ .src = .{ .to_mem, .to_mem } }, | 27673 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16630 | }, | 27674 | }, |
| 16631 | .extra_temps = .{ | 27675 | .extra_temps = .{ |
| 16632 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27676 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16656,10 +27700,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16656,10 +27700,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16656 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 27700 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 16657 | } }, | 27701 | } }, |
| 16658 | }, .{ | 27702 | }, .{ |
| 16659 | .src_constraints = .{ .any_scalar_int, .any_scalar_int }, | 27703 | .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any }, |
| 16660 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 27704 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 16661 | .patterns = &.{ | 27705 | .patterns = &.{ |
| 16662 | .{ .src = .{ .to_mem, .to_mem } }, | 27706 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16663 | }, | 27707 | }, |
| 16664 | .extra_temps = .{ | 27708 | .extra_temps = .{ |
| 16665 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 27709 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16697,10 +27741,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16697,10 +27741,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16697 | } }, | 27741 | } }, |
| 16698 | }, .{ | 27742 | }, .{ |
| 16699 | .required_features = .{ .@"64bit", null, null, null }, | 27743 | .required_features = .{ .@"64bit", null, null, null }, |
| 16700 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, | 27744 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, |
| 16701 | .dst_constraints = .{.{ .bool_vec = .qword }}, | 27745 | .dst_constraints = .{.{ .bool_vec = .qword }}, |
| 16702 | .patterns = &.{ | 27746 | .patterns = &.{ |
| 16703 | .{ .src = .{ .to_mem, .to_mem } }, | 27747 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16704 | }, | 27748 | }, |
| 16705 | .extra_temps = .{ | 27749 | .extra_temps = .{ |
| 16706 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27750 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16731,10 +27775,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16731,10 +27775,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16731 | } }, | 27775 | } }, |
| 16732 | }, .{ | 27776 | }, .{ |
| 16733 | .required_features = .{ .@"64bit", null, null, null }, | 27777 | .required_features = .{ .@"64bit", null, null, null }, |
| 16734 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, | 27778 | .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, |
| 16735 | .dst_constraints = .{.{ .bool_vec = .qword }}, | 27779 | .dst_constraints = .{.{ .bool_vec = .qword }}, |
| 16736 | .patterns = &.{ | 27780 | .patterns = &.{ |
| 16737 | .{ .src = .{ .to_mem, .to_mem } }, | 27781 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16738 | }, | 27782 | }, |
| 16739 | .extra_temps = .{ | 27783 | .extra_temps = .{ |
| 16740 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27784 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16764,10 +27808,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16764,10 +27808,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16764 | } }, | 27808 | } }, |
| 16765 | }, .{ | 27809 | }, .{ |
| 16766 | .required_features = .{ .@"64bit", null, null, null }, | 27810 | .required_features = .{ .@"64bit", null, null, null }, |
| 16767 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, | 27811 | .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, |
| 16768 | .dst_constraints = .{.{ .bool_vec = .qword }}, | 27812 | .dst_constraints = .{.{ .bool_vec = .qword }}, |
| 16769 | .patterns = &.{ | 27813 | .patterns = &.{ |
| 16770 | .{ .src = .{ .to_mem, .to_mem } }, | 27814 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16771 | }, | 27815 | }, |
| 16772 | .extra_temps = .{ | 27816 | .extra_temps = .{ |
| 16773 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27817 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16798,10 +27842,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16798,10 +27842,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16798 | } }, | 27842 | } }, |
| 16799 | }, .{ | 27843 | }, .{ |
| 16800 | .required_features = .{ .@"64bit", null, null, null }, | 27844 | .required_features = .{ .@"64bit", null, null, null }, |
| 16801 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, | 27845 | .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, |
| 16802 | .dst_constraints = .{.{ .bool_vec = .qword }}, | 27846 | .dst_constraints = .{.{ .bool_vec = .qword }}, |
| 16803 | .patterns = &.{ | 27847 | .patterns = &.{ |
| 16804 | .{ .src = .{ .to_mem, .to_mem } }, | 27848 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16805 | }, | 27849 | }, |
| 16806 | .extra_temps = .{ | 27850 | .extra_temps = .{ |
| 16807 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27851 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16832,10 +27876,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16832,10 +27876,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16832 | } }, | 27876 | } }, |
| 16833 | }, .{ | 27877 | }, .{ |
| 16834 | .required_features = .{ .@"64bit", null, null, null }, | 27878 | .required_features = .{ .@"64bit", null, null, null }, |
| 16835 | .src_constraints = .{ .any_scalar_int, .any_scalar_int }, | 27879 | .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any }, |
| 16836 | .dst_constraints = .{.{ .bool_vec = .qword }}, | 27880 | .dst_constraints = .{.{ .bool_vec = .qword }}, |
| 16837 | .patterns = &.{ | 27881 | .patterns = &.{ |
| 16838 | .{ .src = .{ .to_mem, .to_mem } }, | 27882 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16839 | }, | 27883 | }, |
| 16840 | .extra_temps = .{ | 27884 | .extra_temps = .{ |
| 16841 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 27885 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16872,9 +27916,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16872,9 +27916,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16872 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, | 27916 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 16873 | } }, | 27917 | } }, |
| 16874 | }, .{ | 27918 | }, .{ |
| 16875 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, | 27919 | .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, |
| 16876 | .patterns = &.{ | 27920 | .patterns = &.{ |
| 16877 | .{ .src = .{ .to_mem, .to_mem } }, | 27921 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16878 | }, | 27922 | }, |
| 16879 | .extra_temps = .{ | 27923 | .extra_temps = .{ |
| 16880 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 27924 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -16918,9 +27962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16918,9 +27962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16918 | .src_constraints = .{ | 27962 | .src_constraints = .{ |
| 16919 | .{ .scalar_float = .{ .of = .word, .is = .word } }, | 27963 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 16920 | .{ .scalar_float = .{ .of = .word, .is = .word } }, | 27964 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 27965 | .any, |
| 16921 | }, | 27966 | }, |
| 16922 | .patterns = &.{ | 27967 | .patterns = &.{ |
| 16923 | .{ .src = .{ .to_sse, .to_sse } }, | 27968 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 16924 | }, | 27969 | }, |
| 16925 | .extra_temps = .{ | 27970 | .extra_temps = .{ |
| 16926 | .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, | 27971 | .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| ... | @@ -16941,7 +27986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16941,7 +27986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16941 | .each = .{ .once = &.{ | 27986 | .each = .{ .once = &.{ |
| 16942 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 27987 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 16943 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, | 27988 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| 16944 | .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0x, .vp(switch (cc) { | 27989 | .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0d, .vp(switch (cc) { |
| 16945 | else => unreachable, | 27990 | else => unreachable, |
| 16946 | .e => .eq, | 27991 | .e => .eq, |
| 16947 | .ne => .neq, | 27992 | .ne => .neq, |
| ... | @@ -16952,12 +27997,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16952,12 +27997,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16952 | .src_constraints = .{ | 27997 | .src_constraints = .{ |
| 16953 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, | 27998 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| 16954 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, | 27999 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 28000 | .any, |
| 16955 | }, | 28001 | }, |
| 16956 | .patterns = &.{ | 28002 | .patterns = &.{ |
| 16957 | .{ .src = .{ .mem, .mem } }, | 28003 | .{ .src = .{ .mem, .mem, .none } }, |
| 16958 | .{ .src = .{ .sse, .mem } }, | 28004 | .{ .src = .{ .sse, .mem, .none } }, |
| 16959 | .{ .src = .{ .mem, .sse } }, | 28005 | .{ .src = .{ .mem, .sse, .none } }, |
| 16960 | .{ .src = .{ .to_sse, .to_sse } }, | 28006 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 16961 | }, | 28007 | }, |
| 16962 | .extra_temps = .{ | 28008 | .extra_temps = .{ |
| 16963 | .{ .kind = .{ .rc = .sse } }, | 28009 | .{ .kind = .{ .rc = .sse } }, |
| ... | @@ -16989,12 +28035,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -16989,12 +28035,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16989 | .src_constraints = .{ | 28035 | .src_constraints = .{ |
| 16990 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, | 28036 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| 16991 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, | 28037 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 28038 | .any, |
| 16992 | }, | 28039 | }, |
| 16993 | .patterns = &.{ | 28040 | .patterns = &.{ |
| 16994 | .{ .src = .{ .mem, .mem } }, | 28041 | .{ .src = .{ .mem, .mem, .none } }, |
| 16995 | .{ .src = .{ .to_sse, .mem } }, | 28042 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 16996 | .{ .src = .{ .mem, .to_sse } }, | 28043 | .{ .src = .{ .mem, .to_sse, .none } }, |
| 16997 | .{ .src = .{ .to_sse, .to_sse } }, | 28044 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 16998 | }, | 28045 | }, |
| 16999 | .extra_temps = .{ | 28046 | .extra_temps = .{ |
| 17000 | .{ .kind = .{ .rc = .sse } }, | 28047 | .{ .kind = .{ .rc = .sse } }, |
| ... | @@ -17026,11 +28073,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17026,11 +28073,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17026 | .src_constraints = .{ | 28073 | .src_constraints = .{ |
| 17027 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 28074 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 17028 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 28075 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 28076 | .any, |
| 17029 | }, | 28077 | }, |
| 17030 | .patterns = &.{ | 28078 | .patterns = &.{ |
| 17031 | .{ .src = .{ .to_sse, .mem } }, | 28079 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 17032 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 28080 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 17033 | .{ .src = .{ .to_sse, .to_sse } }, | 28081 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 17034 | }, | 28082 | }, |
| 17035 | .dst_temps = .{.{ .mut_rc_mask = .{ | 28083 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 17036 | .ref = .src0, | 28084 | .ref = .src0, |
| ... | @@ -17038,7 +28086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17038,7 +28086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17038 | .info = .{ .kind = .all, .scalar = .dword }, | 28086 | .info = .{ .kind = .all, .scalar = .dword }, |
| 17039 | } }}, | 28087 | } }}, |
| 17040 | .each = .{ .once = &.{ | 28088 | .each = .{ .once = &.{ |
| 17041 | .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { | 28089 | .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) { |
| 17042 | else => unreachable, | 28090 | else => unreachable, |
| 17043 | .e => .eq, | 28091 | .e => .eq, |
| 17044 | .ne => .neq, | 28092 | .ne => .neq, |
| ... | @@ -17049,18 +28097,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17049,18 +28097,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17049 | .src_constraints = .{ | 28097 | .src_constraints = .{ |
| 17050 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 28098 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 17051 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, | 28099 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 28100 | .any, |
| 17052 | }, | 28101 | }, |
| 17053 | .patterns = &.{ | 28102 | .patterns = &.{ |
| 17054 | .{ .src = .{ .to_mut_sse, .mem } }, | 28103 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 17055 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 28104 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 17056 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 28105 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 17057 | }, | 28106 | }, |
| 17058 | .dst_temps = .{.{ .ref_mask = .{ | 28107 | .dst_temps = .{.{ .ref_mask = .{ |
| 17059 | .ref = .src0, | 28108 | .ref = .src0, |
| 17060 | .info = .{ .kind = .all, .scalar = .dword }, | 28109 | .info = .{ .kind = .all, .scalar = .dword }, |
| 17061 | } }}, | 28110 | } }}, |
| 17062 | .each = .{ .once = &.{ | 28111 | .each = .{ .once = &.{ |
| 17063 | .{ ._, ._ss, .cmp, .dst0x, .src1x, .vp(switch (cc) { | 28112 | .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) { |
| 17064 | else => unreachable, | 28113 | else => unreachable, |
| 17065 | .e => .eq, | 28114 | .e => .eq, |
| 17066 | .ne => .neq, | 28115 | .ne => .neq, |
| ... | @@ -17071,11 +28120,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17071,11 +28120,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17071 | .src_constraints = .{ | 28120 | .src_constraints = .{ |
| 17072 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 28121 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 17073 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 28122 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 28123 | .any, |
| 17074 | }, | 28124 | }, |
| 17075 | .patterns = &.{ | 28125 | .patterns = &.{ |
| 17076 | .{ .src = .{ .to_sse, .mem } }, | 28126 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 17077 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 28127 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 17078 | .{ .src = .{ .to_sse, .to_sse } }, | 28128 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 17079 | }, | 28129 | }, |
| 17080 | .dst_temps = .{.{ .mut_rc_mask = .{ | 28130 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 17081 | .ref = .src0, | 28131 | .ref = .src0, |
| ... | @@ -17094,18 +28144,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17094,18 +28144,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17094 | .src_constraints = .{ | 28144 | .src_constraints = .{ |
| 17095 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 28145 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 17096 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, | 28146 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 28147 | .any, |
| 17097 | }, | 28148 | }, |
| 17098 | .patterns = &.{ | 28149 | .patterns = &.{ |
| 17099 | .{ .src = .{ .to_mut_sse, .mem } }, | 28150 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 17100 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 28151 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 17101 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 28152 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 17102 | }, | 28153 | }, |
| 17103 | .dst_temps = .{.{ .ref_mask = .{ | 28154 | .dst_temps = .{.{ .ref_mask = .{ |
| 17104 | .ref = .src0, | 28155 | .ref = .src0, |
| 17105 | .info = .{ .kind = .all, .scalar = .dword }, | 28156 | .info = .{ .kind = .all, .scalar = .dword }, |
| 17106 | } }}, | 28157 | } }}, |
| 17107 | .each = .{ .once = &.{ | 28158 | .each = .{ .once = &.{ |
| 17108 | .{ ._, ._ps, .cmp, .dst0x, .src1x, .vp(switch (cc) { | 28159 | .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) { |
| 17109 | else => unreachable, | 28160 | else => unreachable, |
| 17110 | .e => .eq, | 28161 | .e => .eq, |
| 17111 | .ne => .neq, | 28162 | .ne => .neq, |
| ... | @@ -17116,11 +28167,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17116,11 +28167,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17116 | .src_constraints = .{ | 28167 | .src_constraints = .{ |
| 17117 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, | 28168 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 17118 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, | 28169 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 28170 | .any, |
| 17119 | }, | 28171 | }, |
| 17120 | .patterns = &.{ | 28172 | .patterns = &.{ |
| 17121 | .{ .src = .{ .to_sse, .mem } }, | 28173 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 17122 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 28174 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 17123 | .{ .src = .{ .to_sse, .to_sse } }, | 28175 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 17124 | }, | 28176 | }, |
| 17125 | .dst_temps = .{.{ .mut_rc_mask = .{ | 28177 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 17126 | .ref = .src0, | 28178 | .ref = .src0, |
| ... | @@ -17139,11 +28191,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17139,11 +28191,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17139 | .src_constraints = .{ | 28191 | .src_constraints = .{ |
| 17140 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | 28192 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 17141 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | 28193 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 28194 | .any, |
| 17142 | }, | 28195 | }, |
| 17143 | .patterns = &.{ | 28196 | .patterns = &.{ |
| 17144 | .{ .src = .{ .to_sse, .mem } }, | 28197 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 17145 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 28198 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 17146 | .{ .src = .{ .to_sse, .to_sse } }, | 28199 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 17147 | }, | 28200 | }, |
| 17148 | .dst_temps = .{.{ .mut_rc_mask = .{ | 28201 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 17149 | .ref = .src0, | 28202 | .ref = .src0, |
| ... | @@ -17151,7 +28204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17151,7 +28204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17151 | .info = .{ .kind = .all, .scalar = .qword }, | 28204 | .info = .{ .kind = .all, .scalar = .qword }, |
| 17152 | } }}, | 28205 | } }}, |
| 17153 | .each = .{ .once = &.{ | 28206 | .each = .{ .once = &.{ |
| 17154 | .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { | 28207 | .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) { |
| 17155 | else => unreachable, | 28208 | else => unreachable, |
| 17156 | .e => .eq, | 28209 | .e => .eq, |
| 17157 | .ne => .neq, | 28210 | .ne => .neq, |
| ... | @@ -17162,18 +28215,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17162,18 +28215,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17162 | .src_constraints = .{ | 28215 | .src_constraints = .{ |
| 17163 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | 28216 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 17164 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, | 28217 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 28218 | .any, |
| 17165 | }, | 28219 | }, |
| 17166 | .patterns = &.{ | 28220 | .patterns = &.{ |
| 17167 | .{ .src = .{ .to_mut_sse, .mem } }, | 28221 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 17168 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 28222 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 17169 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 28223 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 17170 | }, | 28224 | }, |
| 17171 | .dst_temps = .{.{ .ref_mask = .{ | 28225 | .dst_temps = .{.{ .ref_mask = .{ |
| 17172 | .ref = .src0, | 28226 | .ref = .src0, |
| 17173 | .info = .{ .kind = .all, .scalar = .qword }, | 28227 | .info = .{ .kind = .all, .scalar = .qword }, |
| 17174 | } }}, | 28228 | } }}, |
| 17175 | .each = .{ .once = &.{ | 28229 | .each = .{ .once = &.{ |
| 17176 | .{ ._, ._sd, .cmp, .dst0x, .src1x, .vp(switch (cc) { | 28230 | .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) { |
| 17177 | else => unreachable, | 28231 | else => unreachable, |
| 17178 | .e => .eq, | 28232 | .e => .eq, |
| 17179 | .ne => .neq, | 28233 | .ne => .neq, |
| ... | @@ -17184,11 +28238,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17184,11 +28238,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17184 | .src_constraints = .{ | 28238 | .src_constraints = .{ |
| 17185 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | 28239 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 17186 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | 28240 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 28241 | .any, |
| 17187 | }, | 28242 | }, |
| 17188 | .patterns = &.{ | 28243 | .patterns = &.{ |
| 17189 | .{ .src = .{ .to_sse, .mem } }, | 28244 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 17190 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 28245 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 17191 | .{ .src = .{ .to_sse, .to_sse } }, | 28246 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 17192 | }, | 28247 | }, |
| 17193 | .dst_temps = .{.{ .mut_rc_mask = .{ | 28248 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 17194 | .ref = .src0, | 28249 | .ref = .src0, |
| ... | @@ -17207,18 +28262,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17207,18 +28262,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17207 | .src_constraints = .{ | 28262 | .src_constraints = .{ |
| 17208 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | 28263 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 17209 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, | 28264 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 28265 | .any, |
| 17210 | }, | 28266 | }, |
| 17211 | .patterns = &.{ | 28267 | .patterns = &.{ |
| 17212 | .{ .src = .{ .to_mut_sse, .mem } }, | 28268 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 17213 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, | 28269 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 17214 | .{ .src = .{ .to_mut_sse, .to_sse } }, | 28270 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 17215 | }, | 28271 | }, |
| 17216 | .dst_temps = .{.{ .ref_mask = .{ | 28272 | .dst_temps = .{.{ .ref_mask = .{ |
| 17217 | .ref = .src0, | 28273 | .ref = .src0, |
| 17218 | .info = .{ .kind = .all, .scalar = .qword }, | 28274 | .info = .{ .kind = .all, .scalar = .qword }, |
| 17219 | } }}, | 28275 | } }}, |
| 17220 | .each = .{ .once = &.{ | 28276 | .each = .{ .once = &.{ |
| 17221 | .{ ._, ._pd, .cmp, .dst0x, .src1x, .vp(switch (cc) { | 28277 | .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) { |
| 17222 | else => unreachable, | 28278 | else => unreachable, |
| 17223 | .e => .eq, | 28279 | .e => .eq, |
| 17224 | .ne => .neq, | 28280 | .ne => .neq, |
| ... | @@ -17229,11 +28285,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17229,11 +28285,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17229 | .src_constraints = .{ | 28285 | .src_constraints = .{ |
| 17230 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, | 28286 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| 17231 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, | 28287 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 28288 | .any, |
| 17232 | }, | 28289 | }, |
| 17233 | .patterns = &.{ | 28290 | .patterns = &.{ |
| 17234 | .{ .src = .{ .to_sse, .mem } }, | 28291 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 17235 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 28292 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 17236 | .{ .src = .{ .to_sse, .to_sse } }, | 28293 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 17237 | }, | 28294 | }, |
| 17238 | .dst_temps = .{.{ .mut_rc_mask = .{ | 28295 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 17239 | .ref = .src0, | 28296 | .ref = .src0, |
| ... | @@ -17252,15 +28309,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17252,15 +28309,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17252 | .src_constraints = .{ | 28309 | .src_constraints = .{ |
| 17253 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, | 28310 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| 17254 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, | 28311 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 28312 | .any, |
| 17255 | }, | 28313 | }, |
| 17256 | .patterns = &.{ | 28314 | .patterns = &.{ |
| 17257 | .{ .src = .{ .to_mem, .to_mem } }, | 28315 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17258 | }, | 28316 | }, |
| 17259 | .extra_temps = .{ | 28317 | .extra_temps = .{ |
| 17260 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 28318 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 17261 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 28319 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 17262 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, | 28320 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 17263 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, | 28321 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 17264 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 28322 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 17265 | .unused, | 28323 | .unused, |
| 17266 | .unused, | 28324 | .unused, |
| ... | @@ -17290,15 +28348,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17290,15 +28348,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17290 | .src_constraints = .{ | 28348 | .src_constraints = .{ |
| 17291 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, | 28349 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| 17292 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, | 28350 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 28351 | .any, |
| 17293 | }, | 28352 | }, |
| 17294 | .patterns = &.{ | 28353 | .patterns = &.{ |
| 17295 | .{ .src = .{ .to_mem, .to_mem } }, | 28354 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17296 | }, | 28355 | }, |
| 17297 | .extra_temps = .{ | 28356 | .extra_temps = .{ |
| 17298 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 28357 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 17299 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 28358 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 17300 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, | 28359 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 17301 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, | 28360 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 17302 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 28361 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 17303 | .unused, | 28362 | .unused, |
| 17304 | .unused, | 28363 | .unused, |
| ... | @@ -17328,21 +28387,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17328,21 +28387,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17328 | .src_constraints = .{ | 28387 | .src_constraints = .{ |
| 17329 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28388 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 17330 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28389 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 28390 | .any, |
| 17331 | }, | 28391 | }, |
| 17332 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 28392 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 17333 | .patterns = &.{ | 28393 | .patterns = &.{ |
| 17334 | .{ .src = .{ .to_mem, .to_mem } }, | 28394 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17335 | }, | 28395 | }, |
| 17336 | .call_frame = .{ .alignment = .@"16" }, | 28396 | .call_frame = .{ .alignment = .@"16" }, |
| 17337 | .extra_temps = .{ | 28397 | .extra_temps = .{ |
| 17338 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 28398 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 17339 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 28399 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 17340 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 28400 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 17341 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 28401 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| 17342 | else => unreachable, | | |
| 17343 | .e => "__eqhf2", | | |
| 17344 | .ne => "__nehf2", | | |
| 17345 | } } } }, | | |
| 17346 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 28402 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 17347 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 28403 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 17348 | .{ .type = .u32, .kind = .{ .reg = .edx } }, | 28404 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| ... | @@ -17373,21 +28429,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17373,21 +28429,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17373 | .src_constraints = .{ | 28429 | .src_constraints = .{ |
| 17374 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28430 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 17375 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28431 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 28432 | .any, |
| 17376 | }, | 28433 | }, |
| 17377 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 28434 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 17378 | .patterns = &.{ | 28435 | .patterns = &.{ |
| 17379 | .{ .src = .{ .to_mem, .to_mem } }, | 28436 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17380 | }, | 28437 | }, |
| 17381 | .call_frame = .{ .alignment = .@"16" }, | 28438 | .call_frame = .{ .alignment = .@"16" }, |
| 17382 | .extra_temps = .{ | 28439 | .extra_temps = .{ |
| 17383 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 28440 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 17384 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 28441 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 17385 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 28442 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 17386 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 28443 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| 17387 | else => unreachable, | | |
| 17388 | .e => "__eqhf2", | | |
| 17389 | .ne => "__nehf2", | | |
| 17390 | } } } }, | | |
| 17391 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 28444 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 17392 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 28445 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 17393 | .{ .type = .u32, .kind = .{ .reg = .edx } }, | 28446 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| ... | @@ -17418,21 +28471,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17418,21 +28471,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17418 | .src_constraints = .{ | 28471 | .src_constraints = .{ |
| 17419 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28472 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 17420 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28473 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 28474 | .any, |
| 17421 | }, | 28475 | }, |
| 17422 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 28476 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 17423 | .patterns = &.{ | 28477 | .patterns = &.{ |
| 17424 | .{ .src = .{ .to_mem, .to_mem } }, | 28478 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17425 | }, | 28479 | }, |
| 17426 | .call_frame = .{ .alignment = .@"16" }, | 28480 | .call_frame = .{ .alignment = .@"16" }, |
| 17427 | .extra_temps = .{ | 28481 | .extra_temps = .{ |
| 17428 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 28482 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 17429 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 28483 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 17430 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 28484 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 17431 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 28485 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| 17432 | else => unreachable, | | |
| 17433 | .e => "__eqhf2", | | |
| 17434 | .ne => "__nehf2", | | |
| 17435 | } } } }, | | |
| 17436 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 28486 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 17437 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 28487 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 17438 | .{ .type = .u32, .kind = .{ .reg = .edx } }, | 28488 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| ... | @@ -17464,21 +28514,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17464,21 +28514,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17464 | .src_constraints = .{ | 28514 | .src_constraints = .{ |
| 17465 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28515 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 17466 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28516 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 28517 | .any, |
| 17467 | }, | 28518 | }, |
| 17468 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 28519 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 17469 | .patterns = &.{ | 28520 | .patterns = &.{ |
| 17470 | .{ .src = .{ .to_mem, .to_mem } }, | 28521 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17471 | }, | 28522 | }, |
| 17472 | .call_frame = .{ .alignment = .@"16" }, | 28523 | .call_frame = .{ .alignment = .@"16" }, |
| 17473 | .extra_temps = .{ | 28524 | .extra_temps = .{ |
| 17474 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 28525 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 17475 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 28526 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 17476 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 28527 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 17477 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 28528 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| 17478 | else => unreachable, | | |
| 17479 | .e => "__eqhf2", | | |
| 17480 | .ne => "__nehf2", | | |
| 17481 | } } } }, | | |
| 17482 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 28529 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 17483 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 28530 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 17484 | .{ .type = .u32, .kind = .{ .reg = .edx } }, | 28531 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| ... | @@ -17510,21 +28557,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17510,21 +28557,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17510 | .src_constraints = .{ | 28557 | .src_constraints = .{ |
| 17511 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28558 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 17512 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28559 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 28560 | .any, |
| 17513 | }, | 28561 | }, |
| 17514 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 28562 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 17515 | .patterns = &.{ | 28563 | .patterns = &.{ |
| 17516 | .{ .src = .{ .to_mem, .to_mem } }, | 28564 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17517 | }, | 28565 | }, |
| 17518 | .call_frame = .{ .alignment = .@"16" }, | 28566 | .call_frame = .{ .alignment = .@"16" }, |
| 17519 | .extra_temps = .{ | 28567 | .extra_temps = .{ |
| 17520 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 28568 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 17521 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 28569 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 17522 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 28570 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 17523 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 28571 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| 17524 | else => unreachable, | | |
| 17525 | .e => "__eqhf2", | | |
| 17526 | .ne => "__nehf2", | | |
| 17527 | } } } }, | | |
| 17528 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 28572 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 17529 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 28573 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 17530 | .{ .type = .u32, .kind = .{ .reg = .edx } }, | 28574 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| ... | @@ -17558,21 +28602,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17558,21 +28602,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17558 | .src_constraints = .{ | 28602 | .src_constraints = .{ |
| 17559 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28603 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 17560 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28604 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 28605 | .any, |
| 17561 | }, | 28606 | }, |
| 17562 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 28607 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 17563 | .patterns = &.{ | 28608 | .patterns = &.{ |
| 17564 | .{ .src = .{ .to_mem, .to_mem } }, | 28609 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17565 | }, | 28610 | }, |
| 17566 | .call_frame = .{ .alignment = .@"16" }, | 28611 | .call_frame = .{ .alignment = .@"16" }, |
| 17567 | .extra_temps = .{ | 28612 | .extra_temps = .{ |
| 17568 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 28613 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 17569 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 28614 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 17570 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 28615 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 17571 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 28616 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| 17572 | else => unreachable, | | |
| 17573 | .e => "__eqhf2", | | |
| 17574 | .ne => "__nehf2", | | |
| 17575 | } } } }, | | |
| 17576 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 28617 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 17577 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 28618 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 17578 | .{ .type = .u32, .kind = .{ .reg = .edx } }, | 28619 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| ... | @@ -17606,9 +28647,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17606,9 +28647,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17606 | .src_constraints = .{ | 28647 | .src_constraints = .{ |
| 17607 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28648 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 17608 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28649 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 28650 | .any, |
| 17609 | }, | 28651 | }, |
| 17610 | .patterns = &.{ | 28652 | .patterns = &.{ |
| 17611 | .{ .src = .{ .to_mem, .to_mem } }, | 28653 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17612 | }, | 28654 | }, |
| 17613 | .call_frame = .{ .alignment = .@"16" }, | 28655 | .call_frame = .{ .alignment = .@"16" }, |
| 17614 | .extra_temps = .{ | 28656 | .extra_temps = .{ |
| ... | @@ -17616,11 +28658,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17616,11 +28658,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17616 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 28658 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 17617 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 28659 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 17618 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 28660 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 17619 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 28661 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| 17620 | else => unreachable, | | |
| 17621 | .e => "__eqhf2", | | |
| 17622 | .ne => "__nehf2", | | |
| 17623 | } } } }, | | |
| 17624 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 28662 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 17625 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 28663 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 17626 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, | 28664 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| ... | @@ -17660,9 +28698,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17660,9 +28698,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17660 | .src_constraints = .{ | 28698 | .src_constraints = .{ |
| 17661 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28699 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 17662 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28700 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 28701 | .any, |
| 17663 | }, | 28702 | }, |
| 17664 | .patterns = &.{ | 28703 | .patterns = &.{ |
| 17665 | .{ .src = .{ .to_mem, .to_mem } }, | 28704 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17666 | }, | 28705 | }, |
| 17667 | .call_frame = .{ .alignment = .@"16" }, | 28706 | .call_frame = .{ .alignment = .@"16" }, |
| 17668 | .extra_temps = .{ | 28707 | .extra_temps = .{ |
| ... | @@ -17670,11 +28709,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17670,11 +28709,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17670 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 28709 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 17671 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 28710 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 17672 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 28711 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 17673 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 28712 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| 17674 | else => unreachable, | | |
| 17675 | .e => "__eqhf2", | | |
| 17676 | .ne => "__nehf2", | | |
| 17677 | } } } }, | | |
| 17678 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 28713 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 17679 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 28714 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 17680 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, | 28715 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| ... | @@ -17714,9 +28749,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17714,9 +28749,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17714 | .src_constraints = .{ | 28749 | .src_constraints = .{ |
| 17715 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28750 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 17716 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28751 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 28752 | .any, |
| 17717 | }, | 28753 | }, |
| 17718 | .patterns = &.{ | 28754 | .patterns = &.{ |
| 17719 | .{ .src = .{ .to_mem, .to_mem } }, | 28755 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17720 | }, | 28756 | }, |
| 17721 | .call_frame = .{ .alignment = .@"16" }, | 28757 | .call_frame = .{ .alignment = .@"16" }, |
| 17722 | .extra_temps = .{ | 28758 | .extra_temps = .{ |
| ... | @@ -17724,11 +28760,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17724,11 +28760,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17724 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 28760 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 17725 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 28761 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 17726 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 28762 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 17727 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 28763 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| 17728 | else => unreachable, | | |
| 17729 | .e => "__eqhf2", | | |
| 17730 | .ne => "__nehf2", | | |
| 17731 | } } } }, | | |
| 17732 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 28764 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 17733 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 28765 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 17734 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, | 28766 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| ... | @@ -17769,9 +28801,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17769,9 +28801,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17769 | .src_constraints = .{ | 28801 | .src_constraints = .{ |
| 17770 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28802 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 17771 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28803 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 28804 | .any, |
| 17772 | }, | 28805 | }, |
| 17773 | .patterns = &.{ | 28806 | .patterns = &.{ |
| 17774 | .{ .src = .{ .to_mem, .to_mem } }, | 28807 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17775 | }, | 28808 | }, |
| 17776 | .call_frame = .{ .alignment = .@"16" }, | 28809 | .call_frame = .{ .alignment = .@"16" }, |
| 17777 | .extra_temps = .{ | 28810 | .extra_temps = .{ |
| ... | @@ -17779,11 +28812,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17779,11 +28812,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17779 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 28812 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 17780 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 28813 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 17781 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 28814 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 17782 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 28815 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| 17783 | else => unreachable, | | |
| 17784 | .e => "__eqhf2", | | |
| 17785 | .ne => "__nehf2", | | |
| 17786 | } } } }, | | |
| 17787 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 28816 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 17788 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 28817 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 17789 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, | 28818 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| ... | @@ -17824,9 +28853,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17824,9 +28853,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17824 | .src_constraints = .{ | 28853 | .src_constraints = .{ |
| 17825 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28854 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 17826 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28855 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 28856 | .any, |
| 17827 | }, | 28857 | }, |
| 17828 | .patterns = &.{ | 28858 | .patterns = &.{ |
| 17829 | .{ .src = .{ .to_mem, .to_mem } }, | 28859 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17830 | }, | 28860 | }, |
| 17831 | .call_frame = .{ .alignment = .@"16" }, | 28861 | .call_frame = .{ .alignment = .@"16" }, |
| 17832 | .extra_temps = .{ | 28862 | .extra_temps = .{ |
| ... | @@ -17834,11 +28864,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17834,11 +28864,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17834 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 28864 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 17835 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 28865 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 17836 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 28866 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 17837 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 28867 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| 17838 | else => unreachable, | | |
| 17839 | .e => "__eqhf2", | | |
| 17840 | .ne => "__nehf2", | | |
| 17841 | } } } }, | | |
| 17842 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 28868 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 17843 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 28869 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 17844 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, | 28870 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| ... | @@ -17881,9 +28907,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17881,9 +28907,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17881 | .src_constraints = .{ | 28907 | .src_constraints = .{ |
| 17882 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28908 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 17883 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, | 28909 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 28910 | .any, |
| 17884 | }, | 28911 | }, |
| 17885 | .patterns = &.{ | 28912 | .patterns = &.{ |
| 17886 | .{ .src = .{ .to_mem, .to_mem } }, | 28913 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17887 | }, | 28914 | }, |
| 17888 | .call_frame = .{ .alignment = .@"16" }, | 28915 | .call_frame = .{ .alignment = .@"16" }, |
| 17889 | .extra_temps = .{ | 28916 | .extra_temps = .{ |
| ... | @@ -17891,11 +28918,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17891,11 +28918,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17891 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 28918 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 17892 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 28919 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 17893 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 28920 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 17894 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 28921 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, |
| 17895 | else => unreachable, | | |
| 17896 | .e => "__eqhf2", | | |
| 17897 | .ne => "__nehf2", | | |
| 17898 | } } } }, | | |
| 17899 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 28922 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 17900 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 28923 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 17901 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, | 28924 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| ... | @@ -17938,9 +28961,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17938,9 +28961,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17938 | .src_constraints = .{ | 28961 | .src_constraints = .{ |
| 17939 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, | 28962 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 17940 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, | 28963 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 28964 | .any, |
| 17941 | }, | 28965 | }, |
| 17942 | .patterns = &.{ | 28966 | .patterns = &.{ |
| 17943 | .{ .src = .{ .to_mem, .to_mem } }, | 28967 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17944 | }, | 28968 | }, |
| 17945 | .extra_temps = .{ | 28969 | .extra_temps = .{ |
| 17946 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 28970 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -17975,9 +28999,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -17975,9 +28999,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 17975 | .src_constraints = .{ | 28999 | .src_constraints = .{ |
| 17976 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, | 29000 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 17977 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, | 29001 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 29002 | .any, |
| 17978 | }, | 29003 | }, |
| 17979 | .patterns = &.{ | 29004 | .patterns = &.{ |
| 17980 | .{ .src = .{ .to_mem, .to_mem } }, | 29005 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 17981 | }, | 29006 | }, |
| 17982 | .extra_temps = .{ | 29007 | .extra_temps = .{ |
| 17983 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29008 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18012,9 +29037,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18012,9 +29037,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18012 | .src_constraints = .{ | 29037 | .src_constraints = .{ |
| 18013 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, | 29038 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 18014 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, | 29039 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 29040 | .any, |
| 18015 | }, | 29041 | }, |
| 18016 | .patterns = &.{ | 29042 | .patterns = &.{ |
| 18017 | .{ .src = .{ .to_mem, .to_mem } }, | 29043 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18018 | }, | 29044 | }, |
| 18019 | .extra_temps = .{ | 29045 | .extra_temps = .{ |
| 18020 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29046 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18034,12 +29060,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18034,12 +29060,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18034 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 29060 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 18035 | .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 29061 | .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 18036 | .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ }, | 29062 | .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ }, |
| 18037 | .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) { | 29063 | .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { |
| 18038 | else => unreachable, | 29064 | else => unreachable, |
| 18039 | .e => .eq, | 29065 | .e => .eq, |
| 18040 | .ne => .neq, | 29066 | .ne => .neq, |
| 18041 | }), ._ }, | 29067 | }), ._ }, |
| 18042 | .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .vp(switch (cc) { | 29068 | .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) { |
| 18043 | else => unreachable, | 29069 | else => unreachable, |
| 18044 | .e => .eq, | 29070 | .e => .eq, |
| 18045 | .ne => .neq, | 29071 | .ne => .neq, |
| ... | @@ -18057,9 +29083,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18057,9 +29083,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18057 | .src_constraints = .{ | 29083 | .src_constraints = .{ |
| 18058 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, | 29084 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 18059 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, | 29085 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 29086 | .any, |
| 18060 | }, | 29087 | }, |
| 18061 | .patterns = &.{ | 29088 | .patterns = &.{ |
| 18062 | .{ .src = .{ .to_mem, .to_mem } }, | 29089 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18063 | }, | 29090 | }, |
| 18064 | .extra_temps = .{ | 29091 | .extra_temps = .{ |
| 18065 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29092 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18078,14 +29105,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18078,14 +29105,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18078 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 29105 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 18079 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 29106 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 18080 | .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 29107 | .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 18081 | .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) { | 29108 | .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { |
| 18082 | else => unreachable, | 29109 | else => unreachable, |
| 18083 | .e => .eq, | 29110 | .e => .eq, |
| 18084 | .ne => .neq, | 29111 | .ne => .neq, |
| 18085 | }), ._ }, | 29112 | }), ._ }, |
| 18086 | .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ }, | 29113 | .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ }, |
| 18087 | .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ }, | 29114 | .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ }, |
| 18088 | .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .vp(switch (cc) { | 29115 | .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) { |
| 18089 | else => unreachable, | 29116 | else => unreachable, |
| 18090 | .e => .eq, | 29117 | .e => .eq, |
| 18091 | .ne => .neq, | 29118 | .ne => .neq, |
| ... | @@ -18103,9 +29130,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18103,9 +29130,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18103 | .src_constraints = .{ | 29130 | .src_constraints = .{ |
| 18104 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, | 29131 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| 18105 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, | 29132 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 29133 | .any, |
| 18106 | }, | 29134 | }, |
| 18107 | .patterns = &.{ | 29135 | .patterns = &.{ |
| 18108 | .{ .src = .{ .to_mem, .to_mem } }, | 29136 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18109 | }, | 29137 | }, |
| 18110 | .extra_temps = .{ | 29138 | .extra_temps = .{ |
| 18111 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29139 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18125,7 +29153,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18125,7 +29153,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18125 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 29153 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 18126 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, | 29154 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 18127 | .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ }, | 29155 | .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ }, |
| 18128 | .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .vp(switch (cc) { | 29156 | .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .sp(switch (cc) { |
| 18129 | else => unreachable, | 29157 | else => unreachable, |
| 18130 | .e => .eq, | 29158 | .e => .eq, |
| 18131 | .ne => .neq, | 29159 | .ne => .neq, |
| ... | @@ -18136,7 +29164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18136,7 +29164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18136 | .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, | 29164 | .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, |
| 18137 | .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, | 29165 | .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, |
| 18138 | .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 29166 | .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 18139 | .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) { | 29167 | .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { |
| 18140 | else => unreachable, | 29168 | else => unreachable, |
| 18141 | .e => .eq, | 29169 | .e => .eq, |
| 18142 | .ne => .neq, | 29170 | .ne => .neq, |
| ... | @@ -18151,9 +29179,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18151,9 +29179,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18151 | .src_constraints = .{ | 29179 | .src_constraints = .{ |
| 18152 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, | 29180 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, |
| 18153 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, | 29181 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, |
| | 29182 | .any, |
| 18154 | }, | 29183 | }, |
| 18155 | .patterns = &.{ | 29184 | .patterns = &.{ |
| 18156 | .{ .src = .{ .to_mem, .to_mem } }, | 29185 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18157 | }, | 29186 | }, |
| 18158 | .extra_temps = .{ | 29187 | .extra_temps = .{ |
| 18159 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29188 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18197,9 +29226,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18197,9 +29226,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18197 | .src_constraints = .{ | 29226 | .src_constraints = .{ |
| 18198 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, | 29227 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, |
| 18199 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, | 29228 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, |
| | 29229 | .any, |
| 18200 | }, | 29230 | }, |
| 18201 | .patterns = &.{ | 29231 | .patterns = &.{ |
| 18202 | .{ .src = .{ .to_mem, .to_mem } }, | 29232 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18203 | }, | 29233 | }, |
| 18204 | .extra_temps = .{ | 29234 | .extra_temps = .{ |
| 18205 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29235 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18243,9 +29273,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18243,9 +29273,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18243 | .src_constraints = .{ | 29273 | .src_constraints = .{ |
| 18244 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, | 29274 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| 18245 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, | 29275 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 29276 | .any, |
| 18246 | }, | 29277 | }, |
| 18247 | .patterns = &.{ | 29278 | .patterns = &.{ |
| 18248 | .{ .src = .{ .to_mem, .to_mem } }, | 29279 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18249 | }, | 29280 | }, |
| 18250 | .extra_temps = .{ | 29281 | .extra_temps = .{ |
| 18251 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29282 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18292,9 +29323,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18292,9 +29323,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18292 | .src_constraints = .{ | 29323 | .src_constraints = .{ |
| 18293 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, | 29324 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| 18294 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, | 29325 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 29326 | .any, |
| 18295 | }, | 29327 | }, |
| 18296 | .patterns = &.{ | 29328 | .patterns = &.{ |
| 18297 | .{ .src = .{ .to_mem, .to_mem } }, | 29329 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18298 | }, | 29330 | }, |
| 18299 | .extra_temps = .{ | 29331 | .extra_temps = .{ |
| 18300 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29332 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18314,7 +29346,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18314,7 +29346,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18314 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, | 29346 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 18315 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, | 29347 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 18316 | .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 29348 | .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 18317 | .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) { | 29349 | .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { |
| 18318 | else => unreachable, | 29350 | else => unreachable, |
| 18319 | .e => .eq, | 29351 | .e => .eq, |
| 18320 | .ne => .neq, | 29352 | .ne => .neq, |
| ... | @@ -18341,9 +29373,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18341,9 +29373,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18341 | .src_constraints = .{ | 29373 | .src_constraints = .{ |
| 18342 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, | 29374 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 18343 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, | 29375 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 29376 | .any, |
| 18344 | }, | 29377 | }, |
| 18345 | .patterns = &.{ | 29378 | .patterns = &.{ |
| 18346 | .{ .src = .{ .to_mem, .to_mem } }, | 29379 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18347 | }, | 29380 | }, |
| 18348 | .extra_temps = .{ | 29381 | .extra_temps = .{ |
| 18349 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29382 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18351,8 +29384,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18351,8 +29384,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18351 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 29384 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 18352 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 29385 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 18353 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 29386 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 18354 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 29387 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 18355 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 29388 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 18356 | .unused, | 29389 | .unused, |
| 18357 | .unused, | 29390 | .unused, |
| 18358 | }, | 29391 | }, |
| ... | @@ -18400,9 +29433,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18400,9 +29433,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18400 | .src_constraints = .{ | 29433 | .src_constraints = .{ |
| 18401 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, | 29434 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 18402 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, | 29435 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 29436 | .any, |
| 18403 | }, | 29437 | }, |
| 18404 | .patterns = &.{ | 29438 | .patterns = &.{ |
| 18405 | .{ .src = .{ .to_mem, .to_mem } }, | 29439 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18406 | }, | 29440 | }, |
| 18407 | .extra_temps = .{ | 29441 | .extra_temps = .{ |
| 18408 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29442 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18410,8 +29444,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18410,8 +29444,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18410 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 29444 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 18411 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 29445 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 18412 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 29446 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 18413 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 29447 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 18414 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 29448 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 18415 | .unused, | 29449 | .unused, |
| 18416 | .unused, | 29450 | .unused, |
| 18417 | }, | 29451 | }, |
| ... | @@ -18459,17 +29493,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18459,17 +29493,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18459 | .src_constraints = .{ | 29493 | .src_constraints = .{ |
| 18460 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, | 29494 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 18461 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, | 29495 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 29496 | .any, |
| 18462 | }, | 29497 | }, |
| 18463 | .patterns = &.{ | 29498 | .patterns = &.{ |
| 18464 | .{ .src = .{ .to_mem, .to_mem } }, | 29499 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18465 | }, | 29500 | }, |
| 18466 | .extra_temps = .{ | 29501 | .extra_temps = .{ |
| 18467 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29502 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 18468 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, | 29503 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| 18469 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 29504 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 18470 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 29505 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 18471 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 29506 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 18472 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 29507 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 18473 | .{ .type = .u8, .kind = .{ .reg = .ah } }, | 29508 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 18474 | .unused, | 29509 | .unused, |
| 18475 | .unused, | 29510 | .unused, |
| ... | @@ -18509,9 +29544,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18509,9 +29544,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18509 | .src_constraints = .{ | 29544 | .src_constraints = .{ |
| 18510 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | 29545 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 18511 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | 29546 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 29547 | .any, |
| 18512 | }, | 29548 | }, |
| 18513 | .patterns = &.{ | 29549 | .patterns = &.{ |
| 18514 | .{ .src = .{ .to_mem, .to_mem } }, | 29550 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18515 | }, | 29551 | }, |
| 18516 | .extra_temps = .{ | 29552 | .extra_temps = .{ |
| 18517 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29553 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18568,9 +29604,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18568,9 +29604,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18568 | .src_constraints = .{ | 29604 | .src_constraints = .{ |
| 18569 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | 29605 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 18570 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | 29606 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 29607 | .any, |
| 18571 | }, | 29608 | }, |
| 18572 | .patterns = &.{ | 29609 | .patterns = &.{ |
| 18573 | .{ .src = .{ .to_mem, .to_mem } }, | 29610 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18574 | }, | 29611 | }, |
| 18575 | .extra_temps = .{ | 29612 | .extra_temps = .{ |
| 18576 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29613 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18627,9 +29664,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18627,9 +29664,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18627 | .src_constraints = .{ | 29664 | .src_constraints = .{ |
| 18628 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | 29665 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 18629 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, | 29666 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 29667 | .any, |
| 18630 | }, | 29668 | }, |
| 18631 | .patterns = &.{ | 29669 | .patterns = &.{ |
| 18632 | .{ .src = .{ .to_mem, .to_mem } }, | 29670 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18633 | }, | 29671 | }, |
| 18634 | .extra_temps = .{ | 29672 | .extra_temps = .{ |
| 18635 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 29673 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -18677,10 +29715,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18677,10 +29715,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18677 | .src_constraints = .{ | 29715 | .src_constraints = .{ |
| 18678 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29716 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 18679 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29717 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 29718 | .any, |
| 18680 | }, | 29719 | }, |
| 18681 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 29720 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 18682 | .patterns = &.{ | 29721 | .patterns = &.{ |
| 18683 | .{ .src = .{ .to_mem, .to_mem } }, | 29722 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18684 | }, | 29723 | }, |
| 18685 | .call_frame = .{ .alignment = .@"16" }, | 29724 | .call_frame = .{ .alignment = .@"16" }, |
| 18686 | .extra_temps = .{ | 29725 | .extra_temps = .{ |
| ... | @@ -18688,11 +29727,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18688,11 +29727,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18688 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 29727 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 18689 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 29728 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 18690 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | 29729 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 18691 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 29730 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| 18692 | else => unreachable, | | |
| 18693 | .e => "__eqtf2", | | |
| 18694 | .ne => "__netf2", | | |
| 18695 | } } } }, | | |
| 18696 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 29731 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 18697 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 29732 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 18698 | .{ .type = .u32, .kind = .{ .reg = .edx } }, | 29733 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| ... | @@ -18722,10 +29757,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18722,10 +29757,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18722 | .src_constraints = .{ | 29757 | .src_constraints = .{ |
| 18723 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29758 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 18724 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29759 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 29760 | .any, |
| 18725 | }, | 29761 | }, |
| 18726 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 29762 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 18727 | .patterns = &.{ | 29763 | .patterns = &.{ |
| 18728 | .{ .src = .{ .to_mem, .to_mem } }, | 29764 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18729 | }, | 29765 | }, |
| 18730 | .call_frame = .{ .alignment = .@"16" }, | 29766 | .call_frame = .{ .alignment = .@"16" }, |
| 18731 | .extra_temps = .{ | 29767 | .extra_temps = .{ |
| ... | @@ -18733,11 +29769,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18733,11 +29769,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18733 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 29769 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 18734 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 29770 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 18735 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | 29771 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 18736 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 29772 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| 18737 | else => unreachable, | | |
| 18738 | .e => "__eqtf2", | | |
| 18739 | .ne => "__netf2", | | |
| 18740 | } } } }, | | |
| 18741 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 29773 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 18742 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 29774 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 18743 | .{ .type = .u32, .kind = .{ .reg = .edx } }, | 29775 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| ... | @@ -18767,10 +29799,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18767,10 +29799,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18767 | .src_constraints = .{ | 29799 | .src_constraints = .{ |
| 18768 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29800 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 18769 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29801 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 29802 | .any, |
| 18770 | }, | 29803 | }, |
| 18771 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 29804 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 18772 | .patterns = &.{ | 29805 | .patterns = &.{ |
| 18773 | .{ .src = .{ .to_mem, .to_mem } }, | 29806 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18774 | }, | 29807 | }, |
| 18775 | .call_frame = .{ .alignment = .@"16" }, | 29808 | .call_frame = .{ .alignment = .@"16" }, |
| 18776 | .extra_temps = .{ | 29809 | .extra_temps = .{ |
| ... | @@ -18778,11 +29811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18778,11 +29811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18778 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 29811 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 18779 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 29812 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 18780 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | 29813 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 18781 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 29814 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| 18782 | else => unreachable, | | |
| 18783 | .e => "__eqtf2", | | |
| 18784 | .ne => "__netf2", | | |
| 18785 | } } } }, | | |
| 18786 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 29815 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 18787 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 29816 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 18788 | .{ .type = .u32, .kind = .{ .reg = .edx } }, | 29817 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| ... | @@ -18812,10 +29841,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18812,10 +29841,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18812 | .src_constraints = .{ | 29841 | .src_constraints = .{ |
| 18813 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29842 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 18814 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29843 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 29844 | .any, |
| 18815 | }, | 29845 | }, |
| 18816 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 29846 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 18817 | .patterns = &.{ | 29847 | .patterns = &.{ |
| 18818 | .{ .src = .{ .to_mem, .to_mem } }, | 29848 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18819 | }, | 29849 | }, |
| 18820 | .call_frame = .{ .alignment = .@"16" }, | 29850 | .call_frame = .{ .alignment = .@"16" }, |
| 18821 | .extra_temps = .{ | 29851 | .extra_temps = .{ |
| ... | @@ -18823,11 +29853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18823,11 +29853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18823 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 29853 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 18824 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 29854 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 18825 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | 29855 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 18826 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 29856 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| 18827 | else => unreachable, | | |
| 18828 | .e => "__eqtf2", | | |
| 18829 | .ne => "__netf2", | | |
| 18830 | } } } }, | | |
| 18831 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 29857 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 18832 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 29858 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 18833 | .{ .type = .u32, .kind = .{ .reg = .edx } }, | 29859 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| ... | @@ -18857,10 +29883,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18857,10 +29883,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18857 | .src_constraints = .{ | 29883 | .src_constraints = .{ |
| 18858 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29884 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 18859 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29885 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 29886 | .any, |
| 18860 | }, | 29887 | }, |
| 18861 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 29888 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 18862 | .patterns = &.{ | 29889 | .patterns = &.{ |
| 18863 | .{ .src = .{ .to_mem, .to_mem } }, | 29890 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18864 | }, | 29891 | }, |
| 18865 | .call_frame = .{ .alignment = .@"16" }, | 29892 | .call_frame = .{ .alignment = .@"16" }, |
| 18866 | .extra_temps = .{ | 29893 | .extra_temps = .{ |
| ... | @@ -18868,11 +29895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18868,11 +29895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18868 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 29895 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 18869 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 29896 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 18870 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | 29897 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 18871 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 29898 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| 18872 | else => unreachable, | | |
| 18873 | .e => "__eqtf2", | | |
| 18874 | .ne => "__netf2", | | |
| 18875 | } } } }, | | |
| 18876 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 29899 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 18877 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 29900 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 18878 | .{ .type = .u32, .kind = .{ .reg = .edx } }, | 29901 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| ... | @@ -18902,10 +29925,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18902,10 +29925,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18902 | .src_constraints = .{ | 29925 | .src_constraints = .{ |
| 18903 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29926 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 18904 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29927 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 29928 | .any, |
| 18905 | }, | 29929 | }, |
| 18906 | .dst_constraints = .{.{ .bool_vec = .dword }}, | 29930 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 18907 | .patterns = &.{ | 29931 | .patterns = &.{ |
| 18908 | .{ .src = .{ .to_mem, .to_mem } }, | 29932 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18909 | }, | 29933 | }, |
| 18910 | .call_frame = .{ .alignment = .@"16" }, | 29934 | .call_frame = .{ .alignment = .@"16" }, |
| 18911 | .extra_temps = .{ | 29935 | .extra_temps = .{ |
| ... | @@ -18913,11 +29937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18913,11 +29937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18913 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 29937 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 18914 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 29938 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 18915 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | 29939 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 18916 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 29940 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| 18917 | else => unreachable, | | |
| 18918 | .e => "__eqtf2", | | |
| 18919 | .ne => "__netf2", | | |
| 18920 | } } } }, | | |
| 18921 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 29941 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 18922 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 29942 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 18923 | .{ .type = .u32, .kind = .{ .reg = .edx } }, | 29943 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| ... | @@ -18947,9 +29967,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18947,9 +29967,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18947 | .src_constraints = .{ | 29967 | .src_constraints = .{ |
| 18948 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29968 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 18949 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 29969 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 29970 | .any, |
| 18950 | }, | 29971 | }, |
| 18951 | .patterns = &.{ | 29972 | .patterns = &.{ |
| 18952 | .{ .src = .{ .to_mem, .to_mem } }, | 29973 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 18953 | }, | 29974 | }, |
| 18954 | .call_frame = .{ .alignment = .@"16" }, | 29975 | .call_frame = .{ .alignment = .@"16" }, |
| 18955 | .extra_temps = .{ | 29976 | .extra_temps = .{ |
| ... | @@ -18958,11 +29979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18958,11 +29979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18958 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 29979 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 18959 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 29980 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 18960 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | 29981 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 18961 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 29982 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| 18962 | else => unreachable, | | |
| 18963 | .e => "__eqtf2", | | |
| 18964 | .ne => "__netf2", | | |
| 18965 | } } } }, | | |
| 18966 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 29983 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 18967 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 29984 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 18968 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, | 29985 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| ... | @@ -19001,9 +30018,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19001,9 +30018,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19001 | .src_constraints = .{ | 30018 | .src_constraints = .{ |
| 19002 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 30019 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 19003 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 30020 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 30021 | .any, |
| 19004 | }, | 30022 | }, |
| 19005 | .patterns = &.{ | 30023 | .patterns = &.{ |
| 19006 | .{ .src = .{ .to_mem, .to_mem } }, | 30024 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 19007 | }, | 30025 | }, |
| 19008 | .call_frame = .{ .alignment = .@"16" }, | 30026 | .call_frame = .{ .alignment = .@"16" }, |
| 19009 | .extra_temps = .{ | 30027 | .extra_temps = .{ |
| ... | @@ -19012,11 +30030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19012,11 +30030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19012 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 30030 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 19013 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 30031 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 19014 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | 30032 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 19015 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 30033 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| 19016 | else => unreachable, | | |
| 19017 | .e => "__eqtf2", | | |
| 19018 | .ne => "__netf2", | | |
| 19019 | } } } }, | | |
| 19020 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 30034 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 19021 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 30035 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 19022 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, | 30036 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| ... | @@ -19055,9 +30069,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19055,9 +30069,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19055 | .src_constraints = .{ | 30069 | .src_constraints = .{ |
| 19056 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 30070 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 19057 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 30071 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 30072 | .any, |
| 19058 | }, | 30073 | }, |
| 19059 | .patterns = &.{ | 30074 | .patterns = &.{ |
| 19060 | .{ .src = .{ .to_mem, .to_mem } }, | 30075 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 19061 | }, | 30076 | }, |
| 19062 | .call_frame = .{ .alignment = .@"16" }, | 30077 | .call_frame = .{ .alignment = .@"16" }, |
| 19063 | .extra_temps = .{ | 30078 | .extra_temps = .{ |
| ... | @@ -19066,11 +30081,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19066,11 +30081,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19066 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 30081 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 19067 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 30082 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 19068 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | 30083 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 19069 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 30084 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| 19070 | else => unreachable, | | |
| 19071 | .e => "__eqtf2", | | |
| 19072 | .ne => "__netf2", | | |
| 19073 | } } } }, | | |
| 19074 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 30085 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 19075 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 30086 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 19076 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, | 30087 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| ... | @@ -19109,9 +30120,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19109,9 +30120,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19109 | .src_constraints = .{ | 30120 | .src_constraints = .{ |
| 19110 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 30121 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 19111 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 30122 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 30123 | .any, |
| 19112 | }, | 30124 | }, |
| 19113 | .patterns = &.{ | 30125 | .patterns = &.{ |
| 19114 | .{ .src = .{ .to_mem, .to_mem } }, | 30126 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 19115 | }, | 30127 | }, |
| 19116 | .call_frame = .{ .alignment = .@"16" }, | 30128 | .call_frame = .{ .alignment = .@"16" }, |
| 19117 | .extra_temps = .{ | 30129 | .extra_temps = .{ |
| ... | @@ -19120,11 +30132,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19120,11 +30132,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19120 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 30132 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 19121 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 30133 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 19122 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | 30134 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 19123 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 30135 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| 19124 | else => unreachable, | | |
| 19125 | .e => "__eqtf2", | | |
| 19126 | .ne => "__netf2", | | |
| 19127 | } } } }, | | |
| 19128 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 30136 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 19129 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 30137 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 19130 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, | 30138 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| ... | @@ -19163,9 +30171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19163,9 +30171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19163 | .src_constraints = .{ | 30171 | .src_constraints = .{ |
| 19164 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 30172 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 19165 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 30173 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 30174 | .any, |
| 19166 | }, | 30175 | }, |
| 19167 | .patterns = &.{ | 30176 | .patterns = &.{ |
| 19168 | .{ .src = .{ .to_mem, .to_mem } }, | 30177 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 19169 | }, | 30178 | }, |
| 19170 | .call_frame = .{ .alignment = .@"16" }, | 30179 | .call_frame = .{ .alignment = .@"16" }, |
| 19171 | .extra_temps = .{ | 30180 | .extra_temps = .{ |
| ... | @@ -19174,11 +30183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19174,11 +30183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19174 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 30183 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 19175 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 30184 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 19176 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | 30185 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 19177 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 30186 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| 19178 | else => unreachable, | | |
| 19179 | .e => "__eqtf2", | | |
| 19180 | .ne => "__netf2", | | |
| 19181 | } } } }, | | |
| 19182 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 30187 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 19183 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 30188 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 19184 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, | 30189 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| ... | @@ -19217,9 +30222,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19217,9 +30222,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19217 | .src_constraints = .{ | 30222 | .src_constraints = .{ |
| 19218 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 30223 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 19219 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, | 30224 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 30225 | .any, |
| 19220 | }, | 30226 | }, |
| 19221 | .patterns = &.{ | 30227 | .patterns = &.{ |
| 19222 | .{ .src = .{ .to_mem, .to_mem } }, | 30228 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 19223 | }, | 30229 | }, |
| 19224 | .call_frame = .{ .alignment = .@"16" }, | 30230 | .call_frame = .{ .alignment = .@"16" }, |
| 19225 | .extra_temps = .{ | 30231 | .extra_temps = .{ |
| ... | @@ -19228,11 +30234,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19228,11 +30234,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19228 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 30234 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 19229 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 30235 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 19230 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, | 30236 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 19231 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 30237 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, |
| 19232 | else => unreachable, | | |
| 19233 | .e => "__eqtf2", | | |
| 19234 | .ne => "__netf2", | | |
| 19235 | } } } }, | | |
| 19236 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 30238 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 19237 | .{ .type = .u8, .kind = .{ .reg = .cl } }, | 30239 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 19238 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, | 30240 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| ... | @@ -19267,31 +30269,1469 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19267,31 +30269,1469 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19267 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, | 30269 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, |
| 19268 | } }, | 30270 | } }, |
| 19269 | } }, | 30271 | } }, |
| 19270 | }) catch |err| switch (err) { | 30272 | }), |
| 19271 | error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{ | 30273 | }) catch |err| switch (err) { |
| 19272 | @tagName(air_tag), | 30274 | error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{ |
| 19273 | @tagName(extra.compareOperator()), | 30275 | @tagName(air_tag), |
| 19274 | cg.typeOf(extra.lhs).fmt(pt), | 30276 | @tagName(extra.compareOperator()), |
| 19275 | ops[0].tracking(cg), | 30277 | cg.typeOf(extra.lhs).fmt(pt), |
| 19276 | ops[1].tracking(cg), | 30278 | ops[0].tracking(cg), |
| 19277 | }), | 30279 | ops[1].tracking(cg), |
| 19278 | else => |e| return e, | 30280 | }), |
| 19279 | }, | 30281 | else => |e| return e, |
| 19280 | .gte => unreachable, | 30282 | }; |
| 19281 | .gt => unreachable, | 30283 | try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg); |
| 19282 | } | 30284 | }, |
| 19283 | try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg); | 30285 | |
| | 30286 | .sqrt => |air_tag| if (use_old) try cg.airSqrt(inst) else { |
| | 30287 | const un_op = air_datas[@intFromEnum(inst)].un_op; |
| | 30288 | var ops = try cg.tempsFromOperands(inst, .{un_op}); |
| | 30289 | var res: [1]Temp = undefined; |
| | 30290 | cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{ |
| | 30291 | .required_features = .{ .f16c, null, null, null }, |
| | 30292 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 30293 | .patterns = &.{ |
| | 30294 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 30295 | }, |
| | 30296 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 30297 | .each = .{ .once = &.{ |
| | 30298 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 30299 | .{ ._, .v_ss, .sqrt, .dst0x, .dst0x, .dst0d, ._ }, |
| | 30300 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| | 30301 | } }, |
| | 30302 | }, .{ |
| | 30303 | .required_features = .{ .sse, null, null, null }, |
| | 30304 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 30305 | .patterns = &.{ |
| | 30306 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 30307 | }, |
| | 30308 | .call_frame = .{ .alignment = .@"16" }, |
| | 30309 | .extra_temps = .{ |
| | 30310 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } }, |
| | 30311 | .unused, |
| | 30312 | .unused, |
| | 30313 | .unused, |
| | 30314 | .unused, |
| | 30315 | .unused, |
| | 30316 | .unused, |
| | 30317 | .unused, |
| | 30318 | .unused, |
| | 30319 | }, |
| | 30320 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 30321 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 30322 | .each = .{ .once = &.{ |
| | 30323 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 30324 | } }, |
| | 30325 | }, .{ |
| | 30326 | .required_features = .{ .f16c, null, null, null }, |
| | 30327 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 30328 | .patterns = &.{ |
| | 30329 | .{ .src = .{ .mem, .none, .none } }, |
| | 30330 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 30331 | }, |
| | 30332 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 30333 | .each = .{ .once = &.{ |
| | 30334 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 30335 | .{ ._, .v_ps, .sqrt, .dst0x, .dst0x, ._, ._ }, |
| | 30336 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| | 30337 | } }, |
| | 30338 | }, .{ |
| | 30339 | .required_features = .{ .f16c, null, null, null }, |
| | 30340 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 30341 | .patterns = &.{ |
| | 30342 | .{ .src = .{ .mem, .none, .none } }, |
| | 30343 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 30344 | }, |
| | 30345 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 30346 | .each = .{ .once = &.{ |
| | 30347 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| | 30348 | .{ ._, .v_ps, .sqrt, .dst0y, .dst0y, ._, ._ }, |
| | 30349 | .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, |
| | 30350 | } }, |
| | 30351 | }, .{ |
| | 30352 | .required_features = .{ .f16c, null, null, null }, |
| | 30353 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 30354 | .patterns = &.{ |
| | 30355 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30356 | }, |
| | 30357 | .extra_temps = .{ |
| | 30358 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30359 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 30360 | .unused, |
| | 30361 | .unused, |
| | 30362 | .unused, |
| | 30363 | .unused, |
| | 30364 | .unused, |
| | 30365 | .unused, |
| | 30366 | .unused, |
| | 30367 | }, |
| | 30368 | .dst_temps = .{.mem}, |
| | 30369 | .clobbers = .{ .eflags = true }, |
| | 30370 | .each = .{ .once = &.{ |
| | 30371 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30372 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 30373 | .{ ._, .v_ps, .sqrt, .tmp1y, .tmp1y, ._, ._ }, |
| | 30374 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, |
| | 30375 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 30376 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30377 | } }, |
| | 30378 | }, .{ |
| | 30379 | .required_features = .{ .avx, null, null, null }, |
| | 30380 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 30381 | .patterns = &.{ |
| | 30382 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30383 | }, |
| | 30384 | .call_frame = .{ .alignment = .@"16" }, |
| | 30385 | .extra_temps = .{ |
| | 30386 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30387 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 30388 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } }, |
| | 30389 | .unused, |
| | 30390 | .unused, |
| | 30391 | .unused, |
| | 30392 | .unused, |
| | 30393 | .unused, |
| | 30394 | .unused, |
| | 30395 | }, |
| | 30396 | .dst_temps = .{.mem}, |
| | 30397 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 30398 | .each = .{ .once = &.{ |
| | 30399 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30400 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 30401 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 30402 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 30403 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 30404 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 30405 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30406 | } }, |
| | 30407 | }, .{ |
| | 30408 | .required_features = .{ .sse4_1, null, null, null }, |
| | 30409 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 30410 | .patterns = &.{ |
| | 30411 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30412 | }, |
| | 30413 | .call_frame = .{ .alignment = .@"16" }, |
| | 30414 | .extra_temps = .{ |
| | 30415 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30416 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 30417 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } }, |
| | 30418 | .unused, |
| | 30419 | .unused, |
| | 30420 | .unused, |
| | 30421 | .unused, |
| | 30422 | .unused, |
| | 30423 | .unused, |
| | 30424 | }, |
| | 30425 | .dst_temps = .{.mem}, |
| | 30426 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 30427 | .each = .{ .once = &.{ |
| | 30428 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30429 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 30430 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 30431 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 30432 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 30433 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 30434 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30435 | } }, |
| | 30436 | }, .{ |
| | 30437 | .required_features = .{ .sse2, null, null, null }, |
| | 30438 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 30439 | .patterns = &.{ |
| | 30440 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30441 | }, |
| | 30442 | .call_frame = .{ .alignment = .@"16" }, |
| | 30443 | .extra_temps = .{ |
| | 30444 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30445 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 30446 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } }, |
| | 30447 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 30448 | .unused, |
| | 30449 | .unused, |
| | 30450 | .unused, |
| | 30451 | .unused, |
| | 30452 | .unused, |
| | 30453 | }, |
| | 30454 | .dst_temps = .{.mem}, |
| | 30455 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 30456 | .each = .{ .once = &.{ |
| | 30457 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30458 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 30459 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 30460 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 30461 | .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, |
| | 30462 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, |
| | 30463 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 30464 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30465 | } }, |
| | 30466 | }, .{ |
| | 30467 | .required_features = .{ .sse, null, null, null }, |
| | 30468 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 30469 | .patterns = &.{ |
| | 30470 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30471 | }, |
| | 30472 | .call_frame = .{ .alignment = .@"16" }, |
| | 30473 | .extra_temps = .{ |
| | 30474 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30475 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 30476 | .{ .type = .f32, .kind = .mem }, |
| | 30477 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 30478 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } }, |
| | 30479 | .unused, |
| | 30480 | .unused, |
| | 30481 | .unused, |
| | 30482 | .unused, |
| | 30483 | }, |
| | 30484 | .dst_temps = .{.mem}, |
| | 30485 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 30486 | .each = .{ .once = &.{ |
| | 30487 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30488 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 30489 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 30490 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 30491 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 30492 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| | 30493 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 30494 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 30495 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 30496 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30497 | } }, |
| | 30498 | }, .{ |
| | 30499 | .required_features = .{ .avx, null, null, null }, |
| | 30500 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 30501 | .patterns = &.{ |
| | 30502 | .{ .src = .{ .mem, .none, .none } }, |
| | 30503 | }, |
| | 30504 | .dst_temps = .{.{ .rc = .sse }}, |
| | 30505 | .each = .{ .once = &.{ |
| | 30506 | .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, |
| | 30507 | .{ ._, .v_ss, .sqrt, .dst0x, .dst0x, .src0d, ._ }, |
| | 30508 | } }, |
| | 30509 | }, .{ |
| | 30510 | .required_features = .{ .avx, null, null, null }, |
| | 30511 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 30512 | .patterns = &.{ |
| | 30513 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 30514 | }, |
| | 30515 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 30516 | .each = .{ .once = &.{ |
| | 30517 | .{ ._, .v_ss, .sqrt, .dst0x, .src0x, .src0d, ._ }, |
| | 30518 | } }, |
| | 30519 | }, .{ |
| | 30520 | .required_features = .{ .sse4_1, null, null, null }, |
| | 30521 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 30522 | .patterns = &.{ |
| | 30523 | .{ .src = .{ .mem, .none, .none } }, |
| | 30524 | }, |
| | 30525 | .dst_temps = .{.{ .rc = .sse }}, |
| | 30526 | .each = .{ .once = &.{ |
| | 30527 | .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, |
| | 30528 | .{ ._, ._ss, .sqrt, .dst0x, .src0d, ._, ._ }, |
| | 30529 | } }, |
| | 30530 | }, .{ |
| | 30531 | .required_features = .{ .sse4_1, null, null, null }, |
| | 30532 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 30533 | .patterns = &.{ |
| | 30534 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 30535 | }, |
| | 30536 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 30537 | .each = .{ .once = &.{ |
| | 30538 | .{ ._, ._ss, .sqrt, .dst0x, .src0d, ._, ._ }, |
| | 30539 | } }, |
| | 30540 | }, .{ |
| | 30541 | .required_features = .{ .sse, null, null, null }, |
| | 30542 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 30543 | .patterns = &.{ |
| | 30544 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 30545 | }, |
| | 30546 | .call_frame = .{ .alignment = .@"16" }, |
| | 30547 | .extra_temps = .{ |
| | 30548 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } }, |
| | 30549 | .unused, |
| | 30550 | .unused, |
| | 30551 | .unused, |
| | 30552 | .unused, |
| | 30553 | .unused, |
| | 30554 | .unused, |
| | 30555 | .unused, |
| | 30556 | .unused, |
| | 30557 | }, |
| | 30558 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 30559 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 30560 | .each = .{ .once = &.{ |
| | 30561 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 30562 | } }, |
| | 30563 | }, .{ |
| | 30564 | .required_features = .{ .avx, null, null, null }, |
| | 30565 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 30566 | .patterns = &.{ |
| | 30567 | .{ .src = .{ .mem, .none, .none } }, |
| | 30568 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 30569 | }, |
| | 30570 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 30571 | .each = .{ .once = &.{ |
| | 30572 | .{ ._, .v_ps, .sqrt, .dst0x, .src0x, ._, ._ }, |
| | 30573 | } }, |
| | 30574 | }, .{ |
| | 30575 | .required_features = .{ .sse4_1, null, null, null }, |
| | 30576 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 30577 | .patterns = &.{ |
| | 30578 | .{ .src = .{ .mem, .none, .none } }, |
| | 30579 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 30580 | }, |
| | 30581 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 30582 | .each = .{ .once = &.{ |
| | 30583 | .{ ._, ._ps, .sqrt, .dst0x, .src0x, ._, ._ }, |
| | 30584 | } }, |
| | 30585 | }, .{ |
| | 30586 | .required_features = .{ .avx, null, null, null }, |
| | 30587 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 30588 | .patterns = &.{ |
| | 30589 | .{ .src = .{ .mem, .none, .none } }, |
| | 30590 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 30591 | }, |
| | 30592 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 30593 | .each = .{ .once = &.{ |
| | 30594 | .{ ._, .v_ps, .sqrt, .dst0y, .src0y, ._, ._ }, |
| | 30595 | } }, |
| | 30596 | }, .{ |
| | 30597 | .required_features = .{ .avx, null, null, null }, |
| | 30598 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 30599 | .patterns = &.{ |
| | 30600 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30601 | }, |
| | 30602 | .extra_temps = .{ |
| | 30603 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30604 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 30605 | .unused, |
| | 30606 | .unused, |
| | 30607 | .unused, |
| | 30608 | .unused, |
| | 30609 | .unused, |
| | 30610 | .unused, |
| | 30611 | .unused, |
| | 30612 | }, |
| | 30613 | .dst_temps = .{.mem}, |
| | 30614 | .clobbers = .{ .eflags = true }, |
| | 30615 | .each = .{ .once = &.{ |
| | 30616 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30617 | .{ .@"0:", .v_ps, .sqrt, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 30618 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 30619 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 30620 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30621 | } }, |
| | 30622 | }, .{ |
| | 30623 | .required_features = .{ .sse4_1, null, null, null }, |
| | 30624 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 30625 | .patterns = &.{ |
| | 30626 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30627 | }, |
| | 30628 | .extra_temps = .{ |
| | 30629 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30630 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 30631 | .unused, |
| | 30632 | .unused, |
| | 30633 | .unused, |
| | 30634 | .unused, |
| | 30635 | .unused, |
| | 30636 | .unused, |
| | 30637 | .unused, |
| | 30638 | }, |
| | 30639 | .dst_temps = .{.mem}, |
| | 30640 | .clobbers = .{ .eflags = true }, |
| | 30641 | .each = .{ .once = &.{ |
| | 30642 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30643 | .{ .@"0:", ._ps, .sqrt, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 30644 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 30645 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 30646 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30647 | } }, |
| | 30648 | }, .{ |
| | 30649 | .required_features = .{ .avx, null, null, null }, |
| | 30650 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 30651 | .patterns = &.{ |
| | 30652 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30653 | }, |
| | 30654 | .call_frame = .{ .alignment = .@"16" }, |
| | 30655 | .extra_temps = .{ |
| | 30656 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30657 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 30658 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } }, |
| | 30659 | .unused, |
| | 30660 | .unused, |
| | 30661 | .unused, |
| | 30662 | .unused, |
| | 30663 | .unused, |
| | 30664 | .unused, |
| | 30665 | }, |
| | 30666 | .dst_temps = .{.mem}, |
| | 30667 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 30668 | .each = .{ .once = &.{ |
| | 30669 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30670 | .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 30671 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 30672 | .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 30673 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 30674 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30675 | } }, |
| | 30676 | }, .{ |
| | 30677 | .required_features = .{ .sse, null, null, null }, |
| | 30678 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 30679 | .patterns = &.{ |
| | 30680 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30681 | }, |
| | 30682 | .call_frame = .{ .alignment = .@"16" }, |
| | 30683 | .extra_temps = .{ |
| | 30684 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30685 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 30686 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } }, |
| | 30687 | .unused, |
| | 30688 | .unused, |
| | 30689 | .unused, |
| | 30690 | .unused, |
| | 30691 | .unused, |
| | 30692 | .unused, |
| | 30693 | }, |
| | 30694 | .dst_temps = .{.mem}, |
| | 30695 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 30696 | .each = .{ .once = &.{ |
| | 30697 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30698 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 30699 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 30700 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 30701 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 30702 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30703 | } }, |
| | 30704 | }, .{ |
| | 30705 | .required_features = .{ .avx, null, null, null }, |
| | 30706 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 30707 | .patterns = &.{ |
| | 30708 | .{ .src = .{ .mem, .none, .none } }, |
| | 30709 | }, |
| | 30710 | .dst_temps = .{.{ .rc = .sse }}, |
| | 30711 | .each = .{ .once = &.{ |
| | 30712 | .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, |
| | 30713 | .{ ._, .v_sd, .sqrt, .dst0x, .dst0x, .src0q, ._ }, |
| | 30714 | } }, |
| | 30715 | }, .{ |
| | 30716 | .required_features = .{ .avx, null, null, null }, |
| | 30717 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 30718 | .patterns = &.{ |
| | 30719 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 30720 | }, |
| | 30721 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 30722 | .each = .{ .once = &.{ |
| | 30723 | .{ ._, .v_sd, .sqrt, .dst0x, .src0x, .src0q, ._ }, |
| | 30724 | } }, |
| | 30725 | }, .{ |
| | 30726 | .required_features = .{ .sse4_1, null, null, null }, |
| | 30727 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 30728 | .patterns = &.{ |
| | 30729 | .{ .src = .{ .mem, .none, .none } }, |
| | 30730 | }, |
| | 30731 | .dst_temps = .{.{ .rc = .sse }}, |
| | 30732 | .each = .{ .once = &.{ |
| | 30733 | .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, |
| | 30734 | .{ ._, ._sd, .sqrt, .dst0x, .src0q, ._, ._ }, |
| | 30735 | } }, |
| | 30736 | }, .{ |
| | 30737 | .required_features = .{ .sse4_1, null, null, null }, |
| | 30738 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 30739 | .patterns = &.{ |
| | 30740 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 30741 | }, |
| | 30742 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 30743 | .each = .{ .once = &.{ |
| | 30744 | .{ ._, ._sd, .sqrt, .dst0x, .src0q, ._, ._ }, |
| | 30745 | } }, |
| | 30746 | }, .{ |
| | 30747 | .required_features = .{ .sse, null, null, null }, |
| | 30748 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 30749 | .patterns = &.{ |
| | 30750 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 30751 | }, |
| | 30752 | .call_frame = .{ .alignment = .@"16" }, |
| | 30753 | .extra_temps = .{ |
| | 30754 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } }, |
| | 30755 | .unused, |
| | 30756 | .unused, |
| | 30757 | .unused, |
| | 30758 | .unused, |
| | 30759 | .unused, |
| | 30760 | .unused, |
| | 30761 | .unused, |
| | 30762 | .unused, |
| | 30763 | }, |
| | 30764 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 30765 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 30766 | .each = .{ .once = &.{ |
| | 30767 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 30768 | } }, |
| | 30769 | }, .{ |
| | 30770 | .required_features = .{ .avx, null, null, null }, |
| | 30771 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 30772 | .patterns = &.{ |
| | 30773 | .{ .src = .{ .mem, .none, .none } }, |
| | 30774 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 30775 | }, |
| | 30776 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 30777 | .each = .{ .once = &.{ |
| | 30778 | .{ ._, .v_pd, .sqrt, .dst0x, .src0x, ._, ._ }, |
| | 30779 | } }, |
| | 30780 | }, .{ |
| | 30781 | .required_features = .{ .sse4_1, null, null, null }, |
| | 30782 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 30783 | .patterns = &.{ |
| | 30784 | .{ .src = .{ .mem, .none, .none } }, |
| | 30785 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 30786 | }, |
| | 30787 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 30788 | .each = .{ .once = &.{ |
| | 30789 | .{ ._, ._pd, .sqrt, .dst0x, .src0x, ._, ._ }, |
| | 30790 | } }, |
| | 30791 | }, .{ |
| | 30792 | .required_features = .{ .avx, null, null, null }, |
| | 30793 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 30794 | .patterns = &.{ |
| | 30795 | .{ .src = .{ .mem, .none, .none } }, |
| | 30796 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 30797 | }, |
| | 30798 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 30799 | .each = .{ .once = &.{ |
| | 30800 | .{ ._, .v_pd, .sqrt, .dst0y, .src0y, ._, ._ }, |
| | 30801 | } }, |
| | 30802 | }, .{ |
| | 30803 | .required_features = .{ .avx, null, null, null }, |
| | 30804 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 30805 | .patterns = &.{ |
| | 30806 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30807 | }, |
| | 30808 | .extra_temps = .{ |
| | 30809 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30810 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 30811 | .unused, |
| | 30812 | .unused, |
| | 30813 | .unused, |
| | 30814 | .unused, |
| | 30815 | .unused, |
| | 30816 | .unused, |
| | 30817 | .unused, |
| | 30818 | }, |
| | 30819 | .dst_temps = .{.mem}, |
| | 30820 | .clobbers = .{ .eflags = true }, |
| | 30821 | .each = .{ .once = &.{ |
| | 30822 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30823 | .{ .@"0:", .v_pd, .sqrt, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 30824 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 30825 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 30826 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30827 | } }, |
| | 30828 | }, .{ |
| | 30829 | .required_features = .{ .sse4_1, null, null, null }, |
| | 30830 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 30831 | .patterns = &.{ |
| | 30832 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30833 | }, |
| | 30834 | .extra_temps = .{ |
| | 30835 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30836 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 30837 | .unused, |
| | 30838 | .unused, |
| | 30839 | .unused, |
| | 30840 | .unused, |
| | 30841 | .unused, |
| | 30842 | .unused, |
| | 30843 | .unused, |
| | 30844 | }, |
| | 30845 | .dst_temps = .{.mem}, |
| | 30846 | .clobbers = .{ .eflags = true }, |
| | 30847 | .each = .{ .once = &.{ |
| | 30848 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30849 | .{ .@"0:", ._pd, .sqrt, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 30850 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 30851 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 30852 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30853 | } }, |
| | 30854 | }, .{ |
| | 30855 | .required_features = .{ .avx, null, null, null }, |
| | 30856 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 30857 | .patterns = &.{ |
| | 30858 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30859 | }, |
| | 30860 | .call_frame = .{ .alignment = .@"16" }, |
| | 30861 | .extra_temps = .{ |
| | 30862 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30863 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 30864 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } }, |
| | 30865 | .unused, |
| | 30866 | .unused, |
| | 30867 | .unused, |
| | 30868 | .unused, |
| | 30869 | .unused, |
| | 30870 | .unused, |
| | 30871 | }, |
| | 30872 | .dst_temps = .{.mem}, |
| | 30873 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 30874 | .each = .{ .once = &.{ |
| | 30875 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30876 | .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 30877 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 30878 | .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 30879 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 30880 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30881 | } }, |
| | 30882 | }, .{ |
| | 30883 | .required_features = .{ .sse2, null, null, null }, |
| | 30884 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 30885 | .patterns = &.{ |
| | 30886 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30887 | }, |
| | 30888 | .call_frame = .{ .alignment = .@"16" }, |
| | 30889 | .extra_temps = .{ |
| | 30890 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30891 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 30892 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } }, |
| | 30893 | .unused, |
| | 30894 | .unused, |
| | 30895 | .unused, |
| | 30896 | .unused, |
| | 30897 | .unused, |
| | 30898 | .unused, |
| | 30899 | }, |
| | 30900 | .dst_temps = .{.mem}, |
| | 30901 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 30902 | .each = .{ .once = &.{ |
| | 30903 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30904 | .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 30905 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 30906 | .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 30907 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 30908 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30909 | } }, |
| | 30910 | }, .{ |
| | 30911 | .required_features = .{ .sse, null, null, null }, |
| | 30912 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 30913 | .patterns = &.{ |
| | 30914 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30915 | }, |
| | 30916 | .call_frame = .{ .alignment = .@"16" }, |
| | 30917 | .extra_temps = .{ |
| | 30918 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30919 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 30920 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } }, |
| | 30921 | .unused, |
| | 30922 | .unused, |
| | 30923 | .unused, |
| | 30924 | .unused, |
| | 30925 | .unused, |
| | 30926 | .unused, |
| | 30927 | }, |
| | 30928 | .dst_temps = .{.mem}, |
| | 30929 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 30930 | .each = .{ .once = &.{ |
| | 30931 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30932 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 30933 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 30934 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 30935 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 30936 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 30937 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30938 | } }, |
| | 30939 | }, .{ |
| | 30940 | .required_features = .{ .x87, null, null, null }, |
| | 30941 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 30942 | .patterns = &.{ |
| | 30943 | .{ .src = .{ .mem, .none, .none } }, |
| | 30944 | .{ .src = .{ .to_x87, .none, .none } }, |
| | 30945 | }, |
| | 30946 | .extra_temps = .{ |
| | 30947 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 30948 | .unused, |
| | 30949 | .unused, |
| | 30950 | .unused, |
| | 30951 | .unused, |
| | 30952 | .unused, |
| | 30953 | .unused, |
| | 30954 | .unused, |
| | 30955 | .unused, |
| | 30956 | }, |
| | 30957 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }}, |
| | 30958 | .each = .{ .once = &.{ |
| | 30959 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| | 30960 | .{ ._, .f_, .sqrt, ._, ._, ._, ._ }, |
| | 30961 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| | 30962 | } }, |
| | 30963 | }, .{ |
| | 30964 | .required_features = .{ .x87, null, null, null }, |
| | 30965 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 30966 | .patterns = &.{ |
| | 30967 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 30968 | }, |
| | 30969 | .extra_temps = .{ |
| | 30970 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 30971 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 30972 | .unused, |
| | 30973 | .unused, |
| | 30974 | .unused, |
| | 30975 | .unused, |
| | 30976 | .unused, |
| | 30977 | .unused, |
| | 30978 | .unused, |
| | 30979 | }, |
| | 30980 | .dst_temps = .{.mem}, |
| | 30981 | .clobbers = .{ .eflags = true }, |
| | 30982 | .each = .{ .once = &.{ |
| | 30983 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 30984 | .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 30985 | .{ ._, .f_, .sqrt, ._, ._, ._, ._ }, |
| | 30986 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 30987 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 30988 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 30989 | } }, |
| | 30990 | }, .{ |
| | 30991 | .required_features = .{ .sse, null, null, null }, |
| | 30992 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 30993 | .patterns = &.{ |
| | 30994 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 30995 | }, |
| | 30996 | .call_frame = .{ .alignment = .@"16" }, |
| | 30997 | .extra_temps = .{ |
| | 30998 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } }, |
| | 30999 | .unused, |
| | 31000 | .unused, |
| | 31001 | .unused, |
| | 31002 | .unused, |
| | 31003 | .unused, |
| | 31004 | .unused, |
| | 31005 | .unused, |
| | 31006 | .unused, |
| | 31007 | }, |
| | 31008 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 31009 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31010 | .each = .{ .once = &.{ |
| | 31011 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 31012 | } }, |
| | 31013 | }, .{ |
| | 31014 | .required_features = .{ .avx, null, null, null }, |
| | 31015 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 31016 | .patterns = &.{ |
| | 31017 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31018 | }, |
| | 31019 | .call_frame = .{ .alignment = .@"16" }, |
| | 31020 | .extra_temps = .{ |
| | 31021 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31022 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 31023 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } }, |
| | 31024 | .unused, |
| | 31025 | .unused, |
| | 31026 | .unused, |
| | 31027 | .unused, |
| | 31028 | .unused, |
| | 31029 | .unused, |
| | 31030 | }, |
| | 31031 | .dst_temps = .{.mem}, |
| | 31032 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31033 | .each = .{ .once = &.{ |
| | 31034 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31035 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31036 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31037 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 31038 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 31039 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31040 | } }, |
| | 31041 | }, .{ |
| | 31042 | .required_features = .{ .sse2, null, null, null }, |
| | 31043 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 31044 | .patterns = &.{ |
| | 31045 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31046 | }, |
| | 31047 | .call_frame = .{ .alignment = .@"16" }, |
| | 31048 | .extra_temps = .{ |
| | 31049 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31050 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 31051 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } }, |
| | 31052 | .unused, |
| | 31053 | .unused, |
| | 31054 | .unused, |
| | 31055 | .unused, |
| | 31056 | .unused, |
| | 31057 | .unused, |
| | 31058 | }, |
| | 31059 | .dst_temps = .{.mem}, |
| | 31060 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31061 | .each = .{ .once = &.{ |
| | 31062 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31063 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31064 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31065 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 31066 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 31067 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31068 | } }, |
| | 31069 | }, .{ |
| | 31070 | .required_features = .{ .sse, null, null, null }, |
| | 31071 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 31072 | .patterns = &.{ |
| | 31073 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31074 | }, |
| | 31075 | .call_frame = .{ .alignment = .@"16" }, |
| | 31076 | .extra_temps = .{ |
| | 31077 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31078 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 31079 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } }, |
| | 31080 | .unused, |
| | 31081 | .unused, |
| | 31082 | .unused, |
| | 31083 | .unused, |
| | 31084 | .unused, |
| | 31085 | .unused, |
| | 31086 | }, |
| | 31087 | .dst_temps = .{.mem}, |
| | 31088 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31089 | .each = .{ .once = &.{ |
| | 31090 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31091 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31092 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31093 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 31094 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 31095 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31096 | } }, |
| | 31097 | } }) catch |err| switch (err) { |
| | 31098 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ |
| | 31099 | @tagName(air_tag), |
| | 31100 | cg.typeOf(un_op).fmt(pt), |
| | 31101 | ops[0].tracking(cg), |
| | 31102 | }), |
| | 31103 | else => |e| return e, |
| | 31104 | }; |
| | 31105 | try res[0].finish(inst, &.{un_op}, &ops, cg); |
| | 31106 | }, |
| | 31107 | .sin, .cos, .tan, .exp, .exp2, .log, .log2, .log10, .round => |air_tag| if (use_old) try cg.airUnaryMath(inst, air_tag) else { |
| | 31108 | const un_op = air_datas[@intFromEnum(inst)].un_op; |
| | 31109 | var ops = try cg.tempsFromOperands(inst, .{un_op}); |
| | 31110 | var res: [1]Temp = undefined; |
| | 31111 | cg.select(&res, &.{cg.typeOf(un_op)}, &ops, switch (air_tag) { |
| | 31112 | else => unreachable, |
| | 31113 | inline .sin, .cos, .tan, .exp, .exp2, .log, .log2, .log10, .round => |name| comptime &.{ .{ |
| | 31114 | .required_features = .{ .sse, null, null, null }, |
| | 31115 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 31116 | .patterns = &.{ |
| | 31117 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 31118 | }, |
| | 31119 | .call_frame = .{ .alignment = .@"16" }, |
| | 31120 | .extra_temps = .{ |
| | 31121 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } }, |
| | 31122 | .unused, |
| | 31123 | .unused, |
| | 31124 | .unused, |
| | 31125 | .unused, |
| | 31126 | .unused, |
| | 31127 | .unused, |
| | 31128 | .unused, |
| | 31129 | .unused, |
| | 31130 | }, |
| | 31131 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 31132 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31133 | .each = .{ .once = &.{ |
| | 31134 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 31135 | } }, |
| | 31136 | }, .{ |
| | 31137 | .required_features = .{ .avx, null, null, null }, |
| | 31138 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 31139 | .patterns = &.{ |
| | 31140 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31141 | }, |
| | 31142 | .call_frame = .{ .alignment = .@"16" }, |
| | 31143 | .extra_temps = .{ |
| | 31144 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31145 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 31146 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } }, |
| | 31147 | .unused, |
| | 31148 | .unused, |
| | 31149 | .unused, |
| | 31150 | .unused, |
| | 31151 | .unused, |
| | 31152 | .unused, |
| | 31153 | }, |
| | 31154 | .dst_temps = .{.mem}, |
| | 31155 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31156 | .each = .{ .once = &.{ |
| | 31157 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31158 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 31159 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 31160 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31161 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 31162 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 31163 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31164 | } }, |
| | 31165 | }, .{ |
| | 31166 | .required_features = .{ .sse4_1, null, null, null }, |
| | 31167 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 31168 | .patterns = &.{ |
| | 31169 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31170 | }, |
| | 31171 | .call_frame = .{ .alignment = .@"16" }, |
| | 31172 | .extra_temps = .{ |
| | 31173 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31174 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 31175 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } }, |
| | 31176 | .unused, |
| | 31177 | .unused, |
| | 31178 | .unused, |
| | 31179 | .unused, |
| | 31180 | .unused, |
| | 31181 | .unused, |
| | 31182 | }, |
| | 31183 | .dst_temps = .{.mem}, |
| | 31184 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31185 | .each = .{ .once = &.{ |
| | 31186 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31187 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 31188 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 31189 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31190 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 31191 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 31192 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31193 | } }, |
| | 31194 | }, .{ |
| | 31195 | .required_features = .{ .sse2, null, null, null }, |
| | 31196 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 31197 | .patterns = &.{ |
| | 31198 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31199 | }, |
| | 31200 | .call_frame = .{ .alignment = .@"16" }, |
| | 31201 | .extra_temps = .{ |
| | 31202 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31203 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 31204 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } }, |
| | 31205 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 31206 | .unused, |
| | 31207 | .unused, |
| | 31208 | .unused, |
| | 31209 | .unused, |
| | 31210 | .unused, |
| | 31211 | }, |
| | 31212 | .dst_temps = .{.mem}, |
| | 31213 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31214 | .each = .{ .once = &.{ |
| | 31215 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31216 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 31217 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 31218 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31219 | .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, |
| | 31220 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, |
| | 31221 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 31222 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31223 | } }, |
| | 31224 | }, .{ |
| | 31225 | .required_features = .{ .sse, null, null, null }, |
| | 31226 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 31227 | .patterns = &.{ |
| | 31228 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31229 | }, |
| | 31230 | .call_frame = .{ .alignment = .@"16" }, |
| | 31231 | .extra_temps = .{ |
| | 31232 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31233 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 31234 | .{ .type = .f32, .kind = .mem }, |
| | 31235 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 31236 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } }, |
| | 31237 | .unused, |
| | 31238 | .unused, |
| | 31239 | .unused, |
| | 31240 | .unused, |
| | 31241 | }, |
| | 31242 | .dst_temps = .{.mem}, |
| | 31243 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31244 | .each = .{ .once = &.{ |
| | 31245 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31246 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31247 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 31248 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 31249 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 31250 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| | 31251 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 31252 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 31253 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 31254 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31255 | } }, |
| | 31256 | }, .{ |
| | 31257 | .required_features = .{ .sse, null, null, null }, |
| | 31258 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 31259 | .patterns = &.{ |
| | 31260 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 31261 | }, |
| | 31262 | .call_frame = .{ .alignment = .@"16" }, |
| | 31263 | .extra_temps = .{ |
| | 31264 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } }, |
| | 31265 | .unused, |
| | 31266 | .unused, |
| | 31267 | .unused, |
| | 31268 | .unused, |
| | 31269 | .unused, |
| | 31270 | .unused, |
| | 31271 | .unused, |
| | 31272 | .unused, |
| | 31273 | }, |
| | 31274 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 31275 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31276 | .each = .{ .once = &.{ |
| | 31277 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 31278 | } }, |
| | 31279 | }, .{ |
| | 31280 | .required_features = .{ .avx, null, null, null }, |
| | 31281 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 31282 | .patterns = &.{ |
| | 31283 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31284 | }, |
| | 31285 | .call_frame = .{ .alignment = .@"16" }, |
| | 31286 | .extra_temps = .{ |
| | 31287 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31288 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 31289 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } }, |
| | 31290 | .unused, |
| | 31291 | .unused, |
| | 31292 | .unused, |
| | 31293 | .unused, |
| | 31294 | .unused, |
| | 31295 | .unused, |
| | 31296 | }, |
| | 31297 | .dst_temps = .{.mem}, |
| | 31298 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31299 | .each = .{ .once = &.{ |
| | 31300 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31301 | .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31302 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31303 | .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 31304 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 31305 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31306 | } }, |
| | 31307 | }, .{ |
| | 31308 | .required_features = .{ .sse, null, null, null }, |
| | 31309 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 31310 | .patterns = &.{ |
| | 31311 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31312 | }, |
| | 31313 | .call_frame = .{ .alignment = .@"16" }, |
| | 31314 | .extra_temps = .{ |
| | 31315 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31316 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 31317 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } }, |
| | 31318 | .unused, |
| | 31319 | .unused, |
| | 31320 | .unused, |
| | 31321 | .unused, |
| | 31322 | .unused, |
| | 31323 | .unused, |
| | 31324 | }, |
| | 31325 | .dst_temps = .{.mem}, |
| | 31326 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31327 | .each = .{ .once = &.{ |
| | 31328 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31329 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31330 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31331 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 31332 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 31333 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31334 | } }, |
| | 31335 | }, .{ |
| | 31336 | .required_features = .{ .sse, null, null, null }, |
| | 31337 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 31338 | .patterns = &.{ |
| | 31339 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 31340 | }, |
| | 31341 | .call_frame = .{ .alignment = .@"16" }, |
| | 31342 | .extra_temps = .{ |
| | 31343 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } }, |
| | 31344 | .unused, |
| | 31345 | .unused, |
| | 31346 | .unused, |
| | 31347 | .unused, |
| | 31348 | .unused, |
| | 31349 | .unused, |
| | 31350 | .unused, |
| | 31351 | .unused, |
| | 31352 | }, |
| | 31353 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 31354 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31355 | .each = .{ .once = &.{ |
| | 31356 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 31357 | } }, |
| | 31358 | }, .{ |
| | 31359 | .required_features = .{ .avx, null, null, null }, |
| | 31360 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 31361 | .patterns = &.{ |
| | 31362 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31363 | }, |
| | 31364 | .call_frame = .{ .alignment = .@"16" }, |
| | 31365 | .extra_temps = .{ |
| | 31366 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31367 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 31368 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } }, |
| | 31369 | .unused, |
| | 31370 | .unused, |
| | 31371 | .unused, |
| | 31372 | .unused, |
| | 31373 | .unused, |
| | 31374 | .unused, |
| | 31375 | }, |
| | 31376 | .dst_temps = .{.mem}, |
| | 31377 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31378 | .each = .{ .once = &.{ |
| | 31379 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31380 | .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31381 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31382 | .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 31383 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 31384 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31385 | } }, |
| | 31386 | }, .{ |
| | 31387 | .required_features = .{ .sse2, null, null, null }, |
| | 31388 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 31389 | .patterns = &.{ |
| | 31390 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31391 | }, |
| | 31392 | .call_frame = .{ .alignment = .@"16" }, |
| | 31393 | .extra_temps = .{ |
| | 31394 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31395 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 31396 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } }, |
| | 31397 | .unused, |
| | 31398 | .unused, |
| | 31399 | .unused, |
| | 31400 | .unused, |
| | 31401 | .unused, |
| | 31402 | .unused, |
| | 31403 | }, |
| | 31404 | .dst_temps = .{.mem}, |
| | 31405 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31406 | .each = .{ .once = &.{ |
| | 31407 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31408 | .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31409 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31410 | .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 31411 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 31412 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31413 | } }, |
| | 31414 | }, .{ |
| | 31415 | .required_features = .{ .sse, null, null, null }, |
| | 31416 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 31417 | .patterns = &.{ |
| | 31418 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31419 | }, |
| | 31420 | .call_frame = .{ .alignment = .@"16" }, |
| | 31421 | .extra_temps = .{ |
| | 31422 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31423 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 31424 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } }, |
| | 31425 | .unused, |
| | 31426 | .unused, |
| | 31427 | .unused, |
| | 31428 | .unused, |
| | 31429 | .unused, |
| | 31430 | .unused, |
| | 31431 | }, |
| | 31432 | .dst_temps = .{.mem}, |
| | 31433 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31434 | .each = .{ .once = &.{ |
| | 31435 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31436 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 31437 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31438 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31439 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 31440 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 31441 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31442 | } }, |
| | 31443 | }, .{ |
| | 31444 | .required_features = .{ .avx, .x87, null, null }, |
| | 31445 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 31446 | .patterns = &.{ |
| | 31447 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31448 | }, |
| | 31449 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 31450 | .extra_temps = .{ |
| | 31451 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 31452 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 31453 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } }, |
| | 31454 | .unused, |
| | 31455 | .unused, |
| | 31456 | .unused, |
| | 31457 | .unused, |
| | 31458 | .unused, |
| | 31459 | .unused, |
| | 31460 | }, |
| | 31461 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 31462 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31463 | .each = .{ .once = &.{ |
| | 31464 | .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 31465 | .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 31466 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31467 | } }, |
| | 31468 | }, .{ |
| | 31469 | .required_features = .{ .sse2, .x87, null, null }, |
| | 31470 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 31471 | .patterns = &.{ |
| | 31472 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31473 | }, |
| | 31474 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 31475 | .extra_temps = .{ |
| | 31476 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 31477 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 31478 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } }, |
| | 31479 | .unused, |
| | 31480 | .unused, |
| | 31481 | .unused, |
| | 31482 | .unused, |
| | 31483 | .unused, |
| | 31484 | .unused, |
| | 31485 | }, |
| | 31486 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 31487 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31488 | .each = .{ .once = &.{ |
| | 31489 | .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 31490 | .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 31491 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31492 | } }, |
| | 31493 | }, .{ |
| | 31494 | .required_features = .{ .sse, .x87, null, null }, |
| | 31495 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 31496 | .patterns = &.{ |
| | 31497 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31498 | }, |
| | 31499 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 31500 | .extra_temps = .{ |
| | 31501 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 31502 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 31503 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } }, |
| | 31504 | .unused, |
| | 31505 | .unused, |
| | 31506 | .unused, |
| | 31507 | .unused, |
| | 31508 | .unused, |
| | 31509 | .unused, |
| | 31510 | }, |
| | 31511 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 31512 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31513 | .each = .{ .once = &.{ |
| | 31514 | .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 31515 | .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 31516 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31517 | } }, |
| | 31518 | }, .{ |
| | 31519 | .required_features = .{ .avx, .x87, null, null }, |
| | 31520 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 31521 | .patterns = &.{ |
| | 31522 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31523 | }, |
| | 31524 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 31525 | .extra_temps = .{ |
| | 31526 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31527 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 31528 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 31529 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } }, |
| | 31530 | .unused, |
| | 31531 | .unused, |
| | 31532 | .unused, |
| | 31533 | .unused, |
| | 31534 | .unused, |
| | 31535 | }, |
| | 31536 | .dst_temps = .{.mem}, |
| | 31537 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31538 | .each = .{ .once = &.{ |
| | 31539 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31540 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31541 | .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 31542 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 31543 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 31544 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 31545 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 31546 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31547 | } }, |
| | 31548 | }, .{ |
| | 31549 | .required_features = .{ .sse2, .x87, null, null }, |
| | 31550 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 31551 | .patterns = &.{ |
| | 31552 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31553 | }, |
| | 31554 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 31555 | .extra_temps = .{ |
| | 31556 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31557 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 31558 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 31559 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } }, |
| | 31560 | .unused, |
| | 31561 | .unused, |
| | 31562 | .unused, |
| | 31563 | .unused, |
| | 31564 | .unused, |
| | 31565 | }, |
| | 31566 | .dst_temps = .{.mem}, |
| | 31567 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31568 | .each = .{ .once = &.{ |
| | 31569 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31570 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31571 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 31572 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 31573 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 31574 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 31575 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 31576 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31577 | } }, |
| | 31578 | }, .{ |
| | 31579 | .required_features = .{ .sse, .x87, null, null }, |
| | 31580 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 31581 | .patterns = &.{ |
| | 31582 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31583 | }, |
| | 31584 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 31585 | .extra_temps = .{ |
| | 31586 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31587 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 31588 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 31589 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } }, |
| | 31590 | .unused, |
| | 31591 | .unused, |
| | 31592 | .unused, |
| | 31593 | .unused, |
| | 31594 | .unused, |
| | 31595 | }, |
| | 31596 | .dst_temps = .{.mem}, |
| | 31597 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31598 | .each = .{ .once = &.{ |
| | 31599 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31600 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31601 | .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 31602 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 31603 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 31604 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 31605 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 31606 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31607 | } }, |
| | 31608 | }, .{ |
| | 31609 | .required_features = .{ .sse, null, null, null }, |
| | 31610 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 31611 | .patterns = &.{ |
| | 31612 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 31613 | }, |
| | 31614 | .call_frame = .{ .alignment = .@"16" }, |
| | 31615 | .extra_temps = .{ |
| | 31616 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } }, |
| | 31617 | .unused, |
| | 31618 | .unused, |
| | 31619 | .unused, |
| | 31620 | .unused, |
| | 31621 | .unused, |
| | 31622 | .unused, |
| | 31623 | .unused, |
| | 31624 | .unused, |
| | 31625 | }, |
| | 31626 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 31627 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31628 | .each = .{ .once = &.{ |
| | 31629 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 31630 | } }, |
| | 31631 | }, .{ |
| | 31632 | .required_features = .{ .avx, null, null, null }, |
| | 31633 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 31634 | .patterns = &.{ |
| | 31635 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31636 | }, |
| | 31637 | .call_frame = .{ .alignment = .@"16" }, |
| | 31638 | .extra_temps = .{ |
| | 31639 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31640 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 31641 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } }, |
| | 31642 | .unused, |
| | 31643 | .unused, |
| | 31644 | .unused, |
| | 31645 | .unused, |
| | 31646 | .unused, |
| | 31647 | .unused, |
| | 31648 | }, |
| | 31649 | .dst_temps = .{.mem}, |
| | 31650 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31651 | .each = .{ .once = &.{ |
| | 31652 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31653 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31654 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31655 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 31656 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 31657 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31658 | } }, |
| | 31659 | }, .{ |
| | 31660 | .required_features = .{ .sse2, null, null, null }, |
| | 31661 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 31662 | .patterns = &.{ |
| | 31663 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31664 | }, |
| | 31665 | .call_frame = .{ .alignment = .@"16" }, |
| | 31666 | .extra_temps = .{ |
| | 31667 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31668 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 31669 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } }, |
| | 31670 | .unused, |
| | 31671 | .unused, |
| | 31672 | .unused, |
| | 31673 | .unused, |
| | 31674 | .unused, |
| | 31675 | .unused, |
| | 31676 | }, |
| | 31677 | .dst_temps = .{.mem}, |
| | 31678 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31679 | .each = .{ .once = &.{ |
| | 31680 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31681 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31682 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31683 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 31684 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 31685 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31686 | } }, |
| | 31687 | }, .{ |
| | 31688 | .required_features = .{ .sse, null, null, null }, |
| | 31689 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 31690 | .patterns = &.{ |
| | 31691 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 31692 | }, |
| | 31693 | .call_frame = .{ .alignment = .@"16" }, |
| | 31694 | .extra_temps = .{ |
| | 31695 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 31696 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 31697 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } }, |
| | 31698 | .unused, |
| | 31699 | .unused, |
| | 31700 | .unused, |
| | 31701 | .unused, |
| | 31702 | .unused, |
| | 31703 | .unused, |
| | 31704 | }, |
| | 31705 | .dst_temps = .{.mem}, |
| | 31706 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 31707 | .each = .{ .once = &.{ |
| | 31708 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 31709 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 31710 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 31711 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 31712 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 31713 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 31714 | } }, |
| | 31715 | } }, |
| | 31716 | }) catch |err| switch (err) { |
| | 31717 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ |
| | 31718 | @tagName(air_tag), |
| | 31719 | cg.typeOf(un_op).fmt(pt), |
| | 31720 | ops[0].tracking(cg), |
| | 31721 | }), |
| | 31722 | else => |e| return e, |
| | 31723 | }; |
| | 31724 | try res[0].finish(inst, &.{un_op}, &ops, cg); |
| 19284 | }, | 31725 | }, |
| 19285 | | | |
| 19286 | .abs => |air_tag| if (use_old) try cg.airAbs(inst) else { | 31726 | .abs => |air_tag| if (use_old) try cg.airAbs(inst) else { |
| 19287 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | 31727 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| 19288 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | 31728 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| 19289 | var res: [1]Temp = undefined; | 31729 | var res: [1]Temp = undefined; |
| 19290 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ | 31730 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ |
| 19291 | .required_features = .{ .cmov, null, null, null }, | 31731 | .required_features = .{ .cmov, null, null, null }, |
| 19292 | .src_constraints = .{ .{ .int = .byte }, .any }, | 31732 | .src_constraints = .{ .{ .int = .byte }, .any, .any }, |
| 19293 | .patterns = &.{ | 31733 | .patterns = &.{ |
| 19294 | .{ .src = .{ .to_gpr, .none } }, | 31734 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 19295 | }, | 31735 | }, |
| 19296 | .dst_temps = .{.{ .rc = .general_purpose }}, | 31736 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 19297 | .clobbers = .{ .eflags = true }, | 31737 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19301,9 +31741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19301,9 +31741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19301 | .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ }, | 31741 | .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ }, |
| 19302 | } }, | 31742 | } }, |
| 19303 | }, .{ | 31743 | }, .{ |
| 19304 | .src_constraints = .{ .{ .int = .byte }, .any }, | 31744 | .src_constraints = .{ .{ .int = .byte }, .any, .any }, |
| 19305 | .patterns = &.{ | 31745 | .patterns = &.{ |
| 19306 | .{ .src = .{ .mut_mem, .none } }, | 31746 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 19307 | }, | 31747 | }, |
| 19308 | .dst_temps = .{.{ .ref = .src0 }}, | 31748 | .dst_temps = .{.{ .ref = .src0 }}, |
| 19309 | .clobbers = .{ .eflags = true }, | 31749 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19313,9 +31753,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19313,9 +31753,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19313 | .{ ._, ._, .neg, .dst0b, ._, ._, ._ }, | 31753 | .{ ._, ._, .neg, .dst0b, ._, ._, ._ }, |
| 19314 | } }, | 31754 | } }, |
| 19315 | }, .{ | 31755 | }, .{ |
| 19316 | .src_constraints = .{ .{ .int = .byte }, .any }, | 31756 | .src_constraints = .{ .{ .int = .byte }, .any, .any }, |
| 19317 | .patterns = &.{ | 31757 | .patterns = &.{ |
| 19318 | .{ .src = .{ .to_mut_gpr, .none } }, | 31758 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 19319 | }, | 31759 | }, |
| 19320 | .dst_temps = .{.{ .ref = .src0 }}, | 31760 | .dst_temps = .{.{ .ref = .src0 }}, |
| 19321 | .clobbers = .{ .eflags = true }, | 31761 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19326,9 +31766,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19326,9 +31766,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19326 | } }, | 31766 | } }, |
| 19327 | }, .{ | 31767 | }, .{ |
| 19328 | .required_features = .{ .cmov, null, null, null }, | 31768 | .required_features = .{ .cmov, null, null, null }, |
| 19329 | .src_constraints = .{ .{ .int = .word }, .any }, | 31769 | .src_constraints = .{ .{ .int = .word }, .any, .any }, |
| 19330 | .patterns = &.{ | 31770 | .patterns = &.{ |
| 19331 | .{ .src = .{ .mem, .none } }, | 31771 | .{ .src = .{ .mem, .none, .none } }, |
| 19332 | }, | 31772 | }, |
| 19333 | .dst_temps = .{.{ .rc = .general_purpose }}, | 31773 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 19334 | .clobbers = .{ .eflags = true }, | 31774 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19339,9 +31779,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19339,9 +31779,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19339 | } }, | 31779 | } }, |
| 19340 | }, .{ | 31780 | }, .{ |
| 19341 | .required_features = .{ .cmov, null, null, null }, | 31781 | .required_features = .{ .cmov, null, null, null }, |
| 19342 | .src_constraints = .{ .{ .int = .word }, .any }, | 31782 | .src_constraints = .{ .{ .int = .word }, .any, .any }, |
| 19343 | .patterns = &.{ | 31783 | .patterns = &.{ |
| 19344 | .{ .src = .{ .to_gpr, .none } }, | 31784 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 19345 | }, | 31785 | }, |
| 19346 | .dst_temps = .{.{ .rc = .general_purpose }}, | 31786 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 19347 | .clobbers = .{ .eflags = true }, | 31787 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19351,9 +31791,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19351,9 +31791,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19351 | .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ }, | 31791 | .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ }, |
| 19352 | } }, | 31792 | } }, |
| 19353 | }, .{ | 31793 | }, .{ |
| 19354 | .src_constraints = .{ .{ .int = .word }, .any }, | 31794 | .src_constraints = .{ .{ .int = .word }, .any, .any }, |
| 19355 | .patterns = &.{ | 31795 | .patterns = &.{ |
| 19356 | .{ .src = .{ .mut_mem, .none } }, | 31796 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 19357 | }, | 31797 | }, |
| 19358 | .dst_temps = .{.{ .ref = .src0 }}, | 31798 | .dst_temps = .{.{ .ref = .src0 }}, |
| 19359 | .clobbers = .{ .eflags = true }, | 31799 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19363,9 +31803,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19363,9 +31803,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19363 | .{ ._, ._, .neg, .dst0d, ._, ._, ._ }, | 31803 | .{ ._, ._, .neg, .dst0d, ._, ._, ._ }, |
| 19364 | } }, | 31804 | } }, |
| 19365 | }, .{ | 31805 | }, .{ |
| 19366 | .src_constraints = .{ .{ .int = .word }, .any }, | 31806 | .src_constraints = .{ .{ .int = .word }, .any, .any }, |
| 19367 | .patterns = &.{ | 31807 | .patterns = &.{ |
| 19368 | .{ .src = .{ .to_mut_gpr, .none } }, | 31808 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 19369 | }, | 31809 | }, |
| 19370 | .dst_temps = .{.{ .ref = .src0 }}, | 31810 | .dst_temps = .{.{ .ref = .src0 }}, |
| 19371 | .clobbers = .{ .eflags = true }, | 31811 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19376,10 +31816,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19376,10 +31816,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19376 | } }, | 31816 | } }, |
| 19377 | }, .{ | 31817 | }, .{ |
| 19378 | .required_features = .{ .cmov, null, null, null }, | 31818 | .required_features = .{ .cmov, null, null, null }, |
| 19379 | .src_constraints = .{ .{ .int = .dword }, .any }, | 31819 | .src_constraints = .{ .{ .int = .dword }, .any, .any }, |
| 19380 | .patterns = &.{ | 31820 | .patterns = &.{ |
| 19381 | .{ .src = .{ .mem, .none } }, | 31821 | .{ .src = .{ .mem, .none, .none } }, |
| 19382 | .{ .src = .{ .to_gpr, .none } }, | 31822 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 19383 | }, | 31823 | }, |
| 19384 | .dst_temps = .{.{ .rc = .general_purpose }}, | 31824 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 19385 | .clobbers = .{ .eflags = true }, | 31825 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19389,9 +31829,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19389,9 +31829,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19389 | .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ }, | 31829 | .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ }, |
| 19390 | } }, | 31830 | } }, |
| 19391 | }, .{ | 31831 | }, .{ |
| 19392 | .src_constraints = .{ .{ .int = .dword }, .any }, | 31832 | .src_constraints = .{ .{ .int = .dword }, .any, .any }, |
| 19393 | .patterns = &.{ | 31833 | .patterns = &.{ |
| 19394 | .{ .src = .{ .mut_mem, .none } }, | 31834 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 19395 | }, | 31835 | }, |
| 19396 | .dst_temps = .{.{ .ref = .src0 }}, | 31836 | .dst_temps = .{.{ .ref = .src0 }}, |
| 19397 | .clobbers = .{ .eflags = true }, | 31837 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19401,9 +31841,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19401,9 +31841,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19401 | .{ ._, ._, .neg, .dst0d, ._, ._, ._ }, | 31841 | .{ ._, ._, .neg, .dst0d, ._, ._, ._ }, |
| 19402 | } }, | 31842 | } }, |
| 19403 | }, .{ | 31843 | }, .{ |
| 19404 | .src_constraints = .{ .{ .int = .dword }, .any }, | 31844 | .src_constraints = .{ .{ .int = .dword }, .any, .any }, |
| 19405 | .patterns = &.{ | 31845 | .patterns = &.{ |
| 19406 | .{ .src = .{ .to_mut_gpr, .none } }, | 31846 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 19407 | }, | 31847 | }, |
| 19408 | .dst_temps = .{.{ .ref = .src0 }}, | 31848 | .dst_temps = .{.{ .ref = .src0 }}, |
| 19409 | .clobbers = .{ .eflags = true }, | 31849 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19414,10 +31854,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19414,10 +31854,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19414 | } }, | 31854 | } }, |
| 19415 | }, .{ | 31855 | }, .{ |
| 19416 | .required_features = .{ .@"64bit", .cmov, null, null }, | 31856 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| 19417 | .src_constraints = .{ .{ .int = .qword }, .any }, | 31857 | .src_constraints = .{ .{ .int = .qword }, .any, .any }, |
| 19418 | .patterns = &.{ | 31858 | .patterns = &.{ |
| 19419 | .{ .src = .{ .mem, .none } }, | 31859 | .{ .src = .{ .mem, .none, .none } }, |
| 19420 | .{ .src = .{ .to_gpr, .none } }, | 31860 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 19421 | }, | 31861 | }, |
| 19422 | .dst_temps = .{.{ .rc = .general_purpose }}, | 31862 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 19423 | .clobbers = .{ .eflags = true }, | 31863 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19428,9 +31868,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19428,9 +31868,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19428 | } }, | 31868 | } }, |
| 19429 | }, .{ | 31869 | }, .{ |
| 19430 | .required_features = .{ .@"64bit", null, null, null }, | 31870 | .required_features = .{ .@"64bit", null, null, null }, |
| 19431 | .src_constraints = .{ .{ .int = .qword }, .any }, | 31871 | .src_constraints = .{ .{ .int = .qword }, .any, .any }, |
| 19432 | .patterns = &.{ | 31872 | .patterns = &.{ |
| 19433 | .{ .src = .{ .mut_mem, .none } }, | 31873 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 19434 | }, | 31874 | }, |
| 19435 | .dst_temps = .{.{ .ref = .src0 }}, | 31875 | .dst_temps = .{.{ .ref = .src0 }}, |
| 19436 | .clobbers = .{ .eflags = true }, | 31876 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19441,9 +31881,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19441,9 +31881,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19441 | } }, | 31881 | } }, |
| 19442 | }, .{ | 31882 | }, .{ |
| 19443 | .required_features = .{ .@"64bit", null, null, null }, | 31883 | .required_features = .{ .@"64bit", null, null, null }, |
| 19444 | .src_constraints = .{ .{ .int = .qword }, .any }, | 31884 | .src_constraints = .{ .{ .int = .qword }, .any, .any }, |
| 19445 | .patterns = &.{ | 31885 | .patterns = &.{ |
| 19446 | .{ .src = .{ .to_mut_gpr, .none } }, | 31886 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 19447 | }, | 31887 | }, |
| 19448 | .dst_temps = .{.{ .ref = .src0 }}, | 31888 | .dst_temps = .{.{ .ref = .src0 }}, |
| 19449 | .clobbers = .{ .eflags = true }, | 31889 | .clobbers = .{ .eflags = true }, |
| ... | @@ -19454,9 +31894,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19454,9 +31894,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19454 | } }, | 31894 | } }, |
| 19455 | }, .{ | 31895 | }, .{ |
| 19456 | .required_features = .{ .@"64bit", null, null, null }, | 31896 | .required_features = .{ .@"64bit", null, null, null }, |
| 19457 | .src_constraints = .{ .any_int, .any }, | 31897 | .src_constraints = .{ .any_int, .any, .any }, |
| 19458 | .patterns = &.{ | 31898 | .patterns = &.{ |
| 19459 | .{ .src = .{ .to_mem, .none } }, | 31899 | .{ .src = .{ .to_mem, .none, .none } }, |
| 19460 | }, | 31900 | }, |
| 19461 | .extra_temps = .{ | 31901 | .extra_temps = .{ |
| 19462 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 31902 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -19487,10 +31927,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19487,10 +31927,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19487 | } }, | 31927 | } }, |
| 19488 | }, .{ | 31928 | }, .{ |
| 19489 | .required_features = .{ .mmx, .ssse3, null, null }, | 31929 | .required_features = .{ .mmx, .ssse3, null, null }, |
| 19490 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any }, | 31930 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| 19491 | .patterns = &.{ | 31931 | .patterns = &.{ |
| 19492 | .{ .src = .{ .mem, .none } }, | 31932 | .{ .src = .{ .mem, .none, .none } }, |
| 19493 | .{ .src = .{ .to_mm, .none } }, | 31933 | .{ .src = .{ .to_mm, .none, .none } }, |
| 19494 | }, | 31934 | }, |
| 19495 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }}, | 31935 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }}, |
| 19496 | .each = .{ .once = &.{ | 31936 | .each = .{ .once = &.{ |
| ... | @@ -19498,10 +31938,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19498,10 +31938,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19498 | } }, | 31938 | } }, |
| 19499 | }, .{ | 31939 | }, .{ |
| 19500 | .required_features = .{ .mmx, .ssse3, null, null }, | 31940 | .required_features = .{ .mmx, .ssse3, null, null }, |
| 19501 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any }, | 31941 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| 19502 | .patterns = &.{ | 31942 | .patterns = &.{ |
| 19503 | .{ .src = .{ .mem, .none } }, | 31943 | .{ .src = .{ .mem, .none, .none } }, |
| 19504 | .{ .src = .{ .to_mm, .none } }, | 31944 | .{ .src = .{ .to_mm, .none, .none } }, |
| 19505 | }, | 31945 | }, |
| 19506 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }}, | 31946 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }}, |
| 19507 | .each = .{ .once = &.{ | 31947 | .each = .{ .once = &.{ |
| ... | @@ -19509,10 +31949,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19509,10 +31949,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19509 | } }, | 31949 | } }, |
| 19510 | }, .{ | 31950 | }, .{ |
| 19511 | .required_features = .{ .mmx, .ssse3, null, null }, | 31951 | .required_features = .{ .mmx, .ssse3, null, null }, |
| 19512 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any }, | 31952 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| 19513 | .patterns = &.{ | 31953 | .patterns = &.{ |
| 19514 | .{ .src = .{ .mem, .none } }, | 31954 | .{ .src = .{ .mem, .none, .none } }, |
| 19515 | .{ .src = .{ .to_mm, .none } }, | 31955 | .{ .src = .{ .to_mm, .none, .none } }, |
| 19516 | }, | 31956 | }, |
| 19517 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }}, | 31957 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }}, |
| 19518 | .each = .{ .once = &.{ | 31958 | .each = .{ .once = &.{ |
| ... | @@ -19520,10 +31960,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19520,10 +31960,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19520 | } }, | 31960 | } }, |
| 19521 | }, .{ | 31961 | }, .{ |
| 19522 | .required_features = .{ .ssse3, null, null, null }, | 31962 | .required_features = .{ .ssse3, null, null, null }, |
| 19523 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any }, | 31963 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 19524 | .patterns = &.{ | 31964 | .patterns = &.{ |
| 19525 | .{ .src = .{ .mem, .none } }, | 31965 | .{ .src = .{ .mem, .none, .none } }, |
| 19526 | .{ .src = .{ .to_sse, .none } }, | 31966 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19527 | }, | 31967 | }, |
| 19528 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 31968 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19529 | .each = .{ .once = &.{ | 31969 | .each = .{ .once = &.{ |
| ... | @@ -19531,10 +31971,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19531,10 +31971,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19531 | } }, | 31971 | } }, |
| 19532 | }, .{ | 31972 | }, .{ |
| 19533 | .required_features = .{ .ssse3, null, null, null }, | 31973 | .required_features = .{ .ssse3, null, null, null }, |
| 19534 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, | 31974 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 19535 | .patterns = &.{ | 31975 | .patterns = &.{ |
| 19536 | .{ .src = .{ .mem, .none } }, | 31976 | .{ .src = .{ .mem, .none, .none } }, |
| 19537 | .{ .src = .{ .to_sse, .none } }, | 31977 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19538 | }, | 31978 | }, |
| 19539 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 31979 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19540 | .each = .{ .once = &.{ | 31980 | .each = .{ .once = &.{ |
| ... | @@ -19542,10 +31982,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19542,10 +31982,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19542 | } }, | 31982 | } }, |
| 19543 | }, .{ | 31983 | }, .{ |
| 19544 | .required_features = .{ .ssse3, null, null, null }, | 31984 | .required_features = .{ .ssse3, null, null, null }, |
| 19545 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | 31985 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 19546 | .patterns = &.{ | 31986 | .patterns = &.{ |
| 19547 | .{ .src = .{ .mem, .none } }, | 31987 | .{ .src = .{ .mem, .none, .none } }, |
| 19548 | .{ .src = .{ .to_sse, .none } }, | 31988 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19549 | }, | 31989 | }, |
| 19550 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 31990 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19551 | .each = .{ .once = &.{ | 31991 | .each = .{ .once = &.{ |
| ... | @@ -19553,10 +31993,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19553,10 +31993,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19553 | } }, | 31993 | } }, |
| 19554 | }, .{ | 31994 | }, .{ |
| 19555 | .required_features = .{ .avx, null, null, null }, | 31995 | .required_features = .{ .avx, null, null, null }, |
| 19556 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any }, | 31996 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 19557 | .patterns = &.{ | 31997 | .patterns = &.{ |
| 19558 | .{ .src = .{ .mem, .none } }, | 31998 | .{ .src = .{ .mem, .none, .none } }, |
| 19559 | .{ .src = .{ .to_sse, .none } }, | 31999 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19560 | }, | 32000 | }, |
| 19561 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 32001 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19562 | .each = .{ .once = &.{ | 32002 | .each = .{ .once = &.{ |
| ... | @@ -19564,10 +32004,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19564,10 +32004,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19564 | } }, | 32004 | } }, |
| 19565 | }, .{ | 32005 | }, .{ |
| 19566 | .required_features = .{ .avx, null, null, null }, | 32006 | .required_features = .{ .avx, null, null, null }, |
| 19567 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, | 32007 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 19568 | .patterns = &.{ | 32008 | .patterns = &.{ |
| 19569 | .{ .src = .{ .mem, .none } }, | 32009 | .{ .src = .{ .mem, .none, .none } }, |
| 19570 | .{ .src = .{ .to_sse, .none } }, | 32010 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19571 | }, | 32011 | }, |
| 19572 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 32012 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19573 | .each = .{ .once = &.{ | 32013 | .each = .{ .once = &.{ |
| ... | @@ -19575,10 +32015,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19575,10 +32015,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19575 | } }, | 32015 | } }, |
| 19576 | }, .{ | 32016 | }, .{ |
| 19577 | .required_features = .{ .avx, null, null, null }, | 32017 | .required_features = .{ .avx, null, null, null }, |
| 19578 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | 32018 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 19579 | .patterns = &.{ | 32019 | .patterns = &.{ |
| 19580 | .{ .src = .{ .mem, .none } }, | 32020 | .{ .src = .{ .mem, .none, .none } }, |
| 19581 | .{ .src = .{ .to_sse, .none } }, | 32021 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19582 | }, | 32022 | }, |
| 19583 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 32023 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19584 | .each = .{ .once = &.{ | 32024 | .each = .{ .once = &.{ |
| ... | @@ -19586,10 +32026,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19586,10 +32026,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19586 | } }, | 32026 | } }, |
| 19587 | }, .{ | 32027 | }, .{ |
| 19588 | .required_features = .{ .avx2, null, null, null }, | 32028 | .required_features = .{ .avx2, null, null, null }, |
| 19589 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any }, | 32029 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| 19590 | .patterns = &.{ | 32030 | .patterns = &.{ |
| 19591 | .{ .src = .{ .mem, .none } }, | 32031 | .{ .src = .{ .mem, .none, .none } }, |
| 19592 | .{ .src = .{ .to_sse, .none } }, | 32032 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19593 | }, | 32033 | }, |
| 19594 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 32034 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19595 | .each = .{ .once = &.{ | 32035 | .each = .{ .once = &.{ |
| ... | @@ -19597,10 +32037,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19597,10 +32037,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19597 | } }, | 32037 | } }, |
| 19598 | }, .{ | 32038 | }, .{ |
| 19599 | .required_features = .{ .avx2, null, null, null }, | 32039 | .required_features = .{ .avx2, null, null, null }, |
| 19600 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any }, | 32040 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| 19601 | .patterns = &.{ | 32041 | .patterns = &.{ |
| 19602 | .{ .src = .{ .mem, .none } }, | 32042 | .{ .src = .{ .mem, .none, .none } }, |
| 19603 | .{ .src = .{ .to_sse, .none } }, | 32043 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19604 | }, | 32044 | }, |
| 19605 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 32045 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19606 | .each = .{ .once = &.{ | 32046 | .each = .{ .once = &.{ |
| ... | @@ -19608,10 +32048,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19608,10 +32048,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19608 | } }, | 32048 | } }, |
| 19609 | }, .{ | 32049 | }, .{ |
| 19610 | .required_features = .{ .avx2, null, null, null }, | 32050 | .required_features = .{ .avx2, null, null, null }, |
| 19611 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any }, | 32051 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| 19612 | .patterns = &.{ | 32052 | .patterns = &.{ |
| 19613 | .{ .src = .{ .mem, .none } }, | 32053 | .{ .src = .{ .mem, .none, .none } }, |
| 19614 | .{ .src = .{ .to_sse, .none } }, | 32054 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19615 | }, | 32055 | }, |
| 19616 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 32056 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19617 | .each = .{ .once = &.{ | 32057 | .each = .{ .once = &.{ |
| ... | @@ -19619,9 +32059,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19619,9 +32059,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19619 | } }, | 32059 | } }, |
| 19620 | }, .{ | 32060 | }, .{ |
| 19621 | .required_features = .{ .avx2, null, null, null }, | 32061 | .required_features = .{ .avx2, null, null, null }, |
| 19622 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .byte } }, .any }, | 32062 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| 19623 | .patterns = &.{ | 32063 | .patterns = &.{ |
| 19624 | .{ .src = .{ .to_mem, .none } }, | 32064 | .{ .src = .{ .to_mem, .none, .none } }, |
| 19625 | }, | 32065 | }, |
| 19626 | .extra_temps = .{ | 32066 | .extra_temps = .{ |
| 19627 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32067 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -19645,9 +32085,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19645,9 +32085,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19645 | } }, | 32085 | } }, |
| 19646 | }, .{ | 32086 | }, .{ |
| 19647 | .required_features = .{ .avx2, null, null, null }, | 32087 | .required_features = .{ .avx2, null, null, null }, |
| 19648 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }, .any }, | 32088 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| 19649 | .patterns = &.{ | 32089 | .patterns = &.{ |
| 19650 | .{ .src = .{ .to_mem, .none } }, | 32090 | .{ .src = .{ .to_mem, .none, .none } }, |
| 19651 | }, | 32091 | }, |
| 19652 | .extra_temps = .{ | 32092 | .extra_temps = .{ |
| 19653 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32093 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -19671,9 +32111,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19671,9 +32111,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19671 | } }, | 32111 | } }, |
| 19672 | }, .{ | 32112 | }, .{ |
| 19673 | .required_features = .{ .avx2, null, null, null }, | 32113 | .required_features = .{ .avx2, null, null, null }, |
| 19674 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any }, | 32114 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| 19675 | .patterns = &.{ | 32115 | .patterns = &.{ |
| 19676 | .{ .src = .{ .to_mem, .none } }, | 32116 | .{ .src = .{ .to_mem, .none, .none } }, |
| 19677 | }, | 32117 | }, |
| 19678 | .extra_temps = .{ | 32118 | .extra_temps = .{ |
| 19679 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32119 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -19697,9 +32137,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19697,9 +32137,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19697 | } }, | 32137 | } }, |
| 19698 | }, .{ | 32138 | }, .{ |
| 19699 | .required_features = .{ .avx, null, null, null }, | 32139 | .required_features = .{ .avx, null, null, null }, |
| 19700 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any }, | 32140 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 19701 | .patterns = &.{ | 32141 | .patterns = &.{ |
| 19702 | .{ .src = .{ .to_mem, .none } }, | 32142 | .{ .src = .{ .to_mem, .none, .none } }, |
| 19703 | }, | 32143 | }, |
| 19704 | .extra_temps = .{ | 32144 | .extra_temps = .{ |
| 19705 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32145 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -19723,9 +32163,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19723,9 +32163,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19723 | } }, | 32163 | } }, |
| 19724 | }, .{ | 32164 | }, .{ |
| 19725 | .required_features = .{ .avx, null, null, null }, | 32165 | .required_features = .{ .avx, null, null, null }, |
| 19726 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any }, | 32166 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 19727 | .patterns = &.{ | 32167 | .patterns = &.{ |
| 19728 | .{ .src = .{ .to_mem, .none } }, | 32168 | .{ .src = .{ .to_mem, .none, .none } }, |
| 19729 | }, | 32169 | }, |
| 19730 | .extra_temps = .{ | 32170 | .extra_temps = .{ |
| 19731 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32171 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -19749,9 +32189,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19749,9 +32189,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19749 | } }, | 32189 | } }, |
| 19750 | }, .{ | 32190 | }, .{ |
| 19751 | .required_features = .{ .avx, null, null, null }, | 32191 | .required_features = .{ .avx, null, null, null }, |
| 19752 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | 32192 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 19753 | .patterns = &.{ | 32193 | .patterns = &.{ |
| 19754 | .{ .src = .{ .to_mem, .none } }, | 32194 | .{ .src = .{ .to_mem, .none, .none } }, |
| 19755 | }, | 32195 | }, |
| 19756 | .extra_temps = .{ | 32196 | .extra_temps = .{ |
| 19757 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32197 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -19774,14 +32214,557 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19774,14 +32214,557 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19774 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 32214 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 19775 | } }, | 32215 | } }, |
| 19776 | }, .{ | 32216 | }, .{ |
| 19777 | .required_features = .{ .ssse3, null, null, null }, | 32217 | .required_features = .{ .ssse3, null, null, null }, |
| 19778 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any }, | 32218 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 32219 | .patterns = &.{ |
| | 32220 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32221 | }, |
| | 32222 | .extra_temps = .{ |
| | 32223 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32224 | .{ .kind = .{ .rc = .sse } }, |
| | 32225 | .unused, |
| | 32226 | .unused, |
| | 32227 | .unused, |
| | 32228 | .unused, |
| | 32229 | .unused, |
| | 32230 | .unused, |
| | 32231 | .unused, |
| | 32232 | }, |
| | 32233 | .dst_temps = .{.mem}, |
| | 32234 | .clobbers = .{ .eflags = true }, |
| | 32235 | .each = .{ .once = &.{ |
| | 32236 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32237 | .{ .@"0:", .p_b, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 32238 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 32239 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 32240 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32241 | } }, |
| | 32242 | }, .{ |
| | 32243 | .required_features = .{ .ssse3, null, null, null }, |
| | 32244 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 32245 | .patterns = &.{ |
| | 32246 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32247 | }, |
| | 32248 | .extra_temps = .{ |
| | 32249 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32250 | .{ .kind = .{ .rc = .sse } }, |
| | 32251 | .unused, |
| | 32252 | .unused, |
| | 32253 | .unused, |
| | 32254 | .unused, |
| | 32255 | .unused, |
| | 32256 | .unused, |
| | 32257 | .unused, |
| | 32258 | }, |
| | 32259 | .dst_temps = .{.mem}, |
| | 32260 | .clobbers = .{ .eflags = true }, |
| | 32261 | .each = .{ .once = &.{ |
| | 32262 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32263 | .{ .@"0:", .p_w, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 32264 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 32265 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 32266 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32267 | } }, |
| | 32268 | }, .{ |
| | 32269 | .required_features = .{ .ssse3, null, null, null }, |
| | 32270 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 32271 | .patterns = &.{ |
| | 32272 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32273 | }, |
| | 32274 | .extra_temps = .{ |
| | 32275 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32276 | .{ .kind = .{ .rc = .sse } }, |
| | 32277 | .unused, |
| | 32278 | .unused, |
| | 32279 | .unused, |
| | 32280 | .unused, |
| | 32281 | .unused, |
| | 32282 | .unused, |
| | 32283 | .unused, |
| | 32284 | }, |
| | 32285 | .dst_temps = .{.mem}, |
| | 32286 | .clobbers = .{ .eflags = true }, |
| | 32287 | .each = .{ .once = &.{ |
| | 32288 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32289 | .{ .@"0:", .p_d, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 32290 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 32291 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 32292 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32293 | } }, |
| | 32294 | }, .{ |
| | 32295 | .required_features = .{ .mmx, .ssse3, null, null }, |
| | 32296 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 32297 | .patterns = &.{ |
| | 32298 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32299 | }, |
| | 32300 | .extra_temps = .{ |
| | 32301 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32302 | .{ .kind = .{ .rc = .sse } }, |
| | 32303 | .unused, |
| | 32304 | .unused, |
| | 32305 | .unused, |
| | 32306 | .unused, |
| | 32307 | .unused, |
| | 32308 | .unused, |
| | 32309 | .unused, |
| | 32310 | }, |
| | 32311 | .dst_temps = .{.mem}, |
| | 32312 | .clobbers = .{ .eflags = true }, |
| | 32313 | .each = .{ .once = &.{ |
| | 32314 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32315 | .{ .@"0:", .p_b, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 32316 | .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| | 32317 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 32318 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32319 | } }, |
| | 32320 | }, .{ |
| | 32321 | .required_features = .{ .mmx, .ssse3, null, null }, |
| | 32322 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 32323 | .patterns = &.{ |
| | 32324 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32325 | }, |
| | 32326 | .extra_temps = .{ |
| | 32327 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32328 | .{ .kind = .{ .rc = .sse } }, |
| | 32329 | .unused, |
| | 32330 | .unused, |
| | 32331 | .unused, |
| | 32332 | .unused, |
| | 32333 | .unused, |
| | 32334 | .unused, |
| | 32335 | .unused, |
| | 32336 | }, |
| | 32337 | .dst_temps = .{.mem}, |
| | 32338 | .clobbers = .{ .eflags = true }, |
| | 32339 | .each = .{ .once = &.{ |
| | 32340 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32341 | .{ .@"0:", .p_w, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 32342 | .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| | 32343 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 32344 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32345 | } }, |
| | 32346 | }, .{ |
| | 32347 | .required_features = .{ .mmx, .ssse3, null, null }, |
| | 32348 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| | 32349 | .patterns = &.{ |
| | 32350 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32351 | }, |
| | 32352 | .extra_temps = .{ |
| | 32353 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32354 | .{ .kind = .{ .rc = .sse } }, |
| | 32355 | .unused, |
| | 32356 | .unused, |
| | 32357 | .unused, |
| | 32358 | .unused, |
| | 32359 | .unused, |
| | 32360 | .unused, |
| | 32361 | .unused, |
| | 32362 | }, |
| | 32363 | .dst_temps = .{.mem}, |
| | 32364 | .clobbers = .{ .eflags = true }, |
| | 32365 | .each = .{ .once = &.{ |
| | 32366 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32367 | .{ .@"0:", .p_d, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 32368 | .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| | 32369 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 32370 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32371 | } }, |
| | 32372 | }, .{ |
| | 32373 | .required_features = .{ .cmov, .slow_incdec, null, null }, |
| | 32374 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 32375 | .patterns = &.{ |
| | 32376 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32377 | }, |
| | 32378 | .extra_temps = .{ |
| | 32379 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32380 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 32381 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 32382 | .unused, |
| | 32383 | .unused, |
| | 32384 | .unused, |
| | 32385 | .unused, |
| | 32386 | .unused, |
| | 32387 | .unused, |
| | 32388 | }, |
| | 32389 | .dst_temps = .{.mem}, |
| | 32390 | .clobbers = .{ .eflags = true }, |
| | 32391 | .each = .{ .once = &.{ |
| | 32392 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32393 | .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 32394 | .{ ._, ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, |
| | 32395 | .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ }, |
| | 32396 | .{ ._, ._s, .cmov, .tmp1d, .tmp2d, ._, ._ }, |
| | 32397 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, |
| | 32398 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 32399 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32400 | } }, |
| | 32401 | }, .{ |
| | 32402 | .required_features = .{ .cmov, null, null, null }, |
| | 32403 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 32404 | .patterns = &.{ |
| | 32405 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32406 | }, |
| | 32407 | .extra_temps = .{ |
| | 32408 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32409 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 32410 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 32411 | .unused, |
| | 32412 | .unused, |
| | 32413 | .unused, |
| | 32414 | .unused, |
| | 32415 | .unused, |
| | 32416 | .unused, |
| | 32417 | }, |
| | 32418 | .dst_temps = .{.mem}, |
| | 32419 | .clobbers = .{ .eflags = true }, |
| | 32420 | .each = .{ .once = &.{ |
| | 32421 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32422 | .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 32423 | .{ ._, ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, |
| | 32424 | .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ }, |
| | 32425 | .{ ._, ._s, .cmov, .tmp1d, .tmp2d, ._, ._ }, |
| | 32426 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, |
| | 32427 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 32428 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 32429 | } }, |
| | 32430 | }, .{ |
| | 32431 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 32432 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 32433 | .patterns = &.{ |
| | 32434 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32435 | }, |
| | 32436 | .extra_temps = .{ |
| | 32437 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32438 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 32439 | .unused, |
| | 32440 | .unused, |
| | 32441 | .unused, |
| | 32442 | .unused, |
| | 32443 | .unused, |
| | 32444 | .unused, |
| | 32445 | .unused, |
| | 32446 | }, |
| | 32447 | .dst_temps = .{.mem}, |
| | 32448 | .clobbers = .{ .eflags = true }, |
| | 32449 | .each = .{ .once = &.{ |
| | 32450 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32451 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, |
| | 32452 | .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ }, |
| | 32453 | .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, |
| | 32454 | .{ ._, ._, .neg, .tmp1b, ._, ._, ._ }, |
| | 32455 | .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, |
| | 32456 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 32457 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32458 | } }, |
| | 32459 | }, .{ |
| | 32460 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 32461 | .patterns = &.{ |
| | 32462 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32463 | }, |
| | 32464 | .extra_temps = .{ |
| | 32465 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32466 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 32467 | .unused, |
| | 32468 | .unused, |
| | 32469 | .unused, |
| | 32470 | .unused, |
| | 32471 | .unused, |
| | 32472 | .unused, |
| | 32473 | .unused, |
| | 32474 | }, |
| | 32475 | .dst_temps = .{.mem}, |
| | 32476 | .clobbers = .{ .eflags = true }, |
| | 32477 | .each = .{ .once = &.{ |
| | 32478 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32479 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, |
| | 32480 | .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ }, |
| | 32481 | .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, |
| | 32482 | .{ ._, ._, .neg, .tmp1b, ._, ._, ._ }, |
| | 32483 | .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, |
| | 32484 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 32485 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 32486 | } }, |
| | 32487 | }, .{ |
| | 32488 | .required_features = .{ .cmov, null, null, null }, |
| | 32489 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 32490 | .patterns = &.{ |
| | 32491 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32492 | }, |
| | 32493 | .extra_temps = .{ |
| | 32494 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32495 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 32496 | .unused, |
| | 32497 | .unused, |
| | 32498 | .unused, |
| | 32499 | .unused, |
| | 32500 | .unused, |
| | 32501 | .unused, |
| | 32502 | .unused, |
| | 32503 | }, |
| | 32504 | .dst_temps = .{.mem}, |
| | 32505 | .clobbers = .{ .eflags = true }, |
| | 32506 | .each = .{ .once = &.{ |
| | 32507 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32508 | .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 32509 | .{ ._, ._, .sub, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ }, |
| | 32510 | .{ ._, ._s, .cmov, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ }, |
| | 32511 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, |
| | 32512 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 32513 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32514 | } }, |
| | 32515 | }, .{ |
| | 32516 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 32517 | .patterns = &.{ |
| | 32518 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32519 | }, |
| | 32520 | .extra_temps = .{ |
| | 32521 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32522 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 32523 | .unused, |
| | 32524 | .unused, |
| | 32525 | .unused, |
| | 32526 | .unused, |
| | 32527 | .unused, |
| | 32528 | .unused, |
| | 32529 | .unused, |
| | 32530 | }, |
| | 32531 | .dst_temps = .{.mem}, |
| | 32532 | .clobbers = .{ .eflags = true }, |
| | 32533 | .each = .{ .once = &.{ |
| | 32534 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32535 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, |
| | 32536 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, |
| | 32537 | .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, |
| | 32538 | .{ ._, ._, .neg, .tmp1d, ._, ._, ._ }, |
| | 32539 | .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, |
| | 32540 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 32541 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32542 | } }, |
| | 32543 | }, .{ |
| | 32544 | .required_features = .{ .cmov, null, null, null }, |
| | 32545 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 32546 | .patterns = &.{ |
| | 32547 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32548 | }, |
| | 32549 | .extra_temps = .{ |
| | 32550 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32551 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 32552 | .unused, |
| | 32553 | .unused, |
| | 32554 | .unused, |
| | 32555 | .unused, |
| | 32556 | .unused, |
| | 32557 | .unused, |
| | 32558 | .unused, |
| | 32559 | }, |
| | 32560 | .dst_temps = .{.mem}, |
| | 32561 | .clobbers = .{ .eflags = true }, |
| | 32562 | .each = .{ .once = &.{ |
| | 32563 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32564 | .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 32565 | .{ ._, ._, .sub, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, |
| | 32566 | .{ ._, ._s, .cmov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, |
| | 32567 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ }, |
| | 32568 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 32569 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32570 | } }, |
| | 32571 | }, .{ |
| | 32572 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 32573 | .patterns = &.{ |
| | 32574 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32575 | }, |
| | 32576 | .extra_temps = .{ |
| | 32577 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32578 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 32579 | .unused, |
| | 32580 | .unused, |
| | 32581 | .unused, |
| | 32582 | .unused, |
| | 32583 | .unused, |
| | 32584 | .unused, |
| | 32585 | .unused, |
| | 32586 | }, |
| | 32587 | .dst_temps = .{.mem}, |
| | 32588 | .clobbers = .{ .eflags = true }, |
| | 32589 | .each = .{ .once = &.{ |
| | 32590 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32591 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, |
| | 32592 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, |
| | 32593 | .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, |
| | 32594 | .{ ._, ._, .neg, .tmp1d, ._, ._, ._ }, |
| | 32595 | .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ }, |
| | 32596 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 32597 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32598 | } }, |
| | 32599 | }, .{ |
| | 32600 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| | 32601 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 32602 | .patterns = &.{ |
| | 32603 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32604 | }, |
| | 32605 | .extra_temps = .{ |
| | 32606 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32607 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 32608 | .unused, |
| | 32609 | .unused, |
| | 32610 | .unused, |
| | 32611 | .unused, |
| | 32612 | .unused, |
| | 32613 | .unused, |
| | 32614 | .unused, |
| | 32615 | }, |
| | 32616 | .dst_temps = .{.mem}, |
| | 32617 | .clobbers = .{ .eflags = true }, |
| | 32618 | .each = .{ .once = &.{ |
| | 32619 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32620 | .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 32621 | .{ ._, ._, .sub, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 32622 | .{ ._, ._s, .cmov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 32623 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| | 32624 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 32625 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32626 | } }, |
| | 32627 | }, .{ |
| | 32628 | .required_features = .{ .@"64bit", null, null, null }, |
| | 32629 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 32630 | .patterns = &.{ |
| | 32631 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32632 | }, |
| | 32633 | .extra_temps = .{ |
| | 32634 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32635 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 32636 | .unused, |
| | 32637 | .unused, |
| | 32638 | .unused, |
| | 32639 | .unused, |
| | 32640 | .unused, |
| | 32641 | .unused, |
| | 32642 | .unused, |
| | 32643 | }, |
| | 32644 | .dst_temps = .{.mem}, |
| | 32645 | .clobbers = .{ .eflags = true }, |
| | 32646 | .each = .{ .once = &.{ |
| | 32647 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 32648 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 32649 | .{ ._, ._, .@"test", .tmp1q, .tmp1q, ._, ._ }, |
| | 32650 | .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, |
| | 32651 | .{ ._, ._, .neg, .tmp1q, ._, ._, ._ }, |
| | 32652 | .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| | 32653 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 32654 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 32655 | } }, |
| | 32656 | }, .{ |
| | 32657 | .required_features = .{ .@"64bit", null, null, null }, |
| | 32658 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| | 32659 | .patterns = &.{ |
| | 32660 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 32661 | }, |
| | 32662 | .extra_temps = .{ |
| | 32663 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 32664 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 32665 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| | 32666 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 32667 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| | 32668 | .unused, |
| | 32669 | .unused, |
| | 32670 | .unused, |
| | 32671 | .unused, |
| | 32672 | }, |
| | 32673 | .dst_temps = .{.mem}, |
| | 32674 | .clobbers = .{ .eflags = true }, |
| | 32675 | .each = .{ .once = &.{ |
| | 32676 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 32677 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size), ._, ._ }, |
| | 32678 | .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_src0_elem_size, -8), ._, ._ }, |
| | 32679 | .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ }, |
| | 32680 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| | 32681 | .{ .@"1:", ._, .mov, .tmp4q, .memi(.src0q, .tmp0), ._, ._ }, |
| | 32682 | .{ ._, ._, .xor, .tmp4q, .tmp2q, ._, ._ }, |
| | 32683 | .{ ._, ._r, .sh, .tmp3b, .ui(1), ._, ._ }, |
| | 32684 | .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ }, |
| | 32685 | .{ ._, ._c, .set, .tmp3b, ._, ._, ._ }, |
| | 32686 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ }, |
| | 32687 | .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ }, |
| | 32688 | .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ }, |
| | 32689 | .{ ._, ._a, .j, .@"1b", ._, ._, ._ }, |
| | 32690 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ }, |
| | 32691 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| | 32692 | } }, |
| | 32693 | }, .{ |
| | 32694 | .required_features = .{ .avx, null, null, null }, |
| | 32695 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 32696 | .patterns = &.{ |
| | 32697 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 32698 | }, |
| | 32699 | .extra_temps = .{ |
| | 32700 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 32701 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| | 32702 | .unused, |
| | 32703 | .unused, |
| | 32704 | .unused, |
| | 32705 | .unused, |
| | 32706 | .unused, |
| | 32707 | .unused, |
| | 32708 | .unused, |
| | 32709 | }, |
| | 32710 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 32711 | .each = .{ .once = &.{ |
| | 32712 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 32713 | .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| | 32714 | } }, |
| | 32715 | }, .{ |
| | 32716 | .required_features = .{ .sse, null, null, null }, |
| | 32717 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 32718 | .patterns = &.{ |
| | 32719 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 32720 | }, |
| | 32721 | .extra_temps = .{ |
| | 32722 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 32723 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| | 32724 | .unused, |
| | 32725 | .unused, |
| | 32726 | .unused, |
| | 32727 | .unused, |
| | 32728 | .unused, |
| | 32729 | .unused, |
| | 32730 | .unused, |
| | 32731 | }, |
| | 32732 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 32733 | .each = .{ .once = &.{ |
| | 32734 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 32735 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 32736 | } }, |
| | 32737 | }, .{ |
| | 32738 | .required_features = .{ .avx, null, null, null }, |
| | 32739 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 32740 | .patterns = &.{ |
| | 32741 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 32742 | }, |
| | 32743 | .extra_temps = .{ |
| | 32744 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 32745 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| | 32746 | .unused, |
| | 32747 | .unused, |
| | 32748 | .unused, |
| | 32749 | .unused, |
| | 32750 | .unused, |
| | 32751 | .unused, |
| | 32752 | .unused, |
| | 32753 | }, |
| | 32754 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 32755 | .each = .{ .once = &.{ |
| | 32756 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 32757 | .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| | 32758 | } }, |
| | 32759 | }, .{ |
| | 32760 | .required_features = .{ .avx, null, null, null }, |
| | 32761 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 19779 | .patterns = &.{ | 32762 | .patterns = &.{ |
| 19780 | .{ .src = .{ .to_mem, .none } }, | 32763 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19781 | }, | 32764 | }, |
| 19782 | .extra_temps = .{ | 32765 | .extra_temps = .{ |
| 19783 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32766 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 19784 | .{ .kind = .{ .rc = .sse } }, | 32767 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 19785 | .unused, | 32768 | .unused, |
| 19786 | .unused, | 32769 | .unused, |
| 19787 | .unused, | 32770 | .unused, |
| ... | @@ -19790,24 +32773,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19790,24 +32773,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19790 | .unused, | 32773 | .unused, |
| 19791 | .unused, | 32774 | .unused, |
| 19792 | }, | 32775 | }, |
| 19793 | .dst_temps = .{.mem}, | 32776 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19794 | .clobbers = .{ .eflags = true }, | | |
| 19795 | .each = .{ .once = &.{ | 32777 | .each = .{ .once = &.{ |
| 19796 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 32778 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 19797 | .{ .@"0:", .p_b, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 32779 | .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 19798 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 19799 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 19800 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 19801 | } }, | 32780 | } }, |
| 19802 | }, .{ | 32781 | }, .{ |
| 19803 | .required_features = .{ .ssse3, null, null, null }, | 32782 | .required_features = .{ .sse2, null, null, null }, |
| 19804 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any }, | 32783 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 19805 | .patterns = &.{ | 32784 | .patterns = &.{ |
| 19806 | .{ .src = .{ .to_mem, .none } }, | 32785 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 19807 | }, | 32786 | }, |
| 19808 | .extra_temps = .{ | 32787 | .extra_temps = .{ |
| 19809 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32788 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 19810 | .{ .kind = .{ .rc = .sse } }, | 32789 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 19811 | .unused, | 32790 | .unused, |
| 19812 | .unused, | 32791 | .unused, |
| 19813 | .unused, | 32792 | .unused, |
| ... | @@ -19816,24 +32795,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19816,24 +32795,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19816 | .unused, | 32795 | .unused, |
| 19817 | .unused, | 32796 | .unused, |
| 19818 | }, | 32797 | }, |
| 19819 | .dst_temps = .{.mem}, | 32798 | .dst_temps = .{.{ .ref = .src0 }}, |
| 19820 | .clobbers = .{ .eflags = true }, | | |
| 19821 | .each = .{ .once = &.{ | 32799 | .each = .{ .once = &.{ |
| 19822 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 32800 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 19823 | .{ .@"0:", .p_w, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 32801 | .{ ._, ._pd, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 19824 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 19825 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 19826 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 19827 | } }, | 32802 | } }, |
| 19828 | }, .{ | 32803 | }, .{ |
| 19829 | .required_features = .{ .ssse3, null, null, null }, | 32804 | .required_features = .{ .avx, null, null, null }, |
| 19830 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | 32805 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| 19831 | .patterns = &.{ | 32806 | .patterns = &.{ |
| 19832 | .{ .src = .{ .to_mem, .none } }, | 32807 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19833 | }, | 32808 | }, |
| 19834 | .extra_temps = .{ | 32809 | .extra_temps = .{ |
| 19835 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32810 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 19836 | .{ .kind = .{ .rc = .sse } }, | 32811 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 19837 | .unused, | 32812 | .unused, |
| 19838 | .unused, | 32813 | .unused, |
| 19839 | .unused, | 32814 | .unused, |
| ... | @@ -19842,24 +32817,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19842,24 +32817,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19842 | .unused, | 32817 | .unused, |
| 19843 | .unused, | 32818 | .unused, |
| 19844 | }, | 32819 | }, |
| 19845 | .dst_temps = .{.mem}, | 32820 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19846 | .clobbers = .{ .eflags = true }, | | |
| 19847 | .each = .{ .once = &.{ | 32821 | .each = .{ .once = &.{ |
| 19848 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 32822 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 19849 | .{ .@"0:", .p_d, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 32823 | .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 19850 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 19851 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 19852 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 19853 | } }, | 32824 | } }, |
| 19854 | }, .{ | 32825 | }, .{ |
| 19855 | .required_features = .{ .mmx, .ssse3, null, null }, | 32826 | .required_features = .{ .x87, null, null, null }, |
| 19856 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any }, | 32827 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| 19857 | .patterns = &.{ | 32828 | .patterns = &.{ |
| 19858 | .{ .src = .{ .to_mem, .none } }, | 32829 | .{ .src = .{ .mem, .none, .none } }, |
| | 32830 | .{ .src = .{ .to_x87, .none, .none } }, |
| 19859 | }, | 32831 | }, |
| 19860 | .extra_temps = .{ | 32832 | .extra_temps = .{ |
| 19861 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32833 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 19862 | .{ .kind = .{ .rc = .sse } }, | 32834 | .unused, |
| 19863 | .unused, | 32835 | .unused, |
| 19864 | .unused, | 32836 | .unused, |
| 19865 | .unused, | 32837 | .unused, |
| ... | @@ -19868,24 +32840,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19868,24 +32840,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19868 | .unused, | 32840 | .unused, |
| 19869 | .unused, | 32841 | .unused, |
| 19870 | }, | 32842 | }, |
| 19871 | .dst_temps = .{.mem}, | 32843 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }}, |
| 19872 | .clobbers = .{ .eflags = true }, | | |
| 19873 | .each = .{ .once = &.{ | 32844 | .each = .{ .once = &.{ |
| 19874 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 32845 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 19875 | .{ .@"0:", .p_b, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 32846 | .{ ._, .f_, .abs, ._, ._, ._, ._ }, |
| 19876 | .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, | 32847 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 19877 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 19878 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 19879 | } }, | 32848 | } }, |
| 19880 | }, .{ | 32849 | }, .{ |
| 19881 | .required_features = .{ .mmx, .ssse3, null, null }, | 32850 | .required_features = .{ .avx, null, null, null }, |
| 19882 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any }, | 32851 | .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any }, |
| 19883 | .patterns = &.{ | 32852 | .patterns = &.{ |
| 19884 | .{ .src = .{ .to_mem, .none } }, | 32853 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19885 | }, | 32854 | }, |
| 19886 | .extra_temps = .{ | 32855 | .extra_temps = .{ |
| 19887 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32856 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 19888 | .{ .kind = .{ .rc = .sse } }, | 32857 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 19889 | .unused, | 32858 | .unused, |
| 19890 | .unused, | 32859 | .unused, |
| 19891 | .unused, | 32860 | .unused, |
| ... | @@ -19894,24 +32863,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19894,24 +32863,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19894 | .unused, | 32863 | .unused, |
| 19895 | .unused, | 32864 | .unused, |
| 19896 | }, | 32865 | }, |
| 19897 | .dst_temps = .{.mem}, | 32866 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19898 | .clobbers = .{ .eflags = true }, | | |
| 19899 | .each = .{ .once = &.{ | 32867 | .each = .{ .once = &.{ |
| 19900 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 32868 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 19901 | .{ .@"0:", .p_w, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 32869 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 19902 | .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, | | |
| 19903 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 19904 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 19905 | } }, | 32870 | } }, |
| 19906 | }, .{ | 32871 | }, .{ |
| 19907 | .required_features = .{ .mmx, .ssse3, null, null }, | 32872 | .required_features = .{ .sse2, null, null, null }, |
| 19908 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any }, | 32873 | .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any }, |
| 19909 | .patterns = &.{ | 32874 | .patterns = &.{ |
| 19910 | .{ .src = .{ .to_mem, .none } }, | 32875 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 19911 | }, | 32876 | }, |
| 19912 | .extra_temps = .{ | 32877 | .extra_temps = .{ |
| 19913 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32878 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 19914 | .{ .kind = .{ .rc = .sse } }, | 32879 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 19915 | .unused, | 32880 | .unused, |
| 19916 | .unused, | 32881 | .unused, |
| 19917 | .unused, | 32882 | .unused, |
| ... | @@ -19920,25 +32885,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19920,25 +32885,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19920 | .unused, | 32885 | .unused, |
| 19921 | .unused, | 32886 | .unused, |
| 19922 | }, | 32887 | }, |
| 19923 | .dst_temps = .{.mem}, | 32888 | .dst_temps = .{.{ .ref = .src0 }}, |
| 19924 | .clobbers = .{ .eflags = true }, | | |
| 19925 | .each = .{ .once = &.{ | 32889 | .each = .{ .once = &.{ |
| 19926 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 32890 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 19927 | .{ .@"0:", .p_d, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 32891 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 19928 | .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, | | |
| 19929 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 19930 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 19931 | } }, | 32892 | } }, |
| 19932 | }, .{ | 32893 | }, .{ |
| 19933 | .required_features = .{ .cmov, .slow_incdec, null, null }, | 32894 | .required_features = .{ .sse, null, null, null }, |
| 19934 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 32895 | .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any }, |
| 19935 | .patterns = &.{ | 32896 | .patterns = &.{ |
| 19936 | .{ .src = .{ .to_mem, .none } }, | 32897 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 19937 | }, | 32898 | }, |
| 19938 | .extra_temps = .{ | 32899 | .extra_temps = .{ |
| 19939 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32900 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 19940 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 32901 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 19941 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 32902 | .unused, |
| 19942 | .unused, | 32903 | .unused, |
| 19943 | .unused, | 32904 | .unused, |
| 19944 | .unused, | 32905 | .unused, |
| ... | @@ -19946,28 +32907,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19946,28 +32907,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19946 | .unused, | 32907 | .unused, |
| 19947 | .unused, | 32908 | .unused, |
| 19948 | }, | 32909 | }, |
| 19949 | .dst_temps = .{.mem}, | 32910 | .dst_temps = .{.{ .ref = .src0 }}, |
| 19950 | .clobbers = .{ .eflags = true }, | | |
| 19951 | .each = .{ .once = &.{ | 32911 | .each = .{ .once = &.{ |
| 19952 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 32912 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 19953 | .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ }, | 32913 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 19954 | .{ ._, ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, | | |
| 19955 | .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ }, | | |
| 19956 | .{ ._, ._s, .cmov, .tmp1d, .tmp2d, ._, ._ }, | | |
| 19957 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, | | |
| 19958 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | | |
| 19959 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 19960 | } }, | 32914 | } }, |
| 19961 | }, .{ | 32915 | }, .{ |
| 19962 | .required_features = .{ .cmov, null, null, null }, | 32916 | .required_features = .{ .avx2, null, null, null }, |
| 19963 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 32917 | .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any }, |
| 19964 | .patterns = &.{ | 32918 | .patterns = &.{ |
| 19965 | .{ .src = .{ .to_mem, .none } }, | 32919 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19966 | }, | 32920 | }, |
| 19967 | .extra_temps = .{ | 32921 | .extra_temps = .{ |
| 19968 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32922 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 19969 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 32923 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 19970 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 32924 | .unused, |
| 19971 | .unused, | 32925 | .unused, |
| 19972 | .unused, | 32926 | .unused, |
| 19973 | .unused, | 32927 | .unused, |
| ... | @@ -19975,27 +32929,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19975,27 +32929,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19975 | .unused, | 32929 | .unused, |
| 19976 | .unused, | 32930 | .unused, |
| 19977 | }, | 32931 | }, |
| 19978 | .dst_temps = .{.mem}, | 32932 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 19979 | .clobbers = .{ .eflags = true }, | | |
| 19980 | .each = .{ .once = &.{ | 32933 | .each = .{ .once = &.{ |
| 19981 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 32934 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 19982 | .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ }, | 32935 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 19983 | .{ ._, ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, | | |
| 19984 | .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ }, | | |
| 19985 | .{ ._, ._s, .cmov, .tmp1d, .tmp2d, ._, ._ }, | | |
| 19986 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, | | |
| 19987 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | | |
| 19988 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 19989 | } }, | 32936 | } }, |
| 19990 | }, .{ | 32937 | }, .{ |
| 19991 | .required_features = .{ .slow_incdec, null, null, null }, | 32938 | .required_features = .{ .avx, null, null, null }, |
| 19992 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 32939 | .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any }, |
| 19993 | .patterns = &.{ | 32940 | .patterns = &.{ |
| 19994 | .{ .src = .{ .to_mem, .none } }, | 32941 | .{ .src = .{ .to_sse, .none, .none } }, |
| 19995 | }, | 32942 | }, |
| 19996 | .extra_temps = .{ | 32943 | .extra_temps = .{ |
| 19997 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32944 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 19998 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 32945 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 19999 | .unused, | 32946 | .unused, |
| 20000 | .unused, | 32947 | .unused, |
| 20001 | .unused, | 32948 | .unused, |
| ... | @@ -20004,28 +32951,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20004,28 +32951,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20004 | .unused, | 32951 | .unused, |
| 20005 | .unused, | 32952 | .unused, |
| 20006 | }, | 32953 | }, |
| 20007 | .dst_temps = .{.mem}, | 32954 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 20008 | .clobbers = .{ .eflags = true }, | | |
| 20009 | .each = .{ .once = &.{ | 32955 | .each = .{ .once = &.{ |
| 20010 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 32956 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20011 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, | 32957 | .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 20012 | .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ }, | | |
| 20013 | .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, | | |
| 20014 | .{ ._, ._, .neg, .tmp1b, ._, ._, ._ }, | | |
| 20015 | .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, | | |
| 20016 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | | |
| 20017 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 20018 | } }, | 32958 | } }, |
| 20019 | }, .{ | 32959 | }, .{ |
| 20020 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 32960 | .required_features = .{ .avx, null, null, null }, |
| | 32961 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| 20021 | .patterns = &.{ | 32962 | .patterns = &.{ |
| 20022 | .{ .src = .{ .to_mem, .none } }, | 32963 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20023 | }, | 32964 | }, |
| 20024 | .extra_temps = .{ | 32965 | .extra_temps = .{ |
| 20025 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32966 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20026 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 32967 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 20027 | .unused, | 32968 | .{ .kind = .{ .rc = .sse } }, |
| 20028 | .unused, | 32969 | .{ .kind = .{ .rc = .sse } }, |
| 20029 | .unused, | 32970 | .unused, |
| 20030 | .unused, | 32971 | .unused, |
| 20031 | .unused, | 32972 | .unused, |
| ... | @@ -20033,28 +32974,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20033,28 +32974,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20033 | .unused, | 32974 | .unused, |
| 20034 | }, | 32975 | }, |
| 20035 | .dst_temps = .{.mem}, | 32976 | .dst_temps = .{.mem}, |
| 20036 | .clobbers = .{ .eflags = true }, | | |
| 20037 | .each = .{ .once = &.{ | 32977 | .each = .{ .once = &.{ |
| | 32978 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 32979 | .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| 20038 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 32980 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20039 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ }, | 32981 | .{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 20040 | .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ }, | 32982 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| 20041 | .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, | 32983 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 20042 | .{ ._, ._, .neg, .tmp1b, ._, ._, ._ }, | 32984 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20043 | .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ }, | | |
| 20044 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | | |
| 20045 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 20046 | } }, | 32985 | } }, |
| 20047 | }, .{ | 32986 | }, .{ |
| 20048 | .required_features = .{ .cmov, null, null, null }, | 32987 | .required_features = .{ .sse, null, null, null }, |
| 20049 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, | 32988 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 20050 | .patterns = &.{ | 32989 | .patterns = &.{ |
| 20051 | .{ .src = .{ .to_mem, .none } }, | 32990 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20052 | }, | 32991 | }, |
| 20053 | .extra_temps = .{ | 32992 | .extra_temps = .{ |
| 20054 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 32993 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20055 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, | 32994 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20056 | .unused, | 32995 | .{ .kind = .{ .rc = .sse } }, |
| 20057 | .unused, | 32996 | .{ .kind = .{ .rc = .sse } }, |
| 20058 | .unused, | 32997 | .unused, |
| 20059 | .unused, | 32998 | .unused, |
| 20060 | .unused, | 32999 | .unused, |
| ... | @@ -20062,26 +33001,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20062,26 +33001,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20062 | .unused, | 33001 | .unused, |
| 20063 | }, | 33002 | }, |
| 20064 | .dst_temps = .{.mem}, | 33003 | .dst_temps = .{.mem}, |
| 20065 | .clobbers = .{ .eflags = true }, | | |
| 20066 | .each = .{ .once = &.{ | 33004 | .each = .{ .once = &.{ |
| | 33005 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 33006 | .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 20067 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 33007 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20068 | .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ }, | 33008 | .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 20069 | .{ ._, ._, .sub, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 33009 | .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 20070 | .{ ._, ._s, .cmov, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 33010 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 20071 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, | 33011 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 20072 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 20073 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 33012 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20074 | } }, | 33013 | } }, |
| 20075 | }, .{ | 33014 | }, .{ |
| 20076 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, | 33015 | .required_features = .{ .avx, null, null, null }, |
| | 33016 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| 20077 | .patterns = &.{ | 33017 | .patterns = &.{ |
| 20078 | .{ .src = .{ .to_mem, .none } }, | 33018 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20079 | }, | 33019 | }, |
| 20080 | .extra_temps = .{ | 33020 | .extra_temps = .{ |
| 20081 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 33021 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20082 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, | 33022 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 20083 | .unused, | 33023 | .{ .kind = .{ .rc = .sse } }, |
| 20084 | .unused, | 33024 | .{ .kind = .{ .rc = .sse } }, |
| 20085 | .unused, | 33025 | .unused, |
| 20086 | .unused, | 33026 | .unused, |
| 20087 | .unused, | 33027 | .unused, |
| ... | @@ -20089,28 +33029,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20089,28 +33029,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20089 | .unused, | 33029 | .unused, |
| 20090 | }, | 33030 | }, |
| 20091 | .dst_temps = .{.mem}, | 33031 | .dst_temps = .{.mem}, |
| 20092 | .clobbers = .{ .eflags = true }, | | |
| 20093 | .each = .{ .once = &.{ | 33032 | .each = .{ .once = &.{ |
| | 33033 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 33034 | .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| 20094 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 33035 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20095 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 33036 | .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 20096 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, | 33037 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| 20097 | .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, | 33038 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 20098 | .{ ._, ._, .neg, .tmp1d, ._, ._, ._ }, | | |
| 20099 | .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, | | |
| 20100 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 20101 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 33039 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20102 | } }, | 33040 | } }, |
| 20103 | }, .{ | 33041 | }, .{ |
| 20104 | .required_features = .{ .cmov, null, null, null }, | 33042 | .required_features = .{ .sse2, null, null, null }, |
| 20105 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, | 33043 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 20106 | .patterns = &.{ | 33044 | .patterns = &.{ |
| 20107 | .{ .src = .{ .to_mem, .none } }, | 33045 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20108 | }, | 33046 | }, |
| 20109 | .extra_temps = .{ | 33047 | .extra_temps = .{ |
| 20110 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 33048 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20111 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 33049 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20112 | .unused, | 33050 | .{ .kind = .{ .rc = .sse } }, |
| 20113 | .unused, | 33051 | .{ .kind = .{ .rc = .sse } }, |
| 20114 | .unused, | 33052 | .unused, |
| 20115 | .unused, | 33053 | .unused, |
| 20116 | .unused, | 33054 | .unused, |
| ... | @@ -20118,26 +33056,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20118,26 +33056,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20118 | .unused, | 33056 | .unused, |
| 20119 | }, | 33057 | }, |
| 20120 | .dst_temps = .{.mem}, | 33058 | .dst_temps = .{.mem}, |
| 20121 | .clobbers = .{ .eflags = true }, | | |
| 20122 | .each = .{ .once = &.{ | 33059 | .each = .{ .once = &.{ |
| | 33060 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 33061 | .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 20123 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 33062 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20124 | .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ }, | 33063 | .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 20125 | .{ ._, ._, .sub, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 33064 | .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 20126 | .{ ._, ._s, .cmov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 33065 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 20127 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ }, | 33066 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 20128 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 20129 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 33067 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20130 | } }, | 33068 | } }, |
| 20131 | }, .{ | 33069 | }, .{ |
| 20132 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, | 33070 | .required_features = .{ .avx2, null, null, null }, |
| | 33071 | .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any }, |
| 20133 | .patterns = &.{ | 33072 | .patterns = &.{ |
| 20134 | .{ .src = .{ .to_mem, .none } }, | 33073 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20135 | }, | 33074 | }, |
| 20136 | .extra_temps = .{ | 33075 | .extra_temps = .{ |
| 20137 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 33076 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20138 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 33077 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 20139 | .unused, | 33078 | .{ .kind = .{ .rc = .sse } }, |
| 20140 | .unused, | 33079 | .{ .kind = .{ .rc = .sse } }, |
| 20141 | .unused, | 33080 | .unused, |
| 20142 | .unused, | 33081 | .unused, |
| 20143 | .unused, | 33082 | .unused, |
| ... | @@ -20145,28 +33084,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20145,28 +33084,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20145 | .unused, | 33084 | .unused, |
| 20146 | }, | 33085 | }, |
| 20147 | .dst_temps = .{.mem}, | 33086 | .dst_temps = .{.mem}, |
| 20148 | .clobbers = .{ .eflags = true }, | | |
| 20149 | .each = .{ .once = &.{ | 33087 | .each = .{ .once = &.{ |
| | 33088 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 33089 | .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| 20150 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 33090 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20151 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 33091 | .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 20152 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, | 33092 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| 20153 | .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, | 33093 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 20154 | .{ ._, ._, .neg, .tmp1d, ._, ._, ._ }, | | |
| 20155 | .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ }, | | |
| 20156 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 20157 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 33094 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20158 | } }, | 33095 | } }, |
| 20159 | }, .{ | 33096 | }, .{ |
| 20160 | .required_features = .{ .@"64bit", .cmov, null, null }, | 33097 | .required_features = .{ .avx, null, null, null }, |
| 20161 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any }, | 33098 | .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any }, |
| 20162 | .patterns = &.{ | 33099 | .patterns = &.{ |
| 20163 | .{ .src = .{ .to_mem, .none } }, | 33100 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20164 | }, | 33101 | }, |
| 20165 | .extra_temps = .{ | 33102 | .extra_temps = .{ |
| 20166 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 33103 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20167 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 33104 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 20168 | .unused, | 33105 | .{ .kind = .{ .rc = .sse } }, |
| 20169 | .unused, | 33106 | .{ .kind = .{ .rc = .sse } }, |
| 20170 | .unused, | 33107 | .unused, |
| 20171 | .unused, | 33108 | .unused, |
| 20172 | .unused, | 33109 | .unused, |
| ... | @@ -20174,27 +33111,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20174,27 +33111,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20174 | .unused, | 33111 | .unused, |
| 20175 | }, | 33112 | }, |
| 20176 | .dst_temps = .{.mem}, | 33113 | .dst_temps = .{.mem}, |
| 20177 | .clobbers = .{ .eflags = true }, | | |
| 20178 | .each = .{ .once = &.{ | 33114 | .each = .{ .once = &.{ |
| | 33115 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 33116 | .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| 20179 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 33117 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20180 | .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ }, | 33118 | .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 20181 | .{ ._, ._, .sub, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 33119 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| 20182 | .{ ._, ._s, .cmov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 33120 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 20183 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, | | |
| 20184 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 20185 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 33121 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20186 | } }, | 33122 | } }, |
| 20187 | }, .{ | 33123 | }, .{ |
| 20188 | .required_features = .{ .@"64bit", null, null, null }, | 33124 | .required_features = .{ .sse2, null, null, null }, |
| 20189 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any }, | 33125 | .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any }, |
| 20190 | .patterns = &.{ | 33126 | .patterns = &.{ |
| 20191 | .{ .src = .{ .to_mem, .none } }, | 33127 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20192 | }, | 33128 | }, |
| 20193 | .extra_temps = .{ | 33129 | .extra_temps = .{ |
| 20194 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 33130 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20195 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 33131 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20196 | .unused, | 33132 | .{ .kind = .{ .rc = .sse } }, |
| 20197 | .unused, | 33133 | .{ .kind = .{ .rc = .sse } }, |
| 20198 | .unused, | 33134 | .unused, |
| 20199 | .unused, | 33135 | .unused, |
| 20200 | .unused, | 33136 | .unused, |
| ... | @@ -20202,63 +33138,1137 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20202,63 +33138,1137 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20202 | .unused, | 33138 | .unused, |
| 20203 | }, | 33139 | }, |
| 20204 | .dst_temps = .{.mem}, | 33140 | .dst_temps = .{.mem}, |
| 20205 | .clobbers = .{ .eflags = true }, | | |
| 20206 | .each = .{ .once = &.{ | 33141 | .each = .{ .once = &.{ |
| | 33142 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 33143 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 20207 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 33144 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20208 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 33145 | .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, |
| 20209 | .{ ._, ._, .@"test", .tmp1q, .tmp1q, ._, ._ }, | 33146 | .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 20210 | .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, | 33147 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 20211 | .{ ._, ._, .neg, .tmp1q, ._, ._, ._ }, | 33148 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 20212 | .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, | | |
| 20213 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 20214 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 33149 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20215 | } }, | 33150 | } }, |
| 20216 | }, .{ | 33151 | }, .{ |
| 20217 | .required_features = .{ .@"64bit", null, null, null }, | 33152 | .required_features = .{ .sse, null, null, null }, |
| 20218 | .src_constraints = .{ .any_scalar_int, .any }, | 33153 | .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any }, |
| 20219 | .patterns = &.{ | 33154 | .patterns = &.{ |
| 20220 | .{ .src = .{ .to_mem, .none } }, | 33155 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20221 | }, | 33156 | }, |
| 20222 | .extra_temps = .{ | 33157 | .extra_temps = .{ |
| 20223 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | | |
| 20224 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 33158 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20225 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, | 33159 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20226 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 33160 | .{ .kind = .{ .rc = .sse } }, |
| 20227 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, | 33161 | .{ .kind = .{ .rc = .sse } }, |
| | 33162 | .unused, |
| 20228 | .unused, | 33163 | .unused, |
| 20229 | .unused, | 33164 | .unused, |
| 20230 | .unused, | 33165 | .unused, |
| 20231 | .unused, | 33166 | .unused, |
| 20232 | }, | 33167 | }, |
| 20233 | .dst_temps = .{.mem}, | 33168 | .dst_temps = .{.mem}, |
| 20234 | .clobbers = .{ .eflags = true }, | | |
| 20235 | .each = .{ .once = &.{ | 33169 | .each = .{ .once = &.{ |
| 20236 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, | 33170 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20237 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size), ._, ._ }, | 33171 | .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 20238 | .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_src0_elem_size, -8), ._, ._ }, | 33172 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20239 | .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ }, | 33173 | .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 20240 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, | 33174 | .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 20241 | .{ .@"1:", ._, .mov, .tmp4q, .memi(.src0q, .tmp0), ._, ._ }, | 33175 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 20242 | .{ ._, ._, .xor, .tmp4q, .tmp2q, ._, ._ }, | 33176 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 20243 | .{ ._, ._r, .sh, .tmp3b, .ui(1), ._, ._ }, | 33177 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20244 | .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ }, | 33178 | } }, |
| 20245 | .{ ._, ._c, .set, .tmp3b, ._, ._, ._ }, | 33179 | } }) catch |err| switch (err) { |
| 20246 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ }, | 33180 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ |
| 20247 | .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ }, | 33181 | @tagName(air_tag), |
| 20248 | .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ }, | 33182 | cg.typeOf(ty_op.operand).fmt(pt), |
| 20249 | .{ ._, ._a, .j, .@"1b", ._, ._, ._ }, | 33183 | ops[0].tracking(cg), |
| 20250 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ }, | 33184 | }), |
| 20251 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, | 33185 | else => |e| return e, |
| | 33186 | }; |
| | 33187 | try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 33188 | }, |
| | 33189 | .floor, .ceil, .trunc_float => |air_tag| if (use_old) try cg.airRound(inst, .{ .direction = switch (air_tag) { |
| | 33190 | else => unreachable, |
| | 33191 | .floor => .down, |
| | 33192 | .ceil => .up, |
| | 33193 | .trunc_float => .zero, |
| | 33194 | }, .precision = .inexact }) else { |
| | 33195 | const un_op = air_datas[@intFromEnum(inst)].un_op; |
| | 33196 | var ops = try cg.tempsFromOperands(inst, .{un_op}); |
| | 33197 | var res: [1]Temp = undefined; |
| | 33198 | cg.select(&res, &.{cg.typeOf(un_op)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) { |
| | 33199 | else => unreachable, |
| | 33200 | .floor => .down, |
| | 33201 | .ceil => .up, |
| | 33202 | .trunc_float => .zero, |
| | 33203 | })) { |
| | 33204 | else => unreachable, |
| | 33205 | inline .down, .up, .zero => |direction| comptime &.{ .{ |
| | 33206 | .required_features = .{ .f16c, null, null, null }, |
| | 33207 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 33208 | .patterns = &.{ |
| | 33209 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 33210 | }, |
| | 33211 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 33212 | .each = .{ .once = &.{ |
| | 33213 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 33214 | .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) }, |
| | 33215 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| | 33216 | } }, |
| | 33217 | }, .{ |
| | 33218 | .required_features = .{ .sse, null, null, null }, |
| | 33219 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 33220 | .patterns = &.{ |
| | 33221 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 33222 | }, |
| | 33223 | .call_frame = .{ .alignment = .@"16" }, |
| | 33224 | .extra_temps = .{ |
| | 33225 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33226 | else => unreachable, |
| | 33227 | .down => "__floorh", |
| | 33228 | .up => "__ceilh", |
| | 33229 | .zero => "__trunch", |
| | 33230 | } } } }, |
| | 33231 | .unused, |
| | 33232 | .unused, |
| | 33233 | .unused, |
| | 33234 | .unused, |
| | 33235 | .unused, |
| | 33236 | .unused, |
| | 33237 | .unused, |
| | 33238 | .unused, |
| | 33239 | }, |
| | 33240 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 33241 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33242 | .each = .{ .once = &.{ |
| | 33243 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 33244 | } }, |
| | 33245 | }, .{ |
| | 33246 | .required_features = .{ .f16c, null, null, null }, |
| | 33247 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 33248 | .patterns = &.{ |
| | 33249 | .{ .src = .{ .mem, .none, .none } }, |
| | 33250 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 33251 | }, |
| | 33252 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 33253 | .each = .{ .once = &.{ |
| | 33254 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 33255 | .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33256 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| | 33257 | } }, |
| | 33258 | }, .{ |
| | 33259 | .required_features = .{ .f16c, null, null, null }, |
| | 33260 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 33261 | .patterns = &.{ |
| | 33262 | .{ .src = .{ .mem, .none, .none } }, |
| | 33263 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 33264 | }, |
| | 33265 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 33266 | .each = .{ .once = &.{ |
| | 33267 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| | 33268 | .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33269 | .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, |
| | 33270 | } }, |
| | 33271 | }, .{ |
| | 33272 | .required_features = .{ .f16c, null, null, null }, |
| | 33273 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 33274 | .patterns = &.{ |
| | 33275 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33276 | }, |
| | 33277 | .extra_temps = .{ |
| | 33278 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33279 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 33280 | .unused, |
| | 33281 | .unused, |
| | 33282 | .unused, |
| | 33283 | .unused, |
| | 33284 | .unused, |
| | 33285 | .unused, |
| | 33286 | .unused, |
| | 33287 | }, |
| | 33288 | .dst_temps = .{.mem}, |
| | 33289 | .clobbers = .{ .eflags = true }, |
| | 33290 | .each = .{ .once = &.{ |
| | 33291 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33292 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 33293 | .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33294 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, |
| | 33295 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 33296 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33297 | } }, |
| | 33298 | }, .{ |
| | 33299 | .required_features = .{ .avx, null, null, null }, |
| | 33300 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 33301 | .patterns = &.{ |
| | 33302 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33303 | }, |
| | 33304 | .call_frame = .{ .alignment = .@"16" }, |
| | 33305 | .extra_temps = .{ |
| | 33306 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33307 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 33308 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33309 | else => unreachable, |
| | 33310 | .down => "__floorh", |
| | 33311 | .up => "__ceilh", |
| | 33312 | .zero => "__trunch", |
| | 33313 | } } } }, |
| | 33314 | .unused, |
| | 33315 | .unused, |
| | 33316 | .unused, |
| | 33317 | .unused, |
| | 33318 | .unused, |
| | 33319 | .unused, |
| | 33320 | }, |
| | 33321 | .dst_temps = .{.mem}, |
| | 33322 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33323 | .each = .{ .once = &.{ |
| | 33324 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33325 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 33326 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 33327 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 33328 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 33329 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 33330 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33331 | } }, |
| | 33332 | }, .{ |
| | 33333 | .required_features = .{ .sse4_1, null, null, null }, |
| | 33334 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 33335 | .patterns = &.{ |
| | 33336 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33337 | }, |
| | 33338 | .call_frame = .{ .alignment = .@"16" }, |
| | 33339 | .extra_temps = .{ |
| | 33340 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33341 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 33342 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33343 | else => unreachable, |
| | 33344 | .down => "__floorh", |
| | 33345 | .up => "__ceilh", |
| | 33346 | .zero => "__trunch", |
| | 33347 | } } } }, |
| | 33348 | .unused, |
| | 33349 | .unused, |
| | 33350 | .unused, |
| | 33351 | .unused, |
| | 33352 | .unused, |
| | 33353 | .unused, |
| | 33354 | }, |
| | 33355 | .dst_temps = .{.mem}, |
| | 33356 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33357 | .each = .{ .once = &.{ |
| | 33358 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33359 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 33360 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 33361 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 33362 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 33363 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 33364 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33365 | } }, |
| | 33366 | }, .{ |
| | 33367 | .required_features = .{ .sse2, null, null, null }, |
| | 33368 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 33369 | .patterns = &.{ |
| | 33370 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33371 | }, |
| | 33372 | .call_frame = .{ .alignment = .@"16" }, |
| | 33373 | .extra_temps = .{ |
| | 33374 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33375 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 33376 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33377 | else => unreachable, |
| | 33378 | .down => "__floorh", |
| | 33379 | .up => "__ceilh", |
| | 33380 | .zero => "__trunch", |
| | 33381 | } } } }, |
| | 33382 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 33383 | .unused, |
| | 33384 | .unused, |
| | 33385 | .unused, |
| | 33386 | .unused, |
| | 33387 | .unused, |
| | 33388 | }, |
| | 33389 | .dst_temps = .{.mem}, |
| | 33390 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33391 | .each = .{ .once = &.{ |
| | 33392 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33393 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 33394 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 33395 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 33396 | .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, |
| | 33397 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, |
| | 33398 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 33399 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33400 | } }, |
| | 33401 | }, .{ |
| | 33402 | .required_features = .{ .sse, null, null, null }, |
| | 33403 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 33404 | .patterns = &.{ |
| | 33405 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33406 | }, |
| | 33407 | .call_frame = .{ .alignment = .@"16" }, |
| | 33408 | .extra_temps = .{ |
| | 33409 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33410 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 33411 | .{ .type = .f32, .kind = .mem }, |
| | 33412 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 33413 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33414 | else => unreachable, |
| | 33415 | .down => "__floorh", |
| | 33416 | .up => "__ceilh", |
| | 33417 | .zero => "__trunch", |
| | 33418 | } } } }, |
| | 33419 | .unused, |
| | 33420 | .unused, |
| | 33421 | .unused, |
| | 33422 | .unused, |
| | 33423 | }, |
| | 33424 | .dst_temps = .{.mem}, |
| | 33425 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33426 | .each = .{ .once = &.{ |
| | 33427 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33428 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 33429 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 33430 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 33431 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 33432 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| | 33433 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 33434 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 33435 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 33436 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33437 | } }, |
| | 33438 | }, .{ |
| | 33439 | .required_features = .{ .avx, null, null, null }, |
| | 33440 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 33441 | .patterns = &.{ |
| | 33442 | .{ .src = .{ .mem, .none, .none } }, |
| | 33443 | }, |
| | 33444 | .dst_temps = .{.{ .rc = .sse }}, |
| | 33445 | .each = .{ .once = &.{ |
| | 33446 | .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, |
| | 33447 | .{ ._, .v_ss, .round, .dst0x, .dst0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }) }, |
| | 33448 | } }, |
| | 33449 | }, .{ |
| | 33450 | .required_features = .{ .avx, null, null, null }, |
| | 33451 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 33452 | .patterns = &.{ |
| | 33453 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 33454 | }, |
| | 33455 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 33456 | .each = .{ .once = &.{ |
| | 33457 | .{ ._, .v_ss, .round, .dst0x, .src0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }) }, |
| | 33458 | } }, |
| | 33459 | }, .{ |
| | 33460 | .required_features = .{ .sse4_1, null, null, null }, |
| | 33461 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 33462 | .patterns = &.{ |
| | 33463 | .{ .src = .{ .mem, .none, .none } }, |
| | 33464 | }, |
| | 33465 | .dst_temps = .{.{ .rc = .sse }}, |
| | 33466 | .each = .{ .once = &.{ |
| | 33467 | .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, |
| | 33468 | .{ ._, ._ss, .round, .dst0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33469 | } }, |
| | 33470 | }, .{ |
| | 33471 | .required_features = .{ .sse4_1, null, null, null }, |
| | 33472 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 33473 | .patterns = &.{ |
| | 33474 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 33475 | }, |
| | 33476 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 33477 | .each = .{ .once = &.{ |
| | 33478 | .{ ._, ._ss, .round, .dst0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33479 | } }, |
| | 33480 | }, .{ |
| | 33481 | .required_features = .{ .sse, null, null, null }, |
| | 33482 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 33483 | .patterns = &.{ |
| | 33484 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 33485 | }, |
| | 33486 | .call_frame = .{ .alignment = .@"16" }, |
| | 33487 | .extra_temps = .{ |
| | 33488 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33489 | else => unreachable, |
| | 33490 | .down => "floorf", |
| | 33491 | .up => "ceilf", |
| | 33492 | .zero => "truncf", |
| | 33493 | } } } }, |
| | 33494 | .unused, |
| | 33495 | .unused, |
| | 33496 | .unused, |
| | 33497 | .unused, |
| | 33498 | .unused, |
| | 33499 | .unused, |
| | 33500 | .unused, |
| | 33501 | .unused, |
| | 33502 | }, |
| | 33503 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 33504 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33505 | .each = .{ .once = &.{ |
| | 33506 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 33507 | } }, |
| | 33508 | }, .{ |
| | 33509 | .required_features = .{ .avx, null, null, null }, |
| | 33510 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 33511 | .patterns = &.{ |
| | 33512 | .{ .src = .{ .mem, .none, .none } }, |
| | 33513 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 33514 | }, |
| | 33515 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 33516 | .each = .{ .once = &.{ |
| | 33517 | .{ ._, .v_ps, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33518 | } }, |
| | 33519 | }, .{ |
| | 33520 | .required_features = .{ .sse4_1, null, null, null }, |
| | 33521 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 33522 | .patterns = &.{ |
| | 33523 | .{ .src = .{ .mem, .none, .none } }, |
| | 33524 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 33525 | }, |
| | 33526 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 33527 | .each = .{ .once = &.{ |
| | 33528 | .{ ._, ._ps, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33529 | } }, |
| | 33530 | }, .{ |
| | 33531 | .required_features = .{ .avx, null, null, null }, |
| | 33532 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 33533 | .patterns = &.{ |
| | 33534 | .{ .src = .{ .mem, .none, .none } }, |
| | 33535 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 33536 | }, |
| | 33537 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 33538 | .each = .{ .once = &.{ |
| | 33539 | .{ ._, .v_ps, .round, .dst0y, .src0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33540 | } }, |
| | 33541 | }, .{ |
| | 33542 | .required_features = .{ .avx, null, null, null }, |
| | 33543 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 33544 | .patterns = &.{ |
| | 33545 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33546 | }, |
| | 33547 | .extra_temps = .{ |
| | 33548 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33549 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 33550 | .unused, |
| | 33551 | .unused, |
| | 33552 | .unused, |
| | 33553 | .unused, |
| | 33554 | .unused, |
| | 33555 | .unused, |
| | 33556 | .unused, |
| | 33557 | }, |
| | 33558 | .dst_temps = .{.mem}, |
| | 33559 | .clobbers = .{ .eflags = true }, |
| | 33560 | .each = .{ .once = &.{ |
| | 33561 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33562 | .{ .@"0:", .v_ps, .round, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), .rm(.{ |
| | 33563 | .direction = direction, |
| | 33564 | .precision = .inexact, |
| | 33565 | }), ._ }, |
| | 33566 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 33567 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 33568 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33569 | } }, |
| | 33570 | }, .{ |
| | 33571 | .required_features = .{ .sse4_1, null, null, null }, |
| | 33572 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 33573 | .patterns = &.{ |
| | 33574 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33575 | }, |
| | 33576 | .extra_temps = .{ |
| | 33577 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33578 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 33579 | .unused, |
| | 33580 | .unused, |
| | 33581 | .unused, |
| | 33582 | .unused, |
| | 33583 | .unused, |
| | 33584 | .unused, |
| | 33585 | .unused, |
| | 33586 | }, |
| | 33587 | .dst_temps = .{.mem}, |
| | 33588 | .clobbers = .{ .eflags = true }, |
| | 33589 | .each = .{ .once = &.{ |
| | 33590 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33591 | .{ .@"0:", ._ps, .round, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), .rm(.{ |
| | 33592 | .direction = direction, |
| | 33593 | .precision = .inexact, |
| | 33594 | }), ._ }, |
| | 33595 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 33596 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 33597 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33598 | } }, |
| | 33599 | }, .{ |
| | 33600 | .required_features = .{ .avx, null, null, null }, |
| | 33601 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 33602 | .patterns = &.{ |
| | 33603 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33604 | }, |
| | 33605 | .call_frame = .{ .alignment = .@"16" }, |
| | 33606 | .extra_temps = .{ |
| | 33607 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33608 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 33609 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33610 | else => unreachable, |
| | 33611 | .down => "floorf", |
| | 33612 | .up => "ceilf", |
| | 33613 | .zero => "truncf", |
| | 33614 | } } } }, |
| | 33615 | .unused, |
| | 33616 | .unused, |
| | 33617 | .unused, |
| | 33618 | .unused, |
| | 33619 | .unused, |
| | 33620 | .unused, |
| | 33621 | }, |
| | 33622 | .dst_temps = .{.mem}, |
| | 33623 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33624 | .each = .{ .once = &.{ |
| | 33625 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33626 | .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 33627 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 33628 | .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 33629 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 33630 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33631 | } }, |
| | 33632 | }, .{ |
| | 33633 | .required_features = .{ .sse, null, null, null }, |
| | 33634 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 33635 | .patterns = &.{ |
| | 33636 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33637 | }, |
| | 33638 | .call_frame = .{ .alignment = .@"16" }, |
| | 33639 | .extra_temps = .{ |
| | 33640 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33641 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 33642 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33643 | else => unreachable, |
| | 33644 | .down => "floorf", |
| | 33645 | .up => "ceilf", |
| | 33646 | .zero => "truncf", |
| | 33647 | } } } }, |
| | 33648 | .unused, |
| | 33649 | .unused, |
| | 33650 | .unused, |
| | 33651 | .unused, |
| | 33652 | .unused, |
| | 33653 | .unused, |
| | 33654 | }, |
| | 33655 | .dst_temps = .{.mem}, |
| | 33656 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33657 | .each = .{ .once = &.{ |
| | 33658 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33659 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 33660 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 33661 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 33662 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 33663 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33664 | } }, |
| | 33665 | }, .{ |
| | 33666 | .required_features = .{ .avx, null, null, null }, |
| | 33667 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 33668 | .patterns = &.{ |
| | 33669 | .{ .src = .{ .mem, .none, .none } }, |
| | 33670 | }, |
| | 33671 | .dst_temps = .{.{ .rc = .sse }}, |
| | 33672 | .each = .{ .once = &.{ |
| | 33673 | .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, |
| | 33674 | .{ ._, .v_sd, .round, .dst0x, .dst0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }) }, |
| | 33675 | } }, |
| | 33676 | }, .{ |
| | 33677 | .required_features = .{ .avx, null, null, null }, |
| | 33678 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 33679 | .patterns = &.{ |
| | 33680 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 33681 | }, |
| | 33682 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 33683 | .each = .{ .once = &.{ |
| | 33684 | .{ ._, .v_sd, .round, .dst0x, .src0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }) }, |
| | 33685 | } }, |
| | 33686 | }, .{ |
| | 33687 | .required_features = .{ .sse4_1, null, null, null }, |
| | 33688 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 33689 | .patterns = &.{ |
| | 33690 | .{ .src = .{ .mem, .none, .none } }, |
| | 33691 | }, |
| | 33692 | .dst_temps = .{.{ .rc = .sse }}, |
| | 33693 | .each = .{ .once = &.{ |
| | 33694 | .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, |
| | 33695 | .{ ._, ._sd, .round, .dst0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33696 | } }, |
| | 33697 | }, .{ |
| | 33698 | .required_features = .{ .sse4_1, null, null, null }, |
| | 33699 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 33700 | .patterns = &.{ |
| | 33701 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 33702 | }, |
| | 33703 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 33704 | .each = .{ .once = &.{ |
| | 33705 | .{ ._, ._sd, .round, .dst0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33706 | } }, |
| | 33707 | }, .{ |
| | 33708 | .required_features = .{ .sse, null, null, null }, |
| | 33709 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 33710 | .patterns = &.{ |
| | 33711 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 33712 | }, |
| | 33713 | .call_frame = .{ .alignment = .@"16" }, |
| | 33714 | .extra_temps = .{ |
| | 33715 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33716 | else => unreachable, |
| | 33717 | .down => "floor", |
| | 33718 | .up => "ceil", |
| | 33719 | .zero => "trunc", |
| | 33720 | } } } }, |
| | 33721 | .unused, |
| | 33722 | .unused, |
| | 33723 | .unused, |
| | 33724 | .unused, |
| | 33725 | .unused, |
| | 33726 | .unused, |
| | 33727 | .unused, |
| | 33728 | .unused, |
| | 33729 | }, |
| | 33730 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 33731 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33732 | .each = .{ .once = &.{ |
| | 33733 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 33734 | } }, |
| | 33735 | }, .{ |
| | 33736 | .required_features = .{ .avx, null, null, null }, |
| | 33737 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 33738 | .patterns = &.{ |
| | 33739 | .{ .src = .{ .mem, .none, .none } }, |
| | 33740 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 33741 | }, |
| | 33742 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 33743 | .each = .{ .once = &.{ |
| | 33744 | .{ ._, .v_pd, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33745 | } }, |
| | 33746 | }, .{ |
| | 33747 | .required_features = .{ .sse4_1, null, null, null }, |
| | 33748 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 33749 | .patterns = &.{ |
| | 33750 | .{ .src = .{ .mem, .none, .none } }, |
| | 33751 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 33752 | }, |
| | 33753 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 33754 | .each = .{ .once = &.{ |
| | 33755 | .{ ._, ._pd, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33756 | } }, |
| | 33757 | }, .{ |
| | 33758 | .required_features = .{ .avx, null, null, null }, |
| | 33759 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 33760 | .patterns = &.{ |
| | 33761 | .{ .src = .{ .mem, .none, .none } }, |
| | 33762 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 33763 | }, |
| | 33764 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 33765 | .each = .{ .once = &.{ |
| | 33766 | .{ ._, .v_pd, .round, .dst0y, .src0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, |
| | 33767 | } }, |
| | 33768 | }, .{ |
| | 33769 | .required_features = .{ .avx, null, null, null }, |
| | 33770 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 33771 | .patterns = &.{ |
| | 33772 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33773 | }, |
| | 33774 | .extra_temps = .{ |
| | 33775 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33776 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 33777 | .unused, |
| | 33778 | .unused, |
| | 33779 | .unused, |
| | 33780 | .unused, |
| | 33781 | .unused, |
| | 33782 | .unused, |
| | 33783 | .unused, |
| | 33784 | }, |
| | 33785 | .dst_temps = .{.mem}, |
| | 33786 | .clobbers = .{ .eflags = true }, |
| | 33787 | .each = .{ .once = &.{ |
| | 33788 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33789 | .{ .@"0:", .v_pd, .round, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), .rm(.{ |
| | 33790 | .direction = direction, |
| | 33791 | .precision = .inexact, |
| | 33792 | }), ._ }, |
| | 33793 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 33794 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 33795 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33796 | } }, |
| | 33797 | }, .{ |
| | 33798 | .required_features = .{ .sse4_1, null, null, null }, |
| | 33799 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 33800 | .patterns = &.{ |
| | 33801 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33802 | }, |
| | 33803 | .extra_temps = .{ |
| | 33804 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33805 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 33806 | .unused, |
| | 33807 | .unused, |
| | 33808 | .unused, |
| | 33809 | .unused, |
| | 33810 | .unused, |
| | 33811 | .unused, |
| | 33812 | .unused, |
| | 33813 | }, |
| | 33814 | .dst_temps = .{.mem}, |
| | 33815 | .clobbers = .{ .eflags = true }, |
| | 33816 | .each = .{ .once = &.{ |
| | 33817 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33818 | .{ .@"0:", ._pd, .round, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), .rm(.{ |
| | 33819 | .direction = direction, |
| | 33820 | .precision = .inexact, |
| | 33821 | }), ._ }, |
| | 33822 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 33823 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 33824 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33825 | } }, |
| | 33826 | }, .{ |
| | 33827 | .required_features = .{ .avx, null, null, null }, |
| | 33828 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 33829 | .patterns = &.{ |
| | 33830 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33831 | }, |
| | 33832 | .call_frame = .{ .alignment = .@"16" }, |
| | 33833 | .extra_temps = .{ |
| | 33834 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33835 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 33836 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33837 | else => unreachable, |
| | 33838 | .down => "floor", |
| | 33839 | .up => "ceil", |
| | 33840 | .zero => "trunc", |
| | 33841 | } } } }, |
| | 33842 | .unused, |
| | 33843 | .unused, |
| | 33844 | .unused, |
| | 33845 | .unused, |
| | 33846 | .unused, |
| | 33847 | .unused, |
| | 33848 | }, |
| | 33849 | .dst_temps = .{.mem}, |
| | 33850 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33851 | .each = .{ .once = &.{ |
| | 33852 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33853 | .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 33854 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 33855 | .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 33856 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 33857 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33858 | } }, |
| | 33859 | }, .{ |
| | 33860 | .required_features = .{ .sse2, null, null, null }, |
| | 33861 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 33862 | .patterns = &.{ |
| | 33863 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33864 | }, |
| | 33865 | .call_frame = .{ .alignment = .@"16" }, |
| | 33866 | .extra_temps = .{ |
| | 33867 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33868 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 33869 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33870 | else => unreachable, |
| | 33871 | .down => "floor", |
| | 33872 | .up => "ceil", |
| | 33873 | .zero => "trunc", |
| | 33874 | } } } }, |
| | 33875 | .unused, |
| | 33876 | .unused, |
| | 33877 | .unused, |
| | 33878 | .unused, |
| | 33879 | .unused, |
| | 33880 | .unused, |
| | 33881 | }, |
| | 33882 | .dst_temps = .{.mem}, |
| | 33883 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33884 | .each = .{ .once = &.{ |
| | 33885 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33886 | .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 33887 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 33888 | .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 33889 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 33890 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33891 | } }, |
| | 33892 | }, .{ |
| | 33893 | .required_features = .{ .sse, null, null, null }, |
| | 33894 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 33895 | .patterns = &.{ |
| | 33896 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33897 | }, |
| | 33898 | .call_frame = .{ .alignment = .@"16" }, |
| | 33899 | .extra_temps = .{ |
| | 33900 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 33901 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 33902 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33903 | else => unreachable, |
| | 33904 | .down => "floor", |
| | 33905 | .up => "ceil", |
| | 33906 | .zero => "trunc", |
| | 33907 | } } } }, |
| | 33908 | .unused, |
| | 33909 | .unused, |
| | 33910 | .unused, |
| | 33911 | .unused, |
| | 33912 | .unused, |
| | 33913 | .unused, |
| | 33914 | }, |
| | 33915 | .dst_temps = .{.mem}, |
| | 33916 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33917 | .each = .{ .once = &.{ |
| | 33918 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 33919 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 33920 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 33921 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 33922 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 33923 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 33924 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 33925 | } }, |
| | 33926 | }, .{ |
| | 33927 | .required_features = .{ .avx, .x87, null, null }, |
| | 33928 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 33929 | .patterns = &.{ |
| | 33930 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33931 | }, |
| | 33932 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 33933 | .extra_temps = .{ |
| | 33934 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 33935 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 33936 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33937 | else => unreachable, |
| | 33938 | .down => "__floorx", |
| | 33939 | .up => "__ceilx", |
| | 33940 | .zero => "__truncx", |
| | 33941 | } } } }, |
| | 33942 | .unused, |
| | 33943 | .unused, |
| | 33944 | .unused, |
| | 33945 | .unused, |
| | 33946 | .unused, |
| | 33947 | .unused, |
| | 33948 | }, |
| | 33949 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 33950 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33951 | .each = .{ .once = &.{ |
| | 33952 | .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 33953 | .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 33954 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 33955 | } }, |
| | 33956 | }, .{ |
| | 33957 | .required_features = .{ .sse2, .x87, null, null }, |
| | 33958 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 33959 | .patterns = &.{ |
| | 33960 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33961 | }, |
| | 33962 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 33963 | .extra_temps = .{ |
| | 33964 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 33965 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 33966 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33967 | else => unreachable, |
| | 33968 | .down => "__floorx", |
| | 33969 | .up => "__ceilx", |
| | 33970 | .zero => "__truncx", |
| | 33971 | } } } }, |
| | 33972 | .unused, |
| | 33973 | .unused, |
| | 33974 | .unused, |
| | 33975 | .unused, |
| | 33976 | .unused, |
| | 33977 | .unused, |
| | 33978 | }, |
| | 33979 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 33980 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 33981 | .each = .{ .once = &.{ |
| | 33982 | .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 33983 | .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 33984 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 33985 | } }, |
| | 33986 | }, .{ |
| | 33987 | .required_features = .{ .sse, .x87, null, null }, |
| | 33988 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 33989 | .patterns = &.{ |
| | 33990 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 33991 | }, |
| | 33992 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 33993 | .extra_temps = .{ |
| | 33994 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 33995 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 33996 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 33997 | else => unreachable, |
| | 33998 | .down => "__floorx", |
| | 33999 | .up => "__ceilx", |
| | 34000 | .zero => "__truncx", |
| | 34001 | } } } }, |
| | 34002 | .unused, |
| | 34003 | .unused, |
| | 34004 | .unused, |
| | 34005 | .unused, |
| | 34006 | .unused, |
| | 34007 | .unused, |
| | 34008 | }, |
| | 34009 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 34010 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 34011 | .each = .{ .once = &.{ |
| | 34012 | .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ }, |
| | 34013 | .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| | 34014 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 34015 | } }, |
| | 34016 | }, .{ |
| | 34017 | .required_features = .{ .avx, .x87, null, null }, |
| | 34018 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 34019 | .patterns = &.{ |
| | 34020 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 34021 | }, |
| | 34022 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 34023 | .extra_temps = .{ |
| | 34024 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 34025 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 34026 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 34027 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 34028 | else => unreachable, |
| | 34029 | .down => "__floorx", |
| | 34030 | .up => "__ceilx", |
| | 34031 | .zero => "__truncx", |
| | 34032 | } } } }, |
| | 34033 | .unused, |
| | 34034 | .unused, |
| | 34035 | .unused, |
| | 34036 | .unused, |
| | 34037 | .unused, |
| | 34038 | }, |
| | 34039 | .dst_temps = .{.mem}, |
| | 34040 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 34041 | .each = .{ .once = &.{ |
| | 34042 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 34043 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 34044 | .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 34045 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 34046 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 34047 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 34048 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 34049 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 34050 | } }, |
| | 34051 | }, .{ |
| | 34052 | .required_features = .{ .sse2, .x87, null, null }, |
| | 34053 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 34054 | .patterns = &.{ |
| | 34055 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 34056 | }, |
| | 34057 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 34058 | .extra_temps = .{ |
| | 34059 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 34060 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 34061 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 34062 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 34063 | else => unreachable, |
| | 34064 | .down => "__floorx", |
| | 34065 | .up => "__ceilx", |
| | 34066 | .zero => "__truncx", |
| | 34067 | } } } }, |
| | 34068 | .unused, |
| | 34069 | .unused, |
| | 34070 | .unused, |
| | 34071 | .unused, |
| | 34072 | .unused, |
| | 34073 | }, |
| | 34074 | .dst_temps = .{.mem}, |
| | 34075 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 34076 | .each = .{ .once = &.{ |
| | 34077 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 34078 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 34079 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 34080 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 34081 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 34082 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 34083 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 34084 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 34085 | } }, |
| | 34086 | }, .{ |
| | 34087 | .required_features = .{ .sse, .x87, null, null }, |
| | 34088 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 34089 | .patterns = &.{ |
| | 34090 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 34091 | }, |
| | 34092 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 34093 | .extra_temps = .{ |
| | 34094 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 34095 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 34096 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 34097 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 34098 | else => unreachable, |
| | 34099 | .down => "__floorx", |
| | 34100 | .up => "__ceilx", |
| | 34101 | .zero => "__truncx", |
| | 34102 | } } } }, |
| | 34103 | .unused, |
| | 34104 | .unused, |
| | 34105 | .unused, |
| | 34106 | .unused, |
| | 34107 | .unused, |
| | 34108 | }, |
| | 34109 | .dst_temps = .{.mem}, |
| | 34110 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 34111 | .each = .{ .once = &.{ |
| | 34112 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 34113 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 34114 | .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 34115 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 34116 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 34117 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 34118 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 34119 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 34120 | } }, |
| | 34121 | }, .{ |
| | 34122 | .required_features = .{ .sse, null, null, null }, |
| | 34123 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 34124 | .patterns = &.{ |
| | 34125 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 34126 | }, |
| | 34127 | .call_frame = .{ .alignment = .@"16" }, |
| | 34128 | .extra_temps = .{ |
| | 34129 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 34130 | else => unreachable, |
| | 34131 | .down => "floorq", |
| | 34132 | .up => "ceilq", |
| | 34133 | .zero => "truncq", |
| | 34134 | } } } }, |
| | 34135 | .unused, |
| | 34136 | .unused, |
| | 34137 | .unused, |
| | 34138 | .unused, |
| | 34139 | .unused, |
| | 34140 | .unused, |
| | 34141 | .unused, |
| | 34142 | .unused, |
| | 34143 | }, |
| | 34144 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 34145 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 34146 | .each = .{ .once = &.{ |
| | 34147 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 34148 | } }, |
| | 34149 | }, .{ |
| | 34150 | .required_features = .{ .avx, null, null, null }, |
| | 34151 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 34152 | .patterns = &.{ |
| | 34153 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 34154 | }, |
| | 34155 | .call_frame = .{ .alignment = .@"16" }, |
| | 34156 | .extra_temps = .{ |
| | 34157 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 34158 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 34159 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 34160 | else => unreachable, |
| | 34161 | .down => "floorq", |
| | 34162 | .up => "ceilq", |
| | 34163 | .zero => "truncq", |
| | 34164 | } } } }, |
| | 34165 | .unused, |
| | 34166 | .unused, |
| | 34167 | .unused, |
| | 34168 | .unused, |
| | 34169 | .unused, |
| | 34170 | .unused, |
| | 34171 | }, |
| | 34172 | .dst_temps = .{.mem}, |
| | 34173 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 34174 | .each = .{ .once = &.{ |
| | 34175 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 34176 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 34177 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 34178 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 34179 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 34180 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 34181 | } }, |
| | 34182 | }, .{ |
| | 34183 | .required_features = .{ .sse2, null, null, null }, |
| | 34184 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 34185 | .patterns = &.{ |
| | 34186 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 34187 | }, |
| | 34188 | .call_frame = .{ .alignment = .@"16" }, |
| | 34189 | .extra_temps = .{ |
| | 34190 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 34191 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 34192 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 34193 | else => unreachable, |
| | 34194 | .down => "floorq", |
| | 34195 | .up => "ceilq", |
| | 34196 | .zero => "truncq", |
| | 34197 | } } } }, |
| | 34198 | .unused, |
| | 34199 | .unused, |
| | 34200 | .unused, |
| | 34201 | .unused, |
| | 34202 | .unused, |
| | 34203 | .unused, |
| | 34204 | }, |
| | 34205 | .dst_temps = .{.mem}, |
| | 34206 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 34207 | .each = .{ .once = &.{ |
| | 34208 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 34209 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 34210 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 34211 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 34212 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 34213 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 34214 | } }, |
| | 34215 | }, .{ |
| | 34216 | .required_features = .{ .sse, null, null, null }, |
| | 34217 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 34218 | .patterns = &.{ |
| | 34219 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 34220 | }, |
| | 34221 | .call_frame = .{ .alignment = .@"16" }, |
| | 34222 | .extra_temps = .{ |
| | 34223 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 34224 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 34225 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { |
| | 34226 | else => unreachable, |
| | 34227 | .down => "floorq", |
| | 34228 | .up => "ceilq", |
| | 34229 | .zero => "truncq", |
| | 34230 | } } } }, |
| | 34231 | .unused, |
| | 34232 | .unused, |
| | 34233 | .unused, |
| | 34234 | .unused, |
| | 34235 | .unused, |
| | 34236 | .unused, |
| | 34237 | }, |
| | 34238 | .dst_temps = .{.mem}, |
| | 34239 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 34240 | .each = .{ .once = &.{ |
| | 34241 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 34242 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 34243 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 34244 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 34245 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 34246 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 34247 | } }, |
| 20252 | } }, | 34248 | } }, |
| 20253 | }, .{ | 34249 | }) catch |err| switch (err) { |
| | 34250 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ |
| | 34251 | @tagName(air_tag), |
| | 34252 | cg.typeOf(un_op).fmt(pt), |
| | 34253 | ops[0].tracking(cg), |
| | 34254 | }), |
| | 34255 | else => |e| return e, |
| | 34256 | }; |
| | 34257 | try res[0].finish(inst, &.{un_op}, &ops, cg); |
| | 34258 | }, |
| | 34259 | .neg, .neg_optimized => |air_tag| if (use_old) try cg.airFloatSign(inst, .neg) else { |
| | 34260 | const un_op = air_datas[@intFromEnum(inst)].un_op; |
| | 34261 | var ops = try cg.tempsFromOperands(inst, .{un_op}); |
| | 34262 | var res: [1]Temp = undefined; |
| | 34263 | cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{ |
| 20254 | .required_features = .{ .avx, null, null, null }, | 34264 | .required_features = .{ .avx, null, null, null }, |
| 20255 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any }, | 34265 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 20256 | .patterns = &.{ | 34266 | .patterns = &.{ |
| 20257 | .{ .src = .{ .to_sse, .none } }, | 34267 | .{ .src = .{ .to_sse, .none, .none } }, |
| 20258 | }, | 34268 | }, |
| 20259 | .extra_temps = .{ | 34269 | .extra_temps = .{ |
| 20260 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 34270 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 20261 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 34271 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20262 | .unused, | 34272 | .unused, |
| 20263 | .unused, | 34273 | .unused, |
| 20264 | .unused, | 34274 | .unused, |
| ... | @@ -20270,17 +34280,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20270,17 +34280,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20270 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 34280 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 20271 | .each = .{ .once = &.{ | 34281 | .each = .{ .once = &.{ |
| 20272 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34282 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20273 | .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, | 34283 | .{ ._, .v_ps, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 20274 | } }, | 34284 | } }, |
| 20275 | }, .{ | 34285 | }, .{ |
| 20276 | .required_features = .{ .sse, null, null, null }, | 34286 | .required_features = .{ .sse, null, null, null }, |
| 20277 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any }, | 34287 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 20278 | .patterns = &.{ | 34288 | .patterns = &.{ |
| 20279 | .{ .src = .{ .to_mut_sse, .none } }, | 34289 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 20280 | }, | 34290 | }, |
| 20281 | .extra_temps = .{ | 34291 | .extra_temps = .{ |
| 20282 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 34292 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 20283 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 34293 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20284 | .unused, | 34294 | .unused, |
| 20285 | .unused, | 34295 | .unused, |
| 20286 | .unused, | 34296 | .unused, |
| ... | @@ -20292,17 +34302,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20292,17 +34302,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20292 | .dst_temps = .{.{ .ref = .src0 }}, | 34302 | .dst_temps = .{.{ .ref = .src0 }}, |
| 20293 | .each = .{ .once = &.{ | 34303 | .each = .{ .once = &.{ |
| 20294 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34304 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20295 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, | 34305 | .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 20296 | } }, | 34306 | } }, |
| 20297 | }, .{ | 34307 | }, .{ |
| 20298 | .required_features = .{ .avx, null, null, null }, | 34308 | .required_features = .{ .avx, null, null, null }, |
| 20299 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any }, | 34309 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| 20300 | .patterns = &.{ | 34310 | .patterns = &.{ |
| 20301 | .{ .src = .{ .to_sse, .none } }, | 34311 | .{ .src = .{ .to_sse, .none, .none } }, |
| 20302 | }, | 34312 | }, |
| 20303 | .extra_temps = .{ | 34313 | .extra_temps = .{ |
| 20304 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 34314 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 20305 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, | 34315 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 20306 | .unused, | 34316 | .unused, |
| 20307 | .unused, | 34317 | .unused, |
| 20308 | .unused, | 34318 | .unused, |
| ... | @@ -20314,17 +34324,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20314,17 +34324,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20314 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 34324 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 20315 | .each = .{ .once = &.{ | 34325 | .each = .{ .once = &.{ |
| 20316 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34326 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20317 | .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, | 34327 | .{ ._, .v_ps, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 20318 | } }, | 34328 | } }, |
| 20319 | }, .{ | 34329 | }, .{ |
| 20320 | .required_features = .{ .avx, null, null, null }, | 34330 | .required_features = .{ .avx, null, null, null }, |
| 20321 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any }, | 34331 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 20322 | .patterns = &.{ | 34332 | .patterns = &.{ |
| 20323 | .{ .src = .{ .to_sse, .none } }, | 34333 | .{ .src = .{ .to_sse, .none, .none } }, |
| 20324 | }, | 34334 | }, |
| 20325 | .extra_temps = .{ | 34335 | .extra_temps = .{ |
| 20326 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 34336 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 20327 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 34337 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20328 | .unused, | 34338 | .unused, |
| 20329 | .unused, | 34339 | .unused, |
| 20330 | .unused, | 34340 | .unused, |
| ... | @@ -20336,17 +34346,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20336,17 +34346,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20336 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 34346 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 20337 | .each = .{ .once = &.{ | 34347 | .each = .{ .once = &.{ |
| 20338 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34348 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20339 | .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, | 34349 | .{ ._, .v_pd, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 20340 | } }, | 34350 | } }, |
| 20341 | }, .{ | 34351 | }, .{ |
| 20342 | .required_features = .{ .sse2, null, null, null }, | 34352 | .required_features = .{ .sse2, null, null, null }, |
| 20343 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any }, | 34353 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 20344 | .patterns = &.{ | 34354 | .patterns = &.{ |
| 20345 | .{ .src = .{ .to_mut_sse, .none } }, | 34355 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 20346 | }, | 34356 | }, |
| 20347 | .extra_temps = .{ | 34357 | .extra_temps = .{ |
| 20348 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 34358 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 20349 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 34359 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20350 | .unused, | 34360 | .unused, |
| 20351 | .unused, | 34361 | .unused, |
| 20352 | .unused, | 34362 | .unused, |
| ... | @@ -20358,17 +34368,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20358,17 +34368,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20358 | .dst_temps = .{.{ .ref = .src0 }}, | 34368 | .dst_temps = .{.{ .ref = .src0 }}, |
| 20359 | .each = .{ .once = &.{ | 34369 | .each = .{ .once = &.{ |
| 20360 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34370 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20361 | .{ ._, ._pd, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, | 34371 | .{ ._, ._pd, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 20362 | } }, | 34372 | } }, |
| 20363 | }, .{ | 34373 | }, .{ |
| 20364 | .required_features = .{ .avx, null, null, null }, | 34374 | .required_features = .{ .avx, null, null, null }, |
| 20365 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any }, | 34375 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| 20366 | .patterns = &.{ | 34376 | .patterns = &.{ |
| 20367 | .{ .src = .{ .to_sse, .none } }, | 34377 | .{ .src = .{ .to_sse, .none, .none } }, |
| 20368 | }, | 34378 | }, |
| 20369 | .extra_temps = .{ | 34379 | .extra_temps = .{ |
| 20370 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 34380 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 20371 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, | 34381 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 20372 | .unused, | 34382 | .unused, |
| 20373 | .unused, | 34383 | .unused, |
| 20374 | .unused, | 34384 | .unused, |
| ... | @@ -20380,14 +34390,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20380,14 +34390,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20380 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 34390 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 20381 | .each = .{ .once = &.{ | 34391 | .each = .{ .once = &.{ |
| 20382 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34392 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20383 | .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, | 34393 | .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 20384 | } }, | 34394 | } }, |
| 20385 | }, .{ | 34395 | }, .{ |
| 20386 | .required_features = .{ .x87, null, null, null }, | 34396 | .required_features = .{ .x87, null, null, null }, |
| 20387 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 34397 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| 20388 | .patterns = &.{ | 34398 | .patterns = &.{ |
| 20389 | .{ .src = .{ .mem, .none } }, | 34399 | .{ .src = .{ .mem, .none, .none } }, |
| 20390 | .{ .src = .{ .to_x87, .none } }, | 34400 | .{ .src = .{ .to_x87, .none, .none } }, |
| 20391 | }, | 34401 | }, |
| 20392 | .extra_temps = .{ | 34402 | .extra_temps = .{ |
| 20393 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 34403 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| ... | @@ -20403,18 +34413,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20403,18 +34413,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20403 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }}, | 34413 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }}, |
| 20404 | .each = .{ .once = &.{ | 34414 | .each = .{ .once = &.{ |
| 20405 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, | 34415 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 20406 | .{ ._, .f_, .abs, ._, ._, ._, ._ }, | 34416 | .{ ._, .f_, .chs, ._, ._, ._, ._ }, |
| 20407 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, | 34417 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 20408 | } }, | 34418 | } }, |
| 20409 | }, .{ | 34419 | }, .{ |
| 20410 | .required_features = .{ .avx, null, null, null }, | 34420 | .required_features = .{ .avx, null, null, null }, |
| 20411 | .src_constraints = .{ .{ .scalar_any_float = .xword }, .any }, | 34421 | .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any }, |
| 20412 | .patterns = &.{ | 34422 | .patterns = &.{ |
| 20413 | .{ .src = .{ .to_sse, .none } }, | 34423 | .{ .src = .{ .to_sse, .none, .none } }, |
| 20414 | }, | 34424 | }, |
| 20415 | .extra_temps = .{ | 34425 | .extra_temps = .{ |
| 20416 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 34426 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 20417 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 34427 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20418 | .unused, | 34428 | .unused, |
| 20419 | .unused, | 34429 | .unused, |
| 20420 | .unused, | 34430 | .unused, |
| ... | @@ -20426,17 +34436,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20426,17 +34436,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20426 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 34436 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 20427 | .each = .{ .once = &.{ | 34437 | .each = .{ .once = &.{ |
| 20428 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34438 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20429 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, | 34439 | .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 20430 | } }, | 34440 | } }, |
| 20431 | }, .{ | 34441 | }, .{ |
| 20432 | .required_features = .{ .sse2, null, null, null }, | 34442 | .required_features = .{ .sse2, null, null, null }, |
| 20433 | .src_constraints = .{ .{ .scalar_any_float = .xword }, .any }, | 34443 | .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any }, |
| 20434 | .patterns = &.{ | 34444 | .patterns = &.{ |
| 20435 | .{ .src = .{ .to_mut_sse, .none } }, | 34445 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 20436 | }, | 34446 | }, |
| 20437 | .extra_temps = .{ | 34447 | .extra_temps = .{ |
| 20438 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 34448 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 20439 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 34449 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20440 | .unused, | 34450 | .unused, |
| 20441 | .unused, | 34451 | .unused, |
| 20442 | .unused, | 34452 | .unused, |
| ... | @@ -20448,17 +34458,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20448,17 +34458,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20448 | .dst_temps = .{.{ .ref = .src0 }}, | 34458 | .dst_temps = .{.{ .ref = .src0 }}, |
| 20449 | .each = .{ .once = &.{ | 34459 | .each = .{ .once = &.{ |
| 20450 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34460 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20451 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, | 34461 | .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 20452 | } }, | 34462 | } }, |
| 20453 | }, .{ | 34463 | }, .{ |
| 20454 | .required_features = .{ .sse, null, null, null }, | 34464 | .required_features = .{ .sse, null, null, null }, |
| 20455 | .src_constraints = .{ .{ .scalar_any_float = .xword }, .any }, | 34465 | .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any }, |
| 20456 | .patterns = &.{ | 34466 | .patterns = &.{ |
| 20457 | .{ .src = .{ .to_mut_sse, .none } }, | 34467 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 20458 | }, | 34468 | }, |
| 20459 | .extra_temps = .{ | 34469 | .extra_temps = .{ |
| 20460 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 34470 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 20461 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 34471 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20462 | .unused, | 34472 | .unused, |
| 20463 | .unused, | 34473 | .unused, |
| 20464 | .unused, | 34474 | .unused, |
| ... | @@ -20470,17 +34480,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20470,17 +34480,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20470 | .dst_temps = .{.{ .ref = .src0 }}, | 34480 | .dst_temps = .{.{ .ref = .src0 }}, |
| 20471 | .each = .{ .once = &.{ | 34481 | .each = .{ .once = &.{ |
| 20472 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34482 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20473 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, | 34483 | .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 20474 | } }, | 34484 | } }, |
| 20475 | }, .{ | 34485 | }, .{ |
| 20476 | .required_features = .{ .avx2, null, null, null }, | 34486 | .required_features = .{ .avx2, null, null, null }, |
| 20477 | .src_constraints = .{ .{ .scalar_any_float = .yword }, .any }, | 34487 | .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any }, |
| 20478 | .patterns = &.{ | 34488 | .patterns = &.{ |
| 20479 | .{ .src = .{ .to_sse, .none } }, | 34489 | .{ .src = .{ .to_sse, .none, .none } }, |
| 20480 | }, | 34490 | }, |
| 20481 | .extra_temps = .{ | 34491 | .extra_temps = .{ |
| 20482 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 34492 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 20483 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, | 34493 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 20484 | .unused, | 34494 | .unused, |
| 20485 | .unused, | 34495 | .unused, |
| 20486 | .unused, | 34496 | .unused, |
| ... | @@ -20492,17 +34502,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20492,17 +34502,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20492 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 34502 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 20493 | .each = .{ .once = &.{ | 34503 | .each = .{ .once = &.{ |
| 20494 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34504 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20495 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, | 34505 | .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 20496 | } }, | 34506 | } }, |
| 20497 | }, .{ | 34507 | }, .{ |
| 20498 | .required_features = .{ .avx, null, null, null }, | 34508 | .required_features = .{ .avx, null, null, null }, |
| 20499 | .src_constraints = .{ .{ .scalar_any_float = .yword }, .any }, | 34509 | .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any }, |
| 20500 | .patterns = &.{ | 34510 | .patterns = &.{ |
| 20501 | .{ .src = .{ .to_sse, .none } }, | 34511 | .{ .src = .{ .to_sse, .none, .none } }, |
| 20502 | }, | 34512 | }, |
| 20503 | .extra_temps = .{ | 34513 | .extra_temps = .{ |
| 20504 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 34514 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 20505 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, | 34515 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 20506 | .unused, | 34516 | .unused, |
| 20507 | .unused, | 34517 | .unused, |
| 20508 | .unused, | 34518 | .unused, |
| ... | @@ -20514,17 +34524,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20514,17 +34524,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20514 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 34524 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 20515 | .each = .{ .once = &.{ | 34525 | .each = .{ .once = &.{ |
| 20516 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34526 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20517 | .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, | 34527 | .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 20518 | } }, | 34528 | } }, |
| 20519 | }, .{ | 34529 | }, .{ |
| 20520 | .required_features = .{ .avx, null, null, null }, | 34530 | .required_features = .{ .avx, null, null, null }, |
| 20521 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any }, | 34531 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| 20522 | .patterns = &.{ | 34532 | .patterns = &.{ |
| 20523 | .{ .src = .{ .to_mem, .none } }, | 34533 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20524 | }, | 34534 | }, |
| 20525 | .extra_temps = .{ | 34535 | .extra_temps = .{ |
| 20526 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 34536 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20527 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, | 34537 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 20528 | .{ .kind = .{ .rc = .sse } }, | 34538 | .{ .kind = .{ .rc = .sse } }, |
| 20529 | .{ .kind = .{ .rc = .sse } }, | 34539 | .{ .kind = .{ .rc = .sse } }, |
| 20530 | .unused, | 34540 | .unused, |
| ... | @@ -20538,20 +34548,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20538,20 +34548,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20538 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34548 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20539 | .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ }, | 34549 | .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| 20540 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 34550 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20541 | .{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, | 34551 | .{ .@"0:", .v_ps, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 20542 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, | 34552 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| 20543 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 34553 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 20544 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 34554 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20545 | } }, | 34555 | } }, |
| 20546 | }, .{ | 34556 | }, .{ |
| 20547 | .required_features = .{ .sse, null, null, null }, | 34557 | .required_features = .{ .sse, null, null, null }, |
| 20548 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any }, | 34558 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 20549 | .patterns = &.{ | 34559 | .patterns = &.{ |
| 20550 | .{ .src = .{ .to_mem, .none } }, | 34560 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20551 | }, | 34561 | }, |
| 20552 | .extra_temps = .{ | 34562 | .extra_temps = .{ |
| 20553 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 34563 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20554 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 34564 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20555 | .{ .kind = .{ .rc = .sse } }, | 34565 | .{ .kind = .{ .rc = .sse } }, |
| 20556 | .{ .kind = .{ .rc = .sse } }, | 34566 | .{ .kind = .{ .rc = .sse } }, |
| 20557 | .unused, | 34567 | .unused, |
| ... | @@ -20566,20 +34576,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20566,20 +34576,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20566 | .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, | 34576 | .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 20567 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 34577 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20568 | .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, | 34578 | .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 20569 | .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 34579 | .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 20570 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | 34580 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 20571 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 34581 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 20572 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 34582 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20573 | } }, | 34583 | } }, |
| 20574 | }, .{ | 34584 | }, .{ |
| 20575 | .required_features = .{ .avx, null, null, null }, | 34585 | .required_features = .{ .avx, null, null, null }, |
| 20576 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any }, | 34586 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| 20577 | .patterns = &.{ | 34587 | .patterns = &.{ |
| 20578 | .{ .src = .{ .to_mem, .none } }, | 34588 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20579 | }, | 34589 | }, |
| 20580 | .extra_temps = .{ | 34590 | .extra_temps = .{ |
| 20581 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 34591 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20582 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, | 34592 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 20583 | .{ .kind = .{ .rc = .sse } }, | 34593 | .{ .kind = .{ .rc = .sse } }, |
| 20584 | .{ .kind = .{ .rc = .sse } }, | 34594 | .{ .kind = .{ .rc = .sse } }, |
| 20585 | .unused, | 34595 | .unused, |
| ... | @@ -20593,20 +34603,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20593,20 +34603,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20593 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34603 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20594 | .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ }, | 34604 | .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| 20595 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 34605 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20596 | .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, | 34606 | .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 20597 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, | 34607 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| 20598 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 34608 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 20599 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 34609 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20600 | } }, | 34610 | } }, |
| 20601 | }, .{ | 34611 | }, .{ |
| 20602 | .required_features = .{ .sse2, null, null, null }, | 34612 | .required_features = .{ .sse2, null, null, null }, |
| 20603 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any }, | 34613 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 20604 | .patterns = &.{ | 34614 | .patterns = &.{ |
| 20605 | .{ .src = .{ .to_mem, .none } }, | 34615 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20606 | }, | 34616 | }, |
| 20607 | .extra_temps = .{ | 34617 | .extra_temps = .{ |
| 20608 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 34618 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20609 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 34619 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20610 | .{ .kind = .{ .rc = .sse } }, | 34620 | .{ .kind = .{ .rc = .sse } }, |
| 20611 | .{ .kind = .{ .rc = .sse } }, | 34621 | .{ .kind = .{ .rc = .sse } }, |
| 20612 | .unused, | 34622 | .unused, |
| ... | @@ -20621,20 +34631,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20621,20 +34631,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20621 | .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, | 34631 | .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 20622 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 34632 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20623 | .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, | 34633 | .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 20624 | .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 34634 | .{ ._, ._pd, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 20625 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | 34635 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 20626 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 34636 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 20627 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 34637 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20628 | } }, | 34638 | } }, |
| 20629 | }, .{ | 34639 | }, .{ |
| 20630 | .required_features = .{ .avx2, null, null, null }, | 34640 | .required_features = .{ .avx2, null, null, null }, |
| 20631 | .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any }, | 34641 | .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any }, |
| 20632 | .patterns = &.{ | 34642 | .patterns = &.{ |
| 20633 | .{ .src = .{ .to_mem, .none } }, | 34643 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20634 | }, | 34644 | }, |
| 20635 | .extra_temps = .{ | 34645 | .extra_temps = .{ |
| 20636 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 34646 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20637 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, | 34647 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 20638 | .{ .kind = .{ .rc = .sse } }, | 34648 | .{ .kind = .{ .rc = .sse } }, |
| 20639 | .{ .kind = .{ .rc = .sse } }, | 34649 | .{ .kind = .{ .rc = .sse } }, |
| 20640 | .unused, | 34650 | .unused, |
| ... | @@ -20648,20 +34658,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20648,20 +34658,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20648 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34658 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20649 | .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ }, | 34659 | .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| 20650 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 34660 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20651 | .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, | 34661 | .{ .@"0:", .vp_, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 20652 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, | 34662 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| 20653 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 34663 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 20654 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 34664 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20655 | } }, | 34665 | } }, |
| 20656 | }, .{ | 34666 | }, .{ |
| 20657 | .required_features = .{ .avx, null, null, null }, | 34667 | .required_features = .{ .avx, null, null, null }, |
| 20658 | .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any }, | 34668 | .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any }, |
| 20659 | .patterns = &.{ | 34669 | .patterns = &.{ |
| 20660 | .{ .src = .{ .to_mem, .none } }, | 34670 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20661 | }, | 34671 | }, |
| 20662 | .extra_temps = .{ | 34672 | .extra_temps = .{ |
| 20663 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 34673 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20664 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, | 34674 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 20665 | .{ .kind = .{ .rc = .sse } }, | 34675 | .{ .kind = .{ .rc = .sse } }, |
| 20666 | .{ .kind = .{ .rc = .sse } }, | 34676 | .{ .kind = .{ .rc = .sse } }, |
| 20667 | .unused, | 34677 | .unused, |
| ... | @@ -20675,20 +34685,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20675,20 +34685,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20675 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 34685 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 20676 | .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ }, | 34686 | .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| 20677 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 34687 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20678 | .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, | 34688 | .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 20679 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, | 34689 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| 20680 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 34690 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 20681 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 34691 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20682 | } }, | 34692 | } }, |
| 20683 | }, .{ | 34693 | }, .{ |
| 20684 | .required_features = .{ .sse2, null, null, null }, | 34694 | .required_features = .{ .sse2, null, null, null }, |
| 20685 | .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any }, | 34695 | .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any }, |
| 20686 | .patterns = &.{ | 34696 | .patterns = &.{ |
| 20687 | .{ .src = .{ .to_mem, .none } }, | 34697 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20688 | }, | 34698 | }, |
| 20689 | .extra_temps = .{ | 34699 | .extra_temps = .{ |
| 20690 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 34700 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20691 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 34701 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20692 | .{ .kind = .{ .rc = .sse } }, | 34702 | .{ .kind = .{ .rc = .sse } }, |
| 20693 | .{ .kind = .{ .rc = .sse } }, | 34703 | .{ .kind = .{ .rc = .sse } }, |
| 20694 | .unused, | 34704 | .unused, |
| ... | @@ -20703,20 +34713,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20703,20 +34713,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20703 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, | 34713 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 20704 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 34714 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20705 | .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, | 34715 | .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, |
| 20706 | .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 34716 | .{ ._, .p_, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 20707 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | 34717 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 20708 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 34718 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 20709 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 34719 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 20710 | } }, | 34720 | } }, |
| 20711 | }, .{ | 34721 | }, .{ |
| 20712 | .required_features = .{ .sse, null, null, null }, | 34722 | .required_features = .{ .sse, null, null, null }, |
| 20713 | .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any }, | 34723 | .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any }, |
| 20714 | .patterns = &.{ | 34724 | .patterns = &.{ |
| 20715 | .{ .src = .{ .to_mem, .none } }, | 34725 | .{ .src = .{ .to_mem, .none, .none } }, |
| 20716 | }, | 34726 | }, |
| 20717 | .extra_temps = .{ | 34727 | .extra_temps = .{ |
| 20718 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 34728 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 20719 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, | 34729 | .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 20720 | .{ .kind = .{ .rc = .sse } }, | 34730 | .{ .kind = .{ .rc = .sse } }, |
| 20721 | .{ .kind = .{ .rc = .sse } }, | 34731 | .{ .kind = .{ .rc = .sse } }, |
| 20722 | .unused, | 34732 | .unused, |
| ... | @@ -20731,7 +34741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20731,7 +34741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20731 | .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, | 34741 | .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 20732 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 34742 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 20733 | .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, | 34743 | .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 20734 | .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 34744 | .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 20735 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | 34745 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 20736 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 34746 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 20737 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 34747 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| ... | @@ -20739,12 +34749,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20739,12 +34749,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20739 | } }) catch |err| switch (err) { | 34749 | } }) catch |err| switch (err) { |
| 20740 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ | 34750 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ |
| 20741 | @tagName(air_tag), | 34751 | @tagName(air_tag), |
| 20742 | cg.typeOf(ty_op.operand).fmt(pt), | 34752 | cg.typeOf(un_op).fmt(pt), |
| 20743 | ops[0].tracking(cg), | 34753 | ops[0].tracking(cg), |
| 20744 | }), | 34754 | }), |
| 20745 | else => |e| return e, | 34755 | else => |e| return e, |
| 20746 | }; | 34756 | }; |
| 20747 | try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); | 34757 | try res[0].finish(inst, &.{un_op}, &ops, cg); |
| 20748 | }, | 34758 | }, |
| 20749 | | 34759 | |
| 20750 | .cmp_lt, | 34760 | .cmp_lt, |
| ... | @@ -20773,9 +34783,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20773,9 +34783,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20773 | }) { | 34783 | }) { |
| 20774 | inline false, true => |strict| comptime &.{ .{ | 34784 | inline false, true => |strict| comptime &.{ .{ |
| 20775 | .required_features = .{ .f16c, null, null, null }, | 34785 | .required_features = .{ .f16c, null, null, null }, |
| 20776 | .src_constraints = .{ .{ .float = .word }, .{ .float = .word } }, | 34786 | .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any }, |
| 20777 | .patterns = &.{ | 34787 | .patterns = &.{ |
| 20778 | .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } }, | 34788 | .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 20779 | }, | 34789 | }, |
| 20780 | .extra_temps = .{ | 34790 | .extra_temps = .{ |
| 20781 | .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 34791 | .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| ... | @@ -20800,9 +34810,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20800,9 +34810,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20800 | } }, | 34810 | } }, |
| 20801 | }, .{ | 34811 | }, .{ |
| 20802 | .required_features = .{ .sse, null, null, null }, | 34812 | .required_features = .{ .sse, null, null, null }, |
| 20803 | .src_constraints = .{ .{ .float = .word }, .{ .float = .word } }, | 34813 | .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any }, |
| 20804 | .patterns = &.{ | 34814 | .patterns = &.{ |
| 20805 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | 34815 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 20806 | }, | 34816 | }, |
| 20807 | .call_frame = .{ .alignment = .@"16" }, | 34817 | .call_frame = .{ .alignment = .@"16" }, |
| 20808 | .extra_temps = .{ | 34818 | .extra_temps = .{ |
| ... | @@ -20827,10 +34837,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20827,10 +34837,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20827 | } }, | 34837 | } }, |
| 20828 | }, .{ | 34838 | }, .{ |
| 20829 | .required_features = .{ .avx, null, null, null }, | 34839 | .required_features = .{ .avx, null, null, null }, |
| 20830 | .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } }, | 34840 | .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any }, |
| 20831 | .patterns = &.{ | 34841 | .patterns = &.{ |
| 20832 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 34842 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 20833 | .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } }, | 34843 | .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 20834 | }, | 34844 | }, |
| 20835 | .dst_temps = .{.{ .cc = switch (strict) { | 34845 | .dst_temps = .{.{ .cc = switch (strict) { |
| 20836 | true => .a, | 34846 | true => .a, |
| ... | @@ -20842,10 +34852,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20842,10 +34852,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20842 | } }, | 34852 | } }, |
| 20843 | }, .{ | 34853 | }, .{ |
| 20844 | .required_features = .{ .sse, null, null, null }, | 34854 | .required_features = .{ .sse, null, null, null }, |
| 20845 | .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } }, | 34855 | .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any }, |
| 20846 | .patterns = &.{ | 34856 | .patterns = &.{ |
| 20847 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 34857 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 20848 | .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } }, | 34858 | .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 20849 | }, | 34859 | }, |
| 20850 | .dst_temps = .{.{ .cc = switch (strict) { | 34860 | .dst_temps = .{.{ .cc = switch (strict) { |
| 20851 | true => .a, | 34861 | true => .a, |
| ... | @@ -20857,10 +34867,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20857,10 +34867,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20857 | } }, | 34867 | } }, |
| 20858 | }, .{ | 34868 | }, .{ |
| 20859 | .required_features = .{ .avx, null, null, null }, | 34869 | .required_features = .{ .avx, null, null, null }, |
| 20860 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, | 34870 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, |
| 20861 | .patterns = &.{ | 34871 | .patterns = &.{ |
| 20862 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 34872 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 20863 | .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } }, | 34873 | .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 20864 | }, | 34874 | }, |
| 20865 | .dst_temps = .{.{ .cc = switch (strict) { | 34875 | .dst_temps = .{.{ .cc = switch (strict) { |
| 20866 | true => .a, | 34876 | true => .a, |
| ... | @@ -20872,10 +34882,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20872,10 +34882,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20872 | } }, | 34882 | } }, |
| 20873 | }, .{ | 34883 | }, .{ |
| 20874 | .required_features = .{ .sse2, null, null, null }, | 34884 | .required_features = .{ .sse2, null, null, null }, |
| 20875 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, | 34885 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, |
| 20876 | .patterns = &.{ | 34886 | .patterns = &.{ |
| 20877 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 34887 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 20878 | .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } }, | 34888 | .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 20879 | }, | 34889 | }, |
| 20880 | .dst_temps = .{.{ .cc = switch (strict) { | 34890 | .dst_temps = .{.{ .cc = switch (strict) { |
| 20881 | true => .a, | 34891 | true => .a, |
| ... | @@ -20887,13 +34897,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20887,13 +34897,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20887 | } }, | 34897 | } }, |
| 20888 | }, .{ | 34898 | }, .{ |
| 20889 | .required_features = .{ .x87, .cmov, null, null }, | 34899 | .required_features = .{ .x87, .cmov, null, null }, |
| 20890 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, | 34900 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, |
| 20891 | .patterns = &.{ | 34901 | .patterns = &.{ |
| 20892 | .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } }, | 34902 | .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, |
| 20893 | }, | 34903 | }, |
| 20894 | .extra_temps = .{ | 34904 | .extra_temps = .{ |
| 20895 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 34905 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 20896 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 34906 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 20897 | .unused, | 34907 | .unused, |
| 20898 | .unused, | 34908 | .unused, |
| 20899 | .unused, | 34909 | .unused, |
| ... | @@ -20915,13 +34925,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20915,13 +34925,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20915 | } }, | 34925 | } }, |
| 20916 | }, .{ | 34926 | }, .{ |
| 20917 | .required_features = .{ .sahf, .x87, null, null }, | 34927 | .required_features = .{ .sahf, .x87, null, null }, |
| 20918 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, | 34928 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, |
| 20919 | .patterns = &.{ | 34929 | .patterns = &.{ |
| 20920 | .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } }, | 34930 | .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, |
| 20921 | }, | 34931 | }, |
| 20922 | .extra_temps = .{ | 34932 | .extra_temps = .{ |
| 20923 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 34933 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 20924 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 34934 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 20925 | .{ .type = .u8, .kind = .{ .reg = .ah } }, | 34935 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 20926 | .unused, | 34936 | .unused, |
| 20927 | .unused, | 34937 | .unused, |
| ... | @@ -20944,13 +34954,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20944,13 +34954,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20944 | } }, | 34954 | } }, |
| 20945 | }, .{ | 34955 | }, .{ |
| 20946 | .required_features = .{ .x87, null, null, null }, | 34956 | .required_features = .{ .x87, null, null, null }, |
| 20947 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, | 34957 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, |
| 20948 | .patterns = &.{ | 34958 | .patterns = &.{ |
| 20949 | .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } }, | 34959 | .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, |
| 20950 | }, | 34960 | }, |
| 20951 | .extra_temps = .{ | 34961 | .extra_temps = .{ |
| 20952 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 34962 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 20953 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 34963 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 20954 | .{ .type = .u8, .kind = .{ .reg = .ah } }, | 34964 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 20955 | .unused, | 34965 | .unused, |
| 20956 | .unused, | 34966 | .unused, |
| ... | @@ -20976,10 +34986,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20976,10 +34986,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20976 | } }, | 34986 | } }, |
| 20977 | }, .{ | 34987 | }, .{ |
| 20978 | .required_features = .{ .x87, .cmov, null, null }, | 34988 | .required_features = .{ .x87, .cmov, null, null }, |
| 20979 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, | 34989 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, |
| 20980 | .patterns = &.{ | 34990 | .patterns = &.{ |
| 20981 | .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, | 34991 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| 20982 | .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } }, | 34992 | .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } }, |
| 20983 | }, | 34993 | }, |
| 20984 | .extra_temps = .{ | 34994 | .extra_temps = .{ |
| 20985 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 34995 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| ... | @@ -21003,9 +35013,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21003,9 +35013,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21003 | } }, | 35013 | } }, |
| 21004 | }, .{ | 35014 | }, .{ |
| 21005 | .required_features = .{ .sahf, .x87, null, null }, | 35015 | .required_features = .{ .sahf, .x87, null, null }, |
| 21006 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, | 35016 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, |
| 21007 | .patterns = &.{ | 35017 | .patterns = &.{ |
| 21008 | .{ .src = .{ .mem, .mem }, .commute = .{ 0, 1 } }, | 35018 | .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } }, |
| 21009 | }, | 35019 | }, |
| 21010 | .extra_temps = .{ | 35020 | .extra_temps = .{ |
| 21011 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 35021 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| ... | @@ -21032,10 +35042,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21032,10 +35042,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21032 | } }, | 35042 | } }, |
| 21033 | }, .{ | 35043 | }, .{ |
| 21034 | .required_features = .{ .sahf, .x87, null, null }, | 35044 | .required_features = .{ .sahf, .x87, null, null }, |
| 21035 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, | 35045 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, |
| 21036 | .patterns = &.{ | 35046 | .patterns = &.{ |
| 21037 | .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, | 35047 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| 21038 | .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } }, | 35048 | .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } }, |
| 21039 | }, | 35049 | }, |
| 21040 | .extra_temps = .{ | 35050 | .extra_temps = .{ |
| 21041 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 35051 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| ... | @@ -21061,9 +35071,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21061,9 +35071,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21061 | } }, | 35071 | } }, |
| 21062 | }, .{ | 35072 | }, .{ |
| 21063 | .required_features = .{ .x87, null, null, null }, | 35073 | .required_features = .{ .x87, null, null, null }, |
| 21064 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, | 35074 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, |
| 21065 | .patterns = &.{ | 35075 | .patterns = &.{ |
| 21066 | .{ .src = .{ .mem, .mem }, .commute = .{ 0, 1 } }, | 35076 | .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } }, |
| 21067 | }, | 35077 | }, |
| 21068 | .extra_temps = .{ | 35078 | .extra_temps = .{ |
| 21069 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 35079 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| ... | @@ -21093,10 +35103,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21093,10 +35103,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21093 | } }, | 35103 | } }, |
| 21094 | }, .{ | 35104 | }, .{ |
| 21095 | .required_features = .{ .x87, null, null, null }, | 35105 | .required_features = .{ .x87, null, null, null }, |
| 21096 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, | 35106 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, |
| 21097 | .patterns = &.{ | 35107 | .patterns = &.{ |
| 21098 | .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, | 35108 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| 21099 | .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } }, | 35109 | .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } }, |
| 21100 | }, | 35110 | }, |
| 21101 | .extra_temps = .{ | 35111 | .extra_temps = .{ |
| 21102 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 35112 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| ... | @@ -21125,9 +35135,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21125,9 +35135,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21125 | } }, | 35135 | } }, |
| 21126 | }, .{ | 35136 | }, .{ |
| 21127 | .required_features = .{ .sse, null, null, null }, | 35137 | .required_features = .{ .sse, null, null, null }, |
| 21128 | .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword } }, | 35138 | .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any }, |
| 21129 | .patterns = &.{ | 35139 | .patterns = &.{ |
| 21130 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | 35140 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 21131 | }, | 35141 | }, |
| 21132 | .call_frame = .{ .alignment = .@"16" }, | 35142 | .call_frame = .{ .alignment = .@"16" }, |
| 21133 | .extra_temps = .{ | 35143 | .extra_temps = .{ |
| ... | @@ -21205,15 +35215,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21205,15 +35215,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21205 | switch (Condition.fromCompareOperatorUnsigned(cmp_op)) { | 35215 | switch (Condition.fromCompareOperatorUnsigned(cmp_op)) { |
| 21206 | else => unreachable, | 35216 | else => unreachable, |
| 21207 | inline .e, .ne => |cc| comptime &.{.{ | 35217 | inline .e, .ne => |cc| comptime &.{.{ |
| 21208 | .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte } }, | 35218 | .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any }, |
| 21209 | .patterns = &.{ | 35219 | .patterns = &.{ |
| 21210 | .{ .src = .{ .mem, .imm8 } }, | 35220 | .{ .src = .{ .mem, .imm8, .none } }, |
| 21211 | .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } }, | 35221 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| 21212 | .{ .src = .{ .to_gpr, .imm8 } }, | 35222 | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| 21213 | .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } }, | 35223 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 21214 | .{ .src = .{ .mem, .to_gpr } }, | 35224 | .{ .src = .{ .mem, .to_gpr, .none } }, |
| 21215 | .{ .src = .{ .to_gpr, .mem }, .commute = .{ 0, 1 } }, | 35225 | .{ .src = .{ .to_gpr, .mem, .none }, .commute = .{ 0, 1 } }, |
| 21216 | .{ .src = .{ .to_gpr, .to_gpr } }, | 35226 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 21217 | }, | 35227 | }, |
| 21218 | .dst_temps = .{.{ .rc = .general_purpose }}, | 35228 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 21219 | .clobbers = .{ .eflags = true }, | 35229 | .clobbers = .{ .eflags = true }, |
| ... | @@ -21255,9 +35265,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21255,9 +35265,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21255 | }) { | 35265 | }) { |
| 21256 | inline false, true => |optimized| comptime &.{ .{ | 35266 | inline false, true => |optimized| comptime &.{ .{ |
| 21257 | .required_features = .{ .f16c, null, null, null }, | 35267 | .required_features = .{ .f16c, null, null, null }, |
| 21258 | .src_constraints = .{ .{ .float = .word }, .{ .float = .word } }, | 35268 | .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any }, |
| 21259 | .patterns = &.{ | 35269 | .patterns = &.{ |
| 21260 | .{ .src = .{ .to_sse, .to_sse } }, | 35270 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 21261 | }, | 35271 | }, |
| 21262 | .extra_temps = .{ | 35272 | .extra_temps = .{ |
| 21263 | .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 35273 | .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| ... | @@ -21278,13 +35288,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21278,13 +35288,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21278 | .each = .{ .once = &.{ | 35288 | .each = .{ .once = &.{ |
| 21279 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ }, | 35289 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ }, |
| 21280 | .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ }, | 35290 | .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ }, |
| 21281 | .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1x, ._, ._ }, | 35291 | .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1d, ._, ._ }, |
| 21282 | } }, | 35292 | } }, |
| 21283 | }, .{ | 35293 | }, .{ |
| 21284 | .required_features = .{ .sse, null, null, null }, | 35294 | .required_features = .{ .sse, null, null, null }, |
| 21285 | .src_constraints = .{ .{ .float = .word }, .{ .float = .word } }, | 35295 | .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any }, |
| 21286 | .patterns = &.{ | 35296 | .patterns = &.{ |
| 21287 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | 35297 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 21288 | }, | 35298 | }, |
| 21289 | .call_frame = .{ .alignment = .@"16" }, | 35299 | .call_frame = .{ .alignment = .@"16" }, |
| 21290 | .extra_temps = .{ | 35300 | .extra_temps = .{ |
| ... | @@ -21306,11 +35316,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21306,11 +35316,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21306 | } }, | 35316 | } }, |
| 21307 | }, .{ | 35317 | }, .{ |
| 21308 | .required_features = .{ .avx, null, null, null }, | 35318 | .required_features = .{ .avx, null, null, null }, |
| 21309 | .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } }, | 35319 | .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any }, |
| 21310 | .patterns = &.{ | 35320 | .patterns = &.{ |
| 21311 | .{ .src = .{ .to_sse, .mem } }, | 35321 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 21312 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 35322 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 21313 | .{ .src = .{ .to_sse, .to_sse } }, | 35323 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 21314 | }, | 35324 | }, |
| 21315 | .dst_temps = .{.{ .cc = switch (optimized) { | 35325 | .dst_temps = .{.{ .cc = switch (optimized) { |
| 21316 | false => .z_and_np, | 35326 | false => .z_and_np, |
| ... | @@ -21322,11 +35332,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21322,11 +35332,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21322 | } }, | 35332 | } }, |
| 21323 | }, .{ | 35333 | }, .{ |
| 21324 | .required_features = .{ .sse, null, null, null }, | 35334 | .required_features = .{ .sse, null, null, null }, |
| 21325 | .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } }, | 35335 | .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any }, |
| 21326 | .patterns = &.{ | 35336 | .patterns = &.{ |
| 21327 | .{ .src = .{ .to_sse, .mem } }, | 35337 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 21328 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 35338 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 21329 | .{ .src = .{ .to_sse, .to_sse } }, | 35339 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 21330 | }, | 35340 | }, |
| 21331 | .dst_temps = .{.{ .cc = switch (optimized) { | 35341 | .dst_temps = .{.{ .cc = switch (optimized) { |
| 21332 | false => .z_and_np, | 35342 | false => .z_and_np, |
| ... | @@ -21338,11 +35348,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21338,11 +35348,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21338 | } }, | 35348 | } }, |
| 21339 | }, .{ | 35349 | }, .{ |
| 21340 | .required_features = .{ .avx, null, null, null }, | 35350 | .required_features = .{ .avx, null, null, null }, |
| 21341 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, | 35351 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, |
| 21342 | .patterns = &.{ | 35352 | .patterns = &.{ |
| 21343 | .{ .src = .{ .to_sse, .mem } }, | 35353 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 21344 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 35354 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 21345 | .{ .src = .{ .to_sse, .to_sse } }, | 35355 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 21346 | }, | 35356 | }, |
| 21347 | .dst_temps = .{.{ .cc = switch (optimized) { | 35357 | .dst_temps = .{.{ .cc = switch (optimized) { |
| 21348 | false => .z_and_np, | 35358 | false => .z_and_np, |
| ... | @@ -21354,11 +35364,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21354,11 +35364,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21354 | } }, | 35364 | } }, |
| 21355 | }, .{ | 35365 | }, .{ |
| 21356 | .required_features = .{ .sse2, null, null, null }, | 35366 | .required_features = .{ .sse2, null, null, null }, |
| 21357 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, | 35367 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, |
| 21358 | .patterns = &.{ | 35368 | .patterns = &.{ |
| 21359 | .{ .src = .{ .to_sse, .mem } }, | 35369 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 21360 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, | 35370 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 21361 | .{ .src = .{ .to_sse, .to_sse } }, | 35371 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 21362 | }, | 35372 | }, |
| 21363 | .dst_temps = .{.{ .cc = switch (optimized) { | 35373 | .dst_temps = .{.{ .cc = switch (optimized) { |
| 21364 | false => .z_and_np, | 35374 | false => .z_and_np, |
| ... | @@ -21370,13 +35380,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21370,13 +35380,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21370 | } }, | 35380 | } }, |
| 21371 | }, .{ | 35381 | }, .{ |
| 21372 | .required_features = .{ .x87, .cmov, null, null }, | 35382 | .required_features = .{ .x87, .cmov, null, null }, |
| 21373 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, | 35383 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, |
| 21374 | .patterns = &.{ | 35384 | .patterns = &.{ |
| 21375 | .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } }, | 35385 | .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, |
| 21376 | }, | 35386 | }, |
| 21377 | .extra_temps = .{ | 35387 | .extra_temps = .{ |
| 21378 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 35388 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 21379 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 35389 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 21380 | .unused, | 35390 | .unused, |
| 21381 | .unused, | 35391 | .unused, |
| 21382 | .unused, | 35392 | .unused, |
| ... | @@ -21398,13 +35408,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21398,13 +35408,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21398 | } }, | 35408 | } }, |
| 21399 | }, .{ | 35409 | }, .{ |
| 21400 | .required_features = .{ .sahf, .x87, null, null }, | 35410 | .required_features = .{ .sahf, .x87, null, null }, |
| 21401 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, | 35411 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, |
| 21402 | .patterns = &.{ | 35412 | .patterns = &.{ |
| 21403 | .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } }, | 35413 | .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, |
| 21404 | }, | 35414 | }, |
| 21405 | .extra_temps = .{ | 35415 | .extra_temps = .{ |
| 21406 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 35416 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 21407 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 35417 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 21408 | .{ .type = .u8, .kind = .{ .reg = .ah } }, | 35418 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 21409 | .unused, | 35419 | .unused, |
| 21410 | .unused, | 35420 | .unused, |
| ... | @@ -21427,13 +35437,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21427,13 +35437,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21427 | } }, | 35437 | } }, |
| 21428 | }, .{ | 35438 | }, .{ |
| 21429 | .required_features = .{ .x87, null, null, null }, | 35439 | .required_features = .{ .x87, null, null, null }, |
| 21430 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, | 35440 | .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, |
| 21431 | .patterns = &.{ | 35441 | .patterns = &.{ |
| 21432 | .{ .src = .{ .to_mem, .to_mem } }, | 35442 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 21433 | }, | 35443 | }, |
| 21434 | .extra_temps = .{ | 35444 | .extra_temps = .{ |
| 21435 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 35445 | .{ .type = .f64, .kind = .{ .reg = .st6 } }, |
| 21436 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 35446 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| 21437 | .{ .type = .u8, .kind = .{ .reg = .ah } }, | 35447 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 21438 | .unused, | 35448 | .unused, |
| 21439 | .unused, | 35449 | .unused, |
| ... | @@ -21466,11 +35476,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21466,11 +35476,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21466 | } }, | 35476 | } }, |
| 21467 | }, .{ | 35477 | }, .{ |
| 21468 | .required_features = .{ .x87, .cmov, null, null }, | 35478 | .required_features = .{ .x87, .cmov, null, null }, |
| 21469 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, | 35479 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, |
| 21470 | .patterns = &.{ | 35480 | .patterns = &.{ |
| 21471 | .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, | 35481 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| 21472 | .{ .src = .{ .mem, .to_x87 } }, | 35482 | .{ .src = .{ .mem, .to_x87, .none } }, |
| 21473 | .{ .src = .{ .to_x87, .to_x87 } }, | 35483 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| 21474 | }, | 35484 | }, |
| 21475 | .extra_temps = .{ | 35485 | .extra_temps = .{ |
| 21476 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 35486 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| ... | @@ -21494,9 +35504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21494,9 +35504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21494 | } }, | 35504 | } }, |
| 21495 | }, .{ | 35505 | }, .{ |
| 21496 | .required_features = .{ .sahf, .x87, null, null }, | 35506 | .required_features = .{ .sahf, .x87, null, null }, |
| 21497 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, | 35507 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, |
| 21498 | .patterns = &.{ | 35508 | .patterns = &.{ |
| 21499 | .{ .src = .{ .mem, .mem } }, | 35509 | .{ .src = .{ .mem, .mem, .none } }, |
| 21500 | }, | 35510 | }, |
| 21501 | .extra_temps = .{ | 35511 | .extra_temps = .{ |
| 21502 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 35512 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| ... | @@ -21523,11 +35533,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21523,11 +35533,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21523 | } }, | 35533 | } }, |
| 21524 | }, .{ | 35534 | }, .{ |
| 21525 | .required_features = .{ .sahf, .x87, null, null }, | 35535 | .required_features = .{ .sahf, .x87, null, null }, |
| 21526 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, | 35536 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, |
| 21527 | .patterns = &.{ | 35537 | .patterns = &.{ |
| 21528 | .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, | 35538 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| 21529 | .{ .src = .{ .mem, .to_x87 } }, | 35539 | .{ .src = .{ .mem, .to_x87, .none } }, |
| 21530 | .{ .src = .{ .to_x87, .to_x87 } }, | 35540 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| 21531 | }, | 35541 | }, |
| 21532 | .extra_temps = .{ | 35542 | .extra_temps = .{ |
| 21533 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 35543 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| ... | @@ -21553,9 +35563,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21553,9 +35563,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21553 | } }, | 35563 | } }, |
| 21554 | }, .{ | 35564 | }, .{ |
| 21555 | .required_features = .{ .x87, null, null, null }, | 35565 | .required_features = .{ .x87, null, null, null }, |
| 21556 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, | 35566 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, |
| 21557 | .patterns = &.{ | 35567 | .patterns = &.{ |
| 21558 | .{ .src = .{ .mem, .mem } }, | 35568 | .{ .src = .{ .mem, .mem, .none } }, |
| 21559 | }, | 35569 | }, |
| 21560 | .extra_temps = .{ | 35570 | .extra_temps = .{ |
| 21561 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 35571 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| ... | @@ -21592,11 +35602,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21592,11 +35602,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21592 | } }, | 35602 | } }, |
| 21593 | }, .{ | 35603 | }, .{ |
| 21594 | .required_features = .{ .x87, null, null, null }, | 35604 | .required_features = .{ .x87, null, null, null }, |
| 21595 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, | 35605 | .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, |
| 21596 | .patterns = &.{ | 35606 | .patterns = &.{ |
| 21597 | .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, | 35607 | .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, |
| 21598 | .{ .src = .{ .mem, .to_x87 } }, | 35608 | .{ .src = .{ .mem, .to_x87, .none } }, |
| 21599 | .{ .src = .{ .to_x87, .to_x87 } }, | 35609 | .{ .src = .{ .to_x87, .to_x87, .none } }, |
| 21600 | }, | 35610 | }, |
| 21601 | .extra_temps = .{ | 35611 | .extra_temps = .{ |
| 21602 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 35612 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| ... | @@ -21631,9 +35641,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21631,9 +35641,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21631 | } }, | 35641 | } }, |
| 21632 | }, .{ | 35642 | }, .{ |
| 21633 | .required_features = .{ .sse, null, null, null }, | 35643 | .required_features = .{ .sse, null, null, null }, |
| 21634 | .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword } }, | 35644 | .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any }, |
| 21635 | .patterns = &.{ | 35645 | .patterns = &.{ |
| 21636 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | 35646 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, |
| 21637 | }, | 35647 | }, |
| 21638 | .call_frame = .{ .alignment = .@"16" }, | 35648 | .call_frame = .{ .alignment = .@"16" }, |
| 21639 | .extra_temps = .{ | 35649 | .extra_temps = .{ |
| ... | @@ -21664,279 +35674,6765 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21664,279 +35674,6765 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21664 | }, | 35674 | }, |
| 21665 | } | 35675 | } |
| 21666 | }, | 35676 | }, |
| 21667 | .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err, | 35677 | .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err, |
| 21668 | }) catch |err| switch (err) { | 35678 | }) catch |err| switch (err) { |
| 21669 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ | 35679 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| 21670 | @tagName(air_tag), | 35680 | @tagName(air_tag), |
| 21671 | cg.typeOf(bin_op.lhs).fmt(pt), | 35681 | cg.typeOf(bin_op.lhs).fmt(pt), |
| 21672 | ops[0].tracking(cg), | 35682 | ops[0].tracking(cg), |
| 21673 | ops[1].tracking(cg), | 35683 | ops[1].tracking(cg), |
| 21674 | }), | 35684 | }), |
| 21675 | else => |e| return e, | 35685 | else => |e| return e, |
| 21676 | }; | 35686 | }; |
| 21677 | if (opt_info) |*oi| { | 35687 | if (opt_info) |*oi| { |
| 21678 | for (ops) |op| for (res) |r| { | 35688 | for (ops) |op| for (res) |r| { |
| 21679 | if (op.index == r.index) break; | 35689 | if (op.index == r.index) break; |
| 21680 | } else try op.die(cg); | 35690 | } else try op.die(cg); |
| 21681 | try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{}); | 35691 | try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{}); |
| 21682 | try res[0].die(cg); | 35692 | try res[0].die(cg); |
| 21683 | res[0] = oi.res[0]; | 35693 | res[0] = oi.res[0]; |
| 21684 | try cg.restoreState(oi.state, &oi.deaths, .{ | 35694 | try cg.restoreState(oi.state, &oi.deaths, .{ |
| 21685 | .emit_instructions = true, | 35695 | .emit_instructions = true, |
| 21686 | .update_tracking = true, | 35696 | .update_tracking = true, |
| 21687 | .resurrect = true, | 35697 | .resurrect = true, |
| 21688 | .close_scope = true, | 35698 | .close_scope = true, |
| 21689 | }); | 35699 | }); |
| 21690 | cg.performReloc(oi.reloc); | 35700 | cg.performReloc(oi.reloc); |
| 21691 | @memset(&ops, res[0]); | 35701 | @memset(&ops, res[0]); |
| 21692 | } | 35702 | } |
| 21693 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); | 35703 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 21694 | }, | 35704 | }, |
| 21695 | | 35705 | |
| 21696 | .cond_br => try cg.airCondBr(inst), | 35706 | .cond_br => try cg.airCondBr(inst), |
| 21697 | .switch_br => try cg.airSwitchBr(inst), | 35707 | .switch_br => try cg.airSwitchBr(inst), |
| 21698 | .loop_switch_br => try cg.airLoopSwitchBr(inst), | 35708 | .loop_switch_br => try cg.airLoopSwitchBr(inst), |
| 21699 | .switch_dispatch => try cg.airSwitchDispatch(inst), | 35709 | .switch_dispatch => try cg.airSwitchDispatch(inst), |
| 21700 | .@"try", .try_cold => try cg.airTry(inst), | 35710 | .@"try", .try_cold => try cg.airTry(inst), |
| 21701 | .try_ptr, .try_ptr_cold => try cg.airTryPtr(inst), | 35711 | .try_ptr, .try_ptr_cold => try cg.airTryPtr(inst), |
| 21702 | .dbg_stmt => if (cg.debug_output != .none) { | 35712 | .dbg_stmt => if (cg.debug_output != .none) { |
| 21703 | const dbg_stmt = air_datas[@intFromEnum(inst)].dbg_stmt; | 35713 | const dbg_stmt = air_datas[@intFromEnum(inst)].dbg_stmt; |
| 21704 | _ = try cg.addInst(.{ | 35714 | _ = try cg.addInst(.{ |
| 21705 | .tag = .pseudo, | 35715 | .tag = .pseudo, |
| 21706 | .ops = .pseudo_dbg_line_stmt_line_column, | 35716 | .ops = .pseudo_dbg_line_stmt_line_column, |
| 21707 | .data = .{ .line_column = .{ | 35717 | .data = .{ .line_column = .{ |
| 21708 | .line = dbg_stmt.line, | 35718 | .line = dbg_stmt.line, |
| 21709 | .column = dbg_stmt.column, | 35719 | .column = dbg_stmt.column, |
| | 35720 | } }, |
| | 35721 | }); |
| | 35722 | }, |
| | 35723 | .dbg_empty_stmt => if (cg.debug_output != .none) { |
| | 35724 | if (cg.mir_instructions.len > 0) { |
| | 35725 | const prev_mir_op = &cg.mir_instructions.items(.ops)[cg.mir_instructions.len - 1]; |
| | 35726 | if (prev_mir_op.* == .pseudo_dbg_line_line_column) |
| | 35727 | prev_mir_op.* = .pseudo_dbg_line_stmt_line_column; |
| | 35728 | } |
| | 35729 | try cg.asmOpOnly(.{ ._, .nop }); |
| | 35730 | }, |
| | 35731 | .dbg_inline_block => { |
| | 35732 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; |
| | 35733 | const extra = cg.air.extraData(Air.DbgInlineBlock, ty_pl.payload); |
| | 35734 | const old_inline_func = cg.inline_func; |
| | 35735 | defer cg.inline_func = old_inline_func; |
| | 35736 | cg.inline_func = extra.data.func; |
| | 35737 | if (cg.debug_output != .none) _ = try cg.addInst(.{ |
| | 35738 | .tag = .pseudo, |
| | 35739 | .ops = .pseudo_dbg_enter_inline_func, |
| | 35740 | .data = .{ .func = extra.data.func }, |
| | 35741 | }); |
| | 35742 | try cg.lowerBlock(inst, @ptrCast(cg.air.extra[extra.end..][0..extra.data.body_len])); |
| | 35743 | if (cg.debug_output != .none) _ = try cg.addInst(.{ |
| | 35744 | .tag = .pseudo, |
| | 35745 | .ops = .pseudo_dbg_leave_inline_func, |
| | 35746 | .data = .{ .func = old_inline_func }, |
| | 35747 | }); |
| | 35748 | }, |
| | 35749 | .dbg_var_ptr, |
| | 35750 | .dbg_var_val, |
| | 35751 | .dbg_arg_inline, |
| | 35752 | => if (use_old) try cg.airDbgVar(inst) else if (cg.debug_output != .none) { |
| | 35753 | const pl_op = air_datas[@intFromEnum(inst)].pl_op; |
| | 35754 | var ops = try cg.tempsFromOperands(inst, .{pl_op.operand}); |
| | 35755 | var mcv = ops[0].tracking(cg).short; |
| | 35756 | switch (mcv) { |
| | 35757 | else => {}, |
| | 35758 | .eflags => |cc| switch (cc) { |
| | 35759 | else => {}, |
| | 35760 | // These values would self destruct. Maybe we make them use their |
| | 35761 | // turing complete dwarf expression interpreters for once? |
| | 35762 | .z_and_np, .nz_or_p => { |
| | 35763 | try cg.spillEflagsIfOccupied(); |
| | 35764 | mcv = ops[0].tracking(cg).short; |
| | 35765 | }, |
| | 35766 | }, |
| | 35767 | } |
| | 35768 | try cg.genLocalDebugInfo(inst, ops[0].tracking(cg).short); |
| | 35769 | try ops[0].die(cg); |
| | 35770 | }, |
| | 35771 | .is_null_ptr => if (use_old) try cg.airIsNullPtr(inst) else { |
| | 35772 | const un_op = air_datas[@intFromEnum(inst)].un_op; |
| | 35773 | const opt_ty = cg.typeOf(un_op).childType(zcu); |
| | 35774 | const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu); |
| | 35775 | const opt_child_ty = opt_ty.optionalChild(zcu); |
| | 35776 | const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu)); |
| | 35777 | var ops = try cg.tempsFromOperands(inst, .{un_op}); |
| | 35778 | if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg); |
| | 35779 | while (try ops[0].toLea(cg)) {} |
| | 35780 | try cg.asmMemoryImmediate( |
| | 35781 | .{ ._, .cmp }, |
| | 35782 | try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl) |
| | 35783 | .byte |
| | 35784 | else if (opt_child_ty.isSlice(zcu)) |
| | 35785 | .qword |
| | 35786 | else |
| | 35787 | .fromSize(opt_child_abi_size) }), |
| | 35788 | .u(0), |
| | 35789 | ); |
| | 35790 | const is_null = try cg.tempInit(.bool, .{ .eflags = .e }); |
| | 35791 | try is_null.finish(inst, &.{un_op}, &ops, cg); |
| | 35792 | }, |
| | 35793 | .is_non_null_ptr => if (use_old) try cg.airIsNonNullPtr(inst) else { |
| | 35794 | const un_op = air_datas[@intFromEnum(inst)].un_op; |
| | 35795 | const opt_ty = cg.typeOf(un_op).childType(zcu); |
| | 35796 | const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu); |
| | 35797 | const opt_child_ty = opt_ty.optionalChild(zcu); |
| | 35798 | const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu)); |
| | 35799 | var ops = try cg.tempsFromOperands(inst, .{un_op}); |
| | 35800 | if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg); |
| | 35801 | while (try ops[0].toLea(cg)) {} |
| | 35802 | try cg.asmMemoryImmediate( |
| | 35803 | .{ ._, .cmp }, |
| | 35804 | try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl) |
| | 35805 | .byte |
| | 35806 | else if (opt_child_ty.isSlice(zcu)) |
| | 35807 | .qword |
| | 35808 | else |
| | 35809 | .fromSize(opt_child_abi_size) }), |
| | 35810 | .u(0), |
| | 35811 | ); |
| | 35812 | const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne }); |
| | 35813 | try is_non_null.finish(inst, &.{un_op}, &ops, cg); |
| | 35814 | }, |
| | 35815 | .is_err_ptr => if (use_old) try cg.airIsErrPtr(inst) else { |
| | 35816 | const un_op = air_datas[@intFromEnum(inst)].un_op; |
| | 35817 | const eu_ty = cg.typeOf(un_op).childType(zcu); |
| | 35818 | const eu_err_ty = eu_ty.errorUnionSet(zcu); |
| | 35819 | const eu_pl_ty = eu_ty.errorUnionPayload(zcu); |
| | 35820 | const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu)); |
| | 35821 | var ops = try cg.tempsFromOperands(inst, .{un_op}); |
| | 35822 | try ops[0].toOffset(eu_err_off, cg); |
| | 35823 | while (try ops[0].toLea(cg)) {} |
| | 35824 | try cg.asmMemoryImmediate( |
| | 35825 | .{ ._, .cmp }, |
| | 35826 | try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }), |
| | 35827 | .u(0), |
| | 35828 | ); |
| | 35829 | const is_err = try cg.tempInit(.bool, .{ .eflags = .ne }); |
| | 35830 | try is_err.finish(inst, &.{un_op}, &ops, cg); |
| | 35831 | }, |
| | 35832 | .is_non_err_ptr => if (use_old) try cg.airIsNonErrPtr(inst) else { |
| | 35833 | const un_op = air_datas[@intFromEnum(inst)].un_op; |
| | 35834 | const eu_ty = cg.typeOf(un_op).childType(zcu); |
| | 35835 | const eu_err_ty = eu_ty.errorUnionSet(zcu); |
| | 35836 | const eu_pl_ty = eu_ty.errorUnionPayload(zcu); |
| | 35837 | const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu)); |
| | 35838 | var ops = try cg.tempsFromOperands(inst, .{un_op}); |
| | 35839 | try ops[0].toOffset(eu_err_off, cg); |
| | 35840 | while (try ops[0].toLea(cg)) {} |
| | 35841 | try cg.asmMemoryImmediate( |
| | 35842 | .{ ._, .cmp }, |
| | 35843 | try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }), |
| | 35844 | .u(0), |
| | 35845 | ); |
| | 35846 | const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e }); |
| | 35847 | try is_non_err.finish(inst, &.{un_op}, &ops, cg); |
| | 35848 | }, |
| | 35849 | .load => if (use_old) try cg.airLoad(inst) else fallback: { |
| | 35850 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 35851 | const val_ty = ty_op.ty.toType(); |
| | 35852 | const ptr_ty = cg.typeOf(ty_op.operand); |
| | 35853 | const ptr_info = ptr_ty.ptrInfo(zcu); |
| | 35854 | if (ptr_info.packed_offset.host_size > 0 and |
| | 35855 | (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type)) |
| | 35856 | break :fallback try cg.airLoad(inst); |
| | 35857 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 35858 | const res = try ops[0].load(val_ty, .{ |
| | 35859 | .disp = switch (ptr_info.flags.vector_index) { |
| | 35860 | .none => 0, |
| | 35861 | .runtime => unreachable, |
| | 35862 | else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)), |
| | 35863 | }, |
| | 35864 | }, cg); |
| | 35865 | try res.finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 35866 | }, |
| | 35867 | .ret => try cg.airRet(inst, false), |
| | 35868 | .ret_safe => try cg.airRet(inst, true), |
| | 35869 | .ret_load => try cg.airRetLoad(inst), |
| | 35870 | .store, .store_safe => |air_tag| if (use_old) try cg.airStore(inst, switch (air_tag) { |
| | 35871 | else => unreachable, |
| | 35872 | .store => false, |
| | 35873 | .store_safe => true, |
| | 35874 | }) else fallback: { |
| | 35875 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| | 35876 | const ptr_ty = cg.typeOf(bin_op.lhs); |
| | 35877 | const ptr_info = ptr_ty.ptrInfo(zcu); |
| | 35878 | const val_ty = cg.typeOf(bin_op.rhs); |
| | 35879 | if (ptr_info.packed_offset.host_size > 0 and |
| | 35880 | (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type)) |
| | 35881 | break :fallback try cg.airStore(inst, switch (air_tag) { |
| | 35882 | else => unreachable, |
| | 35883 | .store => false, |
| | 35884 | .store_safe => true, |
| | 35885 | }); |
| | 35886 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 35887 | try ops[0].store(&ops[1], .{ |
| | 35888 | .disp = switch (ptr_info.flags.vector_index) { |
| | 35889 | .none => 0, |
| | 35890 | .runtime => unreachable, |
| | 35891 | else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)), |
| | 35892 | }, |
| | 35893 | .safe = switch (air_tag) { |
| | 35894 | else => unreachable, |
| | 35895 | .store => false, |
| | 35896 | .store_safe => true, |
| | 35897 | }, |
| | 35898 | }, cg); |
| | 35899 | for (ops) |op| try op.die(cg); |
| | 35900 | }, |
| | 35901 | .unreach => {}, |
| | 35902 | .fptrunc => |air_tag| if (use_old) try cg.airFptrunc(inst) else { |
| | 35903 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 35904 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 35905 | var res: [1]Temp = undefined; |
| | 35906 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ |
| | 35907 | .required_features = .{ .f16c, null, null, null }, |
| | 35908 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 35909 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| | 35910 | .patterns = &.{ |
| | 35911 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 35912 | }, |
| | 35913 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 35914 | .each = .{ .once = &.{ |
| | 35915 | .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ }, |
| | 35916 | } }, |
| | 35917 | }, .{ |
| | 35918 | .required_features = .{ .f16c, null, null, null }, |
| | 35919 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 35920 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }}, |
| | 35921 | .patterns = &.{ |
| | 35922 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 35923 | }, |
| | 35924 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 35925 | .each = .{ .once = &.{ |
| | 35926 | .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ }, |
| | 35927 | } }, |
| | 35928 | }, .{ |
| | 35929 | .required_features = .{ .f16c, null, null, null }, |
| | 35930 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 35931 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }}, |
| | 35932 | .patterns = &.{ |
| | 35933 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 35934 | }, |
| | 35935 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 35936 | .each = .{ .once = &.{ |
| | 35937 | .{ ._, .v_, .cvtps2ph, .dst0x, .src0y, .rm(.{}), ._ }, |
| | 35938 | } }, |
| | 35939 | }, .{ |
| | 35940 | .required_features = .{ .sse, null, null, null }, |
| | 35941 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 35942 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| | 35943 | .patterns = &.{ |
| | 35944 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 35945 | }, |
| | 35946 | .call_frame = .{ .alignment = .@"16" }, |
| | 35947 | .extra_temps = .{ |
| | 35948 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, |
| | 35949 | .unused, |
| | 35950 | .unused, |
| | 35951 | .unused, |
| | 35952 | .unused, |
| | 35953 | .unused, |
| | 35954 | .unused, |
| | 35955 | .unused, |
| | 35956 | .unused, |
| | 35957 | }, |
| | 35958 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 35959 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 35960 | .each = .{ .once = &.{ |
| | 35961 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 35962 | } }, |
| | 35963 | }, .{ |
| | 35964 | .required_features = .{ .f16c, null, null, null }, |
| | 35965 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 35966 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }}, |
| | 35967 | .patterns = &.{ |
| | 35968 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 35969 | }, |
| | 35970 | .extra_temps = .{ |
| | 35971 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 35972 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 35973 | .unused, |
| | 35974 | .unused, |
| | 35975 | .unused, |
| | 35976 | .unused, |
| | 35977 | .unused, |
| | 35978 | .unused, |
| | 35979 | .unused, |
| | 35980 | }, |
| | 35981 | .dst_temps = .{.mem}, |
| | 35982 | .clobbers = .{ .eflags = true }, |
| | 35983 | .each = .{ .once = &.{ |
| | 35984 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 35985 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 35986 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, |
| | 35987 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 35988 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 35989 | } }, |
| | 35990 | }, .{ |
| | 35991 | .required_features = .{ .avx, null, null, null }, |
| | 35992 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 35993 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 35994 | .patterns = &.{ |
| | 35995 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 35996 | }, |
| | 35997 | .call_frame = .{ .alignment = .@"16" }, |
| | 35998 | .extra_temps = .{ |
| | 35999 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36000 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 36001 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, |
| | 36002 | .unused, |
| | 36003 | .unused, |
| | 36004 | .unused, |
| | 36005 | .unused, |
| | 36006 | .unused, |
| | 36007 | .unused, |
| | 36008 | }, |
| | 36009 | .dst_temps = .{.mem}, |
| | 36010 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36011 | .each = .{ .once = &.{ |
| | 36012 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36013 | .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36014 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36015 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 36016 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36017 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36018 | } }, |
| | 36019 | }, .{ |
| | 36020 | .required_features = .{ .sse4_1, null, null, null }, |
| | 36021 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 36022 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36023 | .patterns = &.{ |
| | 36024 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36025 | }, |
| | 36026 | .call_frame = .{ .alignment = .@"16" }, |
| | 36027 | .extra_temps = .{ |
| | 36028 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36029 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 36030 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, |
| | 36031 | .unused, |
| | 36032 | .unused, |
| | 36033 | .unused, |
| | 36034 | .unused, |
| | 36035 | .unused, |
| | 36036 | .unused, |
| | 36037 | }, |
| | 36038 | .dst_temps = .{.mem}, |
| | 36039 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36040 | .each = .{ .once = &.{ |
| | 36041 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36042 | .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36043 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36044 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 36045 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36046 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36047 | } }, |
| | 36048 | }, .{ |
| | 36049 | .required_features = .{ .sse2, null, null, null }, |
| | 36050 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 36051 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36052 | .patterns = &.{ |
| | 36053 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36054 | }, |
| | 36055 | .call_frame = .{ .alignment = .@"16" }, |
| | 36056 | .extra_temps = .{ |
| | 36057 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36058 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 36059 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, |
| | 36060 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 36061 | .unused, |
| | 36062 | .unused, |
| | 36063 | .unused, |
| | 36064 | .unused, |
| | 36065 | .unused, |
| | 36066 | }, |
| | 36067 | .dst_temps = .{.mem}, |
| | 36068 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36069 | .each = .{ .once = &.{ |
| | 36070 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36071 | .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36072 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36073 | .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, |
| | 36074 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, |
| | 36075 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36076 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36077 | } }, |
| | 36078 | }, .{ |
| | 36079 | .required_features = .{ .sse, null, null, null }, |
| | 36080 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 36081 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36082 | .patterns = &.{ |
| | 36083 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36084 | }, |
| | 36085 | .call_frame = .{ .alignment = .@"16" }, |
| | 36086 | .extra_temps = .{ |
| | 36087 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36088 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 36089 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, |
| | 36090 | .{ .type = .f32, .kind = .mem }, |
| | 36091 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 36092 | .unused, |
| | 36093 | .unused, |
| | 36094 | .unused, |
| | 36095 | .unused, |
| | 36096 | }, |
| | 36097 | .dst_temps = .{.mem}, |
| | 36098 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36099 | .each = .{ .once = &.{ |
| | 36100 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36101 | .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36102 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36103 | .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ }, |
| | 36104 | .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ }, |
| | 36105 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 36106 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36107 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36108 | } }, |
| | 36109 | }, .{ |
| | 36110 | .required_features = .{ .sse, null, null, null }, |
| | 36111 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 36112 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36113 | .patterns = &.{ |
| | 36114 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 36115 | }, |
| | 36116 | .call_frame = .{ .alignment = .@"16" }, |
| | 36117 | .extra_temps = .{ |
| | 36118 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, |
| | 36119 | .unused, |
| | 36120 | .unused, |
| | 36121 | .unused, |
| | 36122 | .unused, |
| | 36123 | .unused, |
| | 36124 | .unused, |
| | 36125 | .unused, |
| | 36126 | .unused, |
| | 36127 | }, |
| | 36128 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 36129 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36130 | .each = .{ .once = &.{ |
| | 36131 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 36132 | } }, |
| | 36133 | }, .{ |
| | 36134 | .required_features = .{ .avx, null, null, null }, |
| | 36135 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 36136 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36137 | .patterns = &.{ |
| | 36138 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36139 | }, |
| | 36140 | .call_frame = .{ .alignment = .@"16" }, |
| | 36141 | .extra_temps = .{ |
| | 36142 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36143 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 36144 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, |
| | 36145 | .unused, |
| | 36146 | .unused, |
| | 36147 | .unused, |
| | 36148 | .unused, |
| | 36149 | .unused, |
| | 36150 | .unused, |
| | 36151 | }, |
| | 36152 | .dst_temps = .{.mem}, |
| | 36153 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36154 | .each = .{ .once = &.{ |
| | 36155 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36156 | .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36157 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36158 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 36159 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36160 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36161 | } }, |
| | 36162 | }, .{ |
| | 36163 | .required_features = .{ .sse4_1, null, null, null }, |
| | 36164 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 36165 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36166 | .patterns = &.{ |
| | 36167 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36168 | }, |
| | 36169 | .call_frame = .{ .alignment = .@"16" }, |
| | 36170 | .extra_temps = .{ |
| | 36171 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36172 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 36173 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, |
| | 36174 | .unused, |
| | 36175 | .unused, |
| | 36176 | .unused, |
| | 36177 | .unused, |
| | 36178 | .unused, |
| | 36179 | .unused, |
| | 36180 | }, |
| | 36181 | .dst_temps = .{.mem}, |
| | 36182 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36183 | .each = .{ .once = &.{ |
| | 36184 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36185 | .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36186 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36187 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 36188 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36189 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36190 | } }, |
| | 36191 | }, .{ |
| | 36192 | .required_features = .{ .sse2, null, null, null }, |
| | 36193 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 36194 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36195 | .patterns = &.{ |
| | 36196 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36197 | }, |
| | 36198 | .call_frame = .{ .alignment = .@"16" }, |
| | 36199 | .extra_temps = .{ |
| | 36200 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36201 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 36202 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, |
| | 36203 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 36204 | .unused, |
| | 36205 | .unused, |
| | 36206 | .unused, |
| | 36207 | .unused, |
| | 36208 | .unused, |
| | 36209 | }, |
| | 36210 | .dst_temps = .{.mem}, |
| | 36211 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36212 | .each = .{ .once = &.{ |
| | 36213 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36214 | .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36215 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36216 | .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, |
| | 36217 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, |
| | 36218 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36219 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36220 | } }, |
| | 36221 | }, .{ |
| | 36222 | .required_features = .{ .sse, null, null, null }, |
| | 36223 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 36224 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36225 | .patterns = &.{ |
| | 36226 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36227 | }, |
| | 36228 | .call_frame = .{ .alignment = .@"16" }, |
| | 36229 | .extra_temps = .{ |
| | 36230 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36231 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 36232 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, |
| | 36233 | .{ .type = .f32, .kind = .mem }, |
| | 36234 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 36235 | .unused, |
| | 36236 | .unused, |
| | 36237 | .unused, |
| | 36238 | .unused, |
| | 36239 | }, |
| | 36240 | .dst_temps = .{.mem}, |
| | 36241 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36242 | .each = .{ .once = &.{ |
| | 36243 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36244 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 36245 | .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36246 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36247 | .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ }, |
| | 36248 | .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ }, |
| | 36249 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 36250 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36251 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36252 | } }, |
| | 36253 | }, .{ |
| | 36254 | .required_features = .{ .avx, null, null, null }, |
| | 36255 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 36256 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 36257 | .patterns = &.{ |
| | 36258 | .{ .src = .{ .mem, .none, .none } }, |
| | 36259 | }, |
| | 36260 | .dst_temps = .{.{ .rc = .sse }}, |
| | 36261 | .each = .{ .once = &.{ |
| | 36262 | .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, |
| | 36263 | .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ }, |
| | 36264 | } }, |
| | 36265 | }, .{ |
| | 36266 | .required_features = .{ .avx, null, null, null }, |
| | 36267 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 36268 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 36269 | .patterns = &.{ |
| | 36270 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 36271 | }, |
| | 36272 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 36273 | .each = .{ .once = &.{ |
| | 36274 | .{ ._, .v_ss, .cvtsd2, .dst0x, .src0x, .src0q, ._ }, |
| | 36275 | } }, |
| | 36276 | }, .{ |
| | 36277 | .required_features = .{ .sse2, null, null, null }, |
| | 36278 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 36279 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 36280 | .patterns = &.{ |
| | 36281 | .{ .src = .{ .mem, .none, .none } }, |
| | 36282 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 36283 | }, |
| | 36284 | .dst_temps = .{.{ .rc = .sse }}, |
| | 36285 | .each = .{ .once = &.{ |
| | 36286 | .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, |
| | 36287 | .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ }, |
| | 36288 | } }, |
| | 36289 | }, .{ |
| | 36290 | .required_features = .{ .x87, null, null, null }, |
| | 36291 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 36292 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 36293 | .patterns = &.{ |
| | 36294 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36295 | }, |
| | 36296 | .extra_temps = .{ |
| | 36297 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| | 36298 | .unused, |
| | 36299 | .unused, |
| | 36300 | .unused, |
| | 36301 | .unused, |
| | 36302 | .unused, |
| | 36303 | .unused, |
| | 36304 | .unused, |
| | 36305 | .unused, |
| | 36306 | }, |
| | 36307 | .dst_temps = .{.mem}, |
| | 36308 | .each = .{ .once = &.{ |
| | 36309 | .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, |
| | 36310 | .{ ._, .f_p, .st, .dst0d, ._, ._, ._ }, |
| | 36311 | } }, |
| | 36312 | }, .{ |
| | 36313 | .required_features = .{ .avx, null, null, null }, |
| | 36314 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 36315 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }}, |
| | 36316 | .patterns = &.{ |
| | 36317 | .{ .src = .{ .mem, .none, .none } }, |
| | 36318 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 36319 | }, |
| | 36320 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 36321 | .each = .{ .once = &.{ |
| | 36322 | .{ ._, .v_ps, .cvtpd2, .dst0x, .src0x, ._, ._ }, |
| | 36323 | } }, |
| | 36324 | }, .{ |
| | 36325 | .required_features = .{ .sse2, null, null, null }, |
| | 36326 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 36327 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }}, |
| | 36328 | .patterns = &.{ |
| | 36329 | .{ .src = .{ .mem, .none, .none } }, |
| | 36330 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 36331 | }, |
| | 36332 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 36333 | .each = .{ .once = &.{ |
| | 36334 | .{ ._, ._ps, .cvtpd2, .dst0x, .src0x, ._, ._ }, |
| | 36335 | } }, |
| | 36336 | }, .{ |
| | 36337 | .required_features = .{ .avx, null, null, null }, |
| | 36338 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 36339 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, |
| | 36340 | .patterns = &.{ |
| | 36341 | .{ .src = .{ .mem, .none, .none } }, |
| | 36342 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 36343 | }, |
| | 36344 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 36345 | .each = .{ .once = &.{ |
| | 36346 | .{ ._, .v_ps, .cvtpd2, .dst0x, .src0y, ._, ._ }, |
| | 36347 | } }, |
| | 36348 | }, .{ |
| | 36349 | .required_features = .{ .avx, null, null, null }, |
| | 36350 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 36351 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, |
| | 36352 | .patterns = &.{ |
| | 36353 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36354 | }, |
| | 36355 | .extra_temps = .{ |
| | 36356 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36357 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 36358 | .unused, |
| | 36359 | .unused, |
| | 36360 | .unused, |
| | 36361 | .unused, |
| | 36362 | .unused, |
| | 36363 | .unused, |
| | 36364 | .unused, |
| | 36365 | }, |
| | 36366 | .dst_temps = .{.mem}, |
| | 36367 | .clobbers = .{ .eflags = true }, |
| | 36368 | .each = .{ .once = &.{ |
| | 36369 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36370 | .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36371 | .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 36372 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 36373 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36374 | } }, |
| | 36375 | }, .{ |
| | 36376 | .required_features = .{ .sse2, null, null, null }, |
| | 36377 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 36378 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, |
| | 36379 | .patterns = &.{ |
| | 36380 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36381 | }, |
| | 36382 | .extra_temps = .{ |
| | 36383 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36384 | .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } }, |
| | 36385 | .unused, |
| | 36386 | .unused, |
| | 36387 | .unused, |
| | 36388 | .unused, |
| | 36389 | .unused, |
| | 36390 | .unused, |
| | 36391 | .unused, |
| | 36392 | }, |
| | 36393 | .dst_temps = .{.mem}, |
| | 36394 | .clobbers = .{ .eflags = true }, |
| | 36395 | .each = .{ .once = &.{ |
| | 36396 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36397 | .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36398 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 36399 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 36400 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36401 | } }, |
| | 36402 | }, .{ |
| | 36403 | .required_features = .{ .x87, null, null, null }, |
| | 36404 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 36405 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 36406 | .patterns = &.{ |
| | 36407 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36408 | }, |
| | 36409 | .extra_temps = .{ |
| | 36410 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36411 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| | 36412 | .unused, |
| | 36413 | .unused, |
| | 36414 | .unused, |
| | 36415 | .unused, |
| | 36416 | .unused, |
| | 36417 | .unused, |
| | 36418 | .unused, |
| | 36419 | }, |
| | 36420 | .dst_temps = .{.mem}, |
| | 36421 | .clobbers = .{ .eflags = true }, |
| | 36422 | .each = .{ .once = &.{ |
| | 36423 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36424 | .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 36425 | .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 36426 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 36427 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36428 | } }, |
| | 36429 | }, .{ |
| | 36430 | .required_features = .{ .avx, null, null, null }, |
| | 36431 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 36432 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36433 | .patterns = &.{ |
| | 36434 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36435 | }, |
| | 36436 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 36437 | .extra_temps = .{ |
| | 36438 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 36439 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, |
| | 36440 | .unused, |
| | 36441 | .unused, |
| | 36442 | .unused, |
| | 36443 | .unused, |
| | 36444 | .unused, |
| | 36445 | .unused, |
| | 36446 | .unused, |
| | 36447 | }, |
| | 36448 | .dst_temps = .{.{ .reg = .xmm0 }}, |
| | 36449 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36450 | .each = .{ .once = &.{ |
| | 36451 | .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ }, |
| | 36452 | .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ }, |
| | 36453 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 36454 | } }, |
| | 36455 | }, .{ |
| | 36456 | .required_features = .{ .sse2, null, null, null }, |
| | 36457 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 36458 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36459 | .patterns = &.{ |
| | 36460 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36461 | }, |
| | 36462 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 36463 | .extra_temps = .{ |
| | 36464 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 36465 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, |
| | 36466 | .unused, |
| | 36467 | .unused, |
| | 36468 | .unused, |
| | 36469 | .unused, |
| | 36470 | .unused, |
| | 36471 | .unused, |
| | 36472 | .unused, |
| | 36473 | }, |
| | 36474 | .dst_temps = .{.{ .reg = .xmm0 }}, |
| | 36475 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36476 | .each = .{ .once = &.{ |
| | 36477 | .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ }, |
| | 36478 | .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ }, |
| | 36479 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 36480 | } }, |
| | 36481 | }, .{ |
| | 36482 | .required_features = .{ .sse, null, null, null }, |
| | 36483 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 36484 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36485 | .patterns = &.{ |
| | 36486 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36487 | }, |
| | 36488 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 36489 | .extra_temps = .{ |
| | 36490 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 36491 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, |
| | 36492 | .unused, |
| | 36493 | .unused, |
| | 36494 | .unused, |
| | 36495 | .unused, |
| | 36496 | .unused, |
| | 36497 | .unused, |
| | 36498 | .unused, |
| | 36499 | }, |
| | 36500 | .dst_temps = .{.{ .reg = .xmm0 }}, |
| | 36501 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36502 | .each = .{ .once = &.{ |
| | 36503 | .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ }, |
| | 36504 | .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ }, |
| | 36505 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 36506 | } }, |
| | 36507 | }, .{ |
| | 36508 | .required_features = .{ .avx, null, null, null }, |
| | 36509 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 36510 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36511 | .patterns = &.{ |
| | 36512 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36513 | }, |
| | 36514 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 36515 | .extra_temps = .{ |
| | 36516 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36517 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 36518 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 36519 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, |
| | 36520 | .unused, |
| | 36521 | .unused, |
| | 36522 | .unused, |
| | 36523 | .unused, |
| | 36524 | .unused, |
| | 36525 | }, |
| | 36526 | .dst_temps = .{.mem}, |
| | 36527 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36528 | .each = .{ .once = &.{ |
| | 36529 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36530 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36531 | .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 36532 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 36533 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 36534 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36535 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36536 | } }, |
| | 36537 | }, .{ |
| | 36538 | .required_features = .{ .sse4_1, null, null, null }, |
| | 36539 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 36540 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36541 | .patterns = &.{ |
| | 36542 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36543 | }, |
| | 36544 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 36545 | .extra_temps = .{ |
| | 36546 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36547 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 36548 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 36549 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, |
| | 36550 | .unused, |
| | 36551 | .unused, |
| | 36552 | .unused, |
| | 36553 | .unused, |
| | 36554 | .unused, |
| | 36555 | }, |
| | 36556 | .dst_temps = .{.mem}, |
| | 36557 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36558 | .each = .{ .once = &.{ |
| | 36559 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36560 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36561 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 36562 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 36563 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 36564 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36565 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36566 | } }, |
| | 36567 | }, .{ |
| | 36568 | .required_features = .{ .sse2, null, null, null }, |
| | 36569 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 36570 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36571 | .patterns = &.{ |
| | 36572 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36573 | }, |
| | 36574 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 36575 | .extra_temps = .{ |
| | 36576 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36577 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 36578 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 36579 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, |
| | 36580 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 36581 | .unused, |
| | 36582 | .unused, |
| | 36583 | .unused, |
| | 36584 | .unused, |
| | 36585 | }, |
| | 36586 | .dst_temps = .{.mem}, |
| | 36587 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36588 | .each = .{ .once = &.{ |
| | 36589 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36590 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36591 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 36592 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 36593 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, |
| | 36594 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 36595 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36596 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36597 | } }, |
| | 36598 | }, .{ |
| | 36599 | .required_features = .{ .sse, null, null, null }, |
| | 36600 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 36601 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36602 | .patterns = &.{ |
| | 36603 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36604 | }, |
| | 36605 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 36606 | .extra_temps = .{ |
| | 36607 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36608 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 36609 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 36610 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, |
| | 36611 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 36612 | .unused, |
| | 36613 | .unused, |
| | 36614 | .unused, |
| | 36615 | .unused, |
| | 36616 | }, |
| | 36617 | .dst_temps = .{.mem}, |
| | 36618 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36619 | .each = .{ .once = &.{ |
| | 36620 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36621 | .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36622 | .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 36623 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 36624 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ }, |
| | 36625 | .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ }, |
| | 36626 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 36627 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36628 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36629 | } }, |
| | 36630 | }, .{ |
| | 36631 | .required_features = .{ .x87, null, null, null }, |
| | 36632 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 36633 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 36634 | .patterns = &.{ |
| | 36635 | .{ .src = .{ .mem, .none, .none } }, |
| | 36636 | .{ .src = .{ .to_x87, .none, .none } }, |
| | 36637 | }, |
| | 36638 | .extra_temps = .{ |
| | 36639 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 36640 | .unused, |
| | 36641 | .unused, |
| | 36642 | .unused, |
| | 36643 | .unused, |
| | 36644 | .unused, |
| | 36645 | .unused, |
| | 36646 | .unused, |
| | 36647 | .unused, |
| | 36648 | }, |
| | 36649 | .dst_temps = .{.mem}, |
| | 36650 | .each = .{ .once = &.{ |
| | 36651 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| | 36652 | .{ ._, .f_p, .st, .dst0d, ._, ._, ._ }, |
| | 36653 | } }, |
| | 36654 | }, .{ |
| | 36655 | .required_features = .{ .x87, null, null, null }, |
| | 36656 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 36657 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 36658 | .patterns = &.{ |
| | 36659 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36660 | }, |
| | 36661 | .extra_temps = .{ |
| | 36662 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36663 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 36664 | .unused, |
| | 36665 | .unused, |
| | 36666 | .unused, |
| | 36667 | .unused, |
| | 36668 | .unused, |
| | 36669 | .unused, |
| | 36670 | .unused, |
| | 36671 | }, |
| | 36672 | .dst_temps = .{.mem}, |
| | 36673 | .clobbers = .{ .eflags = true }, |
| | 36674 | .each = .{ .once = &.{ |
| | 36675 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36676 | .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 36677 | .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 36678 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 36679 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36680 | } }, |
| | 36681 | }, .{ |
| | 36682 | .required_features = .{ .x87, null, null, null }, |
| | 36683 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 36684 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 36685 | .patterns = &.{ |
| | 36686 | .{ .src = .{ .mem, .none, .none } }, |
| | 36687 | .{ .src = .{ .to_x87, .none, .none } }, |
| | 36688 | }, |
| | 36689 | .extra_temps = .{ |
| | 36690 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 36691 | .unused, |
| | 36692 | .unused, |
| | 36693 | .unused, |
| | 36694 | .unused, |
| | 36695 | .unused, |
| | 36696 | .unused, |
| | 36697 | .unused, |
| | 36698 | .unused, |
| | 36699 | }, |
| | 36700 | .dst_temps = .{.mem}, |
| | 36701 | .each = .{ .once = &.{ |
| | 36702 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| | 36703 | .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, |
| | 36704 | } }, |
| | 36705 | }, .{ |
| | 36706 | .required_features = .{ .x87, null, null, null }, |
| | 36707 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 36708 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 36709 | .patterns = &.{ |
| | 36710 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36711 | }, |
| | 36712 | .extra_temps = .{ |
| | 36713 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36714 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 36715 | .unused, |
| | 36716 | .unused, |
| | 36717 | .unused, |
| | 36718 | .unused, |
| | 36719 | .unused, |
| | 36720 | .unused, |
| | 36721 | .unused, |
| | 36722 | }, |
| | 36723 | .dst_temps = .{.mem}, |
| | 36724 | .clobbers = .{ .eflags = true }, |
| | 36725 | .each = .{ .once = &.{ |
| | 36726 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36727 | .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 36728 | .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 36729 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 36730 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36731 | } }, |
| | 36732 | }, .{ |
| | 36733 | .required_features = .{ .sse, null, null, null }, |
| | 36734 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 36735 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36736 | .patterns = &.{ |
| | 36737 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 36738 | }, |
| | 36739 | .call_frame = .{ .alignment = .@"16" }, |
| | 36740 | .extra_temps = .{ |
| | 36741 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, |
| | 36742 | .unused, |
| | 36743 | .unused, |
| | 36744 | .unused, |
| | 36745 | .unused, |
| | 36746 | .unused, |
| | 36747 | .unused, |
| | 36748 | .unused, |
| | 36749 | .unused, |
| | 36750 | }, |
| | 36751 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 36752 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36753 | .each = .{ .once = &.{ |
| | 36754 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 36755 | } }, |
| | 36756 | }, .{ |
| | 36757 | .required_features = .{ .avx, null, null, null }, |
| | 36758 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 36759 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36760 | .patterns = &.{ |
| | 36761 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36762 | }, |
| | 36763 | .call_frame = .{ .alignment = .@"16" }, |
| | 36764 | .extra_temps = .{ |
| | 36765 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36766 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 36767 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, |
| | 36768 | .unused, |
| | 36769 | .unused, |
| | 36770 | .unused, |
| | 36771 | .unused, |
| | 36772 | .unused, |
| | 36773 | .unused, |
| | 36774 | }, |
| | 36775 | .dst_temps = .{.mem}, |
| | 36776 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36777 | .each = .{ .once = &.{ |
| | 36778 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36779 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36780 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36781 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 36782 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36783 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36784 | } }, |
| | 36785 | }, .{ |
| | 36786 | .required_features = .{ .sse4_1, null, null, null }, |
| | 36787 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 36788 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36789 | .patterns = &.{ |
| | 36790 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36791 | }, |
| | 36792 | .call_frame = .{ .alignment = .@"16" }, |
| | 36793 | .extra_temps = .{ |
| | 36794 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36795 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 36796 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, |
| | 36797 | .unused, |
| | 36798 | .unused, |
| | 36799 | .unused, |
| | 36800 | .unused, |
| | 36801 | .unused, |
| | 36802 | .unused, |
| | 36803 | }, |
| | 36804 | .dst_temps = .{.mem}, |
| | 36805 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36806 | .each = .{ .once = &.{ |
| | 36807 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36808 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36809 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36810 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 36811 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36812 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36813 | } }, |
| | 36814 | }, .{ |
| | 36815 | .required_features = .{ .sse2, null, null, null }, |
| | 36816 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 36817 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36818 | .patterns = &.{ |
| | 36819 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36820 | }, |
| | 36821 | .call_frame = .{ .alignment = .@"16" }, |
| | 36822 | .extra_temps = .{ |
| | 36823 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36824 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 36825 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, |
| | 36826 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 36827 | .unused, |
| | 36828 | .unused, |
| | 36829 | .unused, |
| | 36830 | .unused, |
| | 36831 | .unused, |
| | 36832 | }, |
| | 36833 | .dst_temps = .{.mem}, |
| | 36834 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36835 | .each = .{ .once = &.{ |
| | 36836 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36837 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36838 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36839 | .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, |
| | 36840 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, |
| | 36841 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36842 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36843 | } }, |
| | 36844 | }, .{ |
| | 36845 | .required_features = .{ .sse, null, null, null }, |
| | 36846 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 36847 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 36848 | .patterns = &.{ |
| | 36849 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36850 | }, |
| | 36851 | .call_frame = .{ .alignment = .@"16" }, |
| | 36852 | .extra_temps = .{ |
| | 36853 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36854 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 36855 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, |
| | 36856 | .{ .type = .f32, .kind = .mem }, |
| | 36857 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 36858 | .unused, |
| | 36859 | .unused, |
| | 36860 | .unused, |
| | 36861 | .unused, |
| | 36862 | }, |
| | 36863 | .dst_temps = .{.mem}, |
| | 36864 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36865 | .each = .{ .once = &.{ |
| | 36866 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36867 | .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36868 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36869 | .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ }, |
| | 36870 | .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ }, |
| | 36871 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 36872 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 36873 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36874 | } }, |
| | 36875 | }, .{ |
| | 36876 | .required_features = .{ .sse, null, null, null }, |
| | 36877 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 36878 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 36879 | .patterns = &.{ |
| | 36880 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 36881 | }, |
| | 36882 | .call_frame = .{ .alignment = .@"16" }, |
| | 36883 | .extra_temps = .{ |
| | 36884 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } }, |
| | 36885 | .unused, |
| | 36886 | .unused, |
| | 36887 | .unused, |
| | 36888 | .unused, |
| | 36889 | .unused, |
| | 36890 | .unused, |
| | 36891 | .unused, |
| | 36892 | .unused, |
| | 36893 | }, |
| | 36894 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 36895 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36896 | .each = .{ .once = &.{ |
| | 36897 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 36898 | } }, |
| | 36899 | }, .{ |
| | 36900 | .required_features = .{ .avx, null, null, null }, |
| | 36901 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 36902 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 36903 | .patterns = &.{ |
| | 36904 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36905 | }, |
| | 36906 | .call_frame = .{ .alignment = .@"16" }, |
| | 36907 | .extra_temps = .{ |
| | 36908 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36909 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 36910 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } }, |
| | 36911 | .unused, |
| | 36912 | .unused, |
| | 36913 | .unused, |
| | 36914 | .unused, |
| | 36915 | .unused, |
| | 36916 | .unused, |
| | 36917 | }, |
| | 36918 | .dst_temps = .{.mem}, |
| | 36919 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36920 | .each = .{ .once = &.{ |
| | 36921 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36922 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36923 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36924 | .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 36925 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 36926 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36927 | } }, |
| | 36928 | }, .{ |
| | 36929 | .required_features = .{ .sse2, null, null, null }, |
| | 36930 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 36931 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 36932 | .patterns = &.{ |
| | 36933 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36934 | }, |
| | 36935 | .call_frame = .{ .alignment = .@"16" }, |
| | 36936 | .extra_temps = .{ |
| | 36937 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36938 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 36939 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } }, |
| | 36940 | .unused, |
| | 36941 | .unused, |
| | 36942 | .unused, |
| | 36943 | .unused, |
| | 36944 | .unused, |
| | 36945 | .unused, |
| | 36946 | }, |
| | 36947 | .dst_temps = .{.mem}, |
| | 36948 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36949 | .each = .{ .once = &.{ |
| | 36950 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36951 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36952 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36953 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 36954 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 36955 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36956 | } }, |
| | 36957 | }, .{ |
| | 36958 | .required_features = .{ .sse, null, null, null }, |
| | 36959 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 36960 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 36961 | .patterns = &.{ |
| | 36962 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 36963 | }, |
| | 36964 | .call_frame = .{ .alignment = .@"16" }, |
| | 36965 | .extra_temps = .{ |
| | 36966 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 36967 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 36968 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } }, |
| | 36969 | .unused, |
| | 36970 | .unused, |
| | 36971 | .unused, |
| | 36972 | .unused, |
| | 36973 | .unused, |
| | 36974 | .unused, |
| | 36975 | }, |
| | 36976 | .dst_temps = .{.mem}, |
| | 36977 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 36978 | .each = .{ .once = &.{ |
| | 36979 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 36980 | .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 36981 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 36982 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 36983 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 36984 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 36985 | } }, |
| | 36986 | }, .{ |
| | 36987 | .required_features = .{ .sse, null, null, null }, |
| | 36988 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 36989 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 36990 | .patterns = &.{ |
| | 36991 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 36992 | }, |
| | 36993 | .call_frame = .{ .alignment = .@"16" }, |
| | 36994 | .extra_temps = .{ |
| | 36995 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } }, |
| | 36996 | .unused, |
| | 36997 | .unused, |
| | 36998 | .unused, |
| | 36999 | .unused, |
| | 37000 | .unused, |
| | 37001 | .unused, |
| | 37002 | .unused, |
| | 37003 | .unused, |
| | 37004 | }, |
| | 37005 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 37006 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37007 | .each = .{ .once = &.{ |
| | 37008 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 37009 | } }, |
| | 37010 | }, .{ |
| | 37011 | .required_features = .{ .avx, null, null, null }, |
| | 37012 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 37013 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 37014 | .patterns = &.{ |
| | 37015 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37016 | }, |
| | 37017 | .call_frame = .{ .alignment = .@"16" }, |
| | 37018 | .extra_temps = .{ |
| | 37019 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37020 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 37021 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } }, |
| | 37022 | .unused, |
| | 37023 | .unused, |
| | 37024 | .unused, |
| | 37025 | .unused, |
| | 37026 | .unused, |
| | 37027 | .unused, |
| | 37028 | }, |
| | 37029 | .dst_temps = .{.mem}, |
| | 37030 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37031 | .each = .{ .once = &.{ |
| | 37032 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 37033 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37034 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37035 | .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 37036 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 37037 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37038 | } }, |
| | 37039 | }, .{ |
| | 37040 | .required_features = .{ .sse2, null, null, null }, |
| | 37041 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 37042 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 37043 | .patterns = &.{ |
| | 37044 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37045 | }, |
| | 37046 | .call_frame = .{ .alignment = .@"16" }, |
| | 37047 | .extra_temps = .{ |
| | 37048 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37049 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 37050 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } }, |
| | 37051 | .unused, |
| | 37052 | .unused, |
| | 37053 | .unused, |
| | 37054 | .unused, |
| | 37055 | .unused, |
| | 37056 | .unused, |
| | 37057 | }, |
| | 37058 | .dst_temps = .{.mem}, |
| | 37059 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37060 | .each = .{ .once = &.{ |
| | 37061 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 37062 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37063 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37064 | .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 37065 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 37066 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37067 | } }, |
| | 37068 | }, .{ |
| | 37069 | .required_features = .{ .sse, null, null, null }, |
| | 37070 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 37071 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 37072 | .patterns = &.{ |
| | 37073 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37074 | }, |
| | 37075 | .call_frame = .{ .alignment = .@"16" }, |
| | 37076 | .extra_temps = .{ |
| | 37077 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37078 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 37079 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } }, |
| | 37080 | .unused, |
| | 37081 | .unused, |
| | 37082 | .unused, |
| | 37083 | .unused, |
| | 37084 | .unused, |
| | 37085 | .unused, |
| | 37086 | }, |
| | 37087 | .dst_temps = .{.mem}, |
| | 37088 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37089 | .each = .{ .once = &.{ |
| | 37090 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 37091 | .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37092 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37093 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 37094 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 37095 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37096 | } }, |
| | 37097 | }, .{ |
| | 37098 | .required_features = .{ .sse, .x87, null, null }, |
| | 37099 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 37100 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 37101 | .patterns = &.{ |
| | 37102 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 37103 | }, |
| | 37104 | .call_frame = .{ .alignment = .@"16" }, |
| | 37105 | .extra_temps = .{ |
| | 37106 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } }, |
| | 37107 | .unused, |
| | 37108 | .unused, |
| | 37109 | .unused, |
| | 37110 | .unused, |
| | 37111 | .unused, |
| | 37112 | .unused, |
| | 37113 | .unused, |
| | 37114 | .unused, |
| | 37115 | }, |
| | 37116 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 37117 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37118 | .each = .{ .once = &.{ |
| | 37119 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 37120 | } }, |
| | 37121 | }, .{ |
| | 37122 | .required_features = .{ .avx, null, null, null }, |
| | 37123 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 37124 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 37125 | .patterns = &.{ |
| | 37126 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37127 | }, |
| | 37128 | .call_frame = .{ .alignment = .@"16" }, |
| | 37129 | .extra_temps = .{ |
| | 37130 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37131 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 37132 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } }, |
| | 37133 | .unused, |
| | 37134 | .unused, |
| | 37135 | .unused, |
| | 37136 | .unused, |
| | 37137 | .unused, |
| | 37138 | .unused, |
| | 37139 | }, |
| | 37140 | .dst_temps = .{.mem}, |
| | 37141 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37142 | .each = .{ .once = &.{ |
| | 37143 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 37144 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37145 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37146 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 37147 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 37148 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 37149 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37150 | } }, |
| | 37151 | }, .{ |
| | 37152 | .required_features = .{ .sse2, null, null, null }, |
| | 37153 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 37154 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 37155 | .patterns = &.{ |
| | 37156 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37157 | }, |
| | 37158 | .call_frame = .{ .alignment = .@"16" }, |
| | 37159 | .extra_temps = .{ |
| | 37160 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37161 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 37162 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } }, |
| | 37163 | .unused, |
| | 37164 | .unused, |
| | 37165 | .unused, |
| | 37166 | .unused, |
| | 37167 | .unused, |
| | 37168 | .unused, |
| | 37169 | }, |
| | 37170 | .dst_temps = .{.mem}, |
| | 37171 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37172 | .each = .{ .once = &.{ |
| | 37173 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 37174 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37175 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37176 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 37177 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 37178 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 37179 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37180 | } }, |
| | 37181 | }, .{ |
| | 37182 | .required_features = .{ .sse, null, null, null }, |
| | 37183 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 37184 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 37185 | .patterns = &.{ |
| | 37186 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37187 | }, |
| | 37188 | .call_frame = .{ .alignment = .@"16" }, |
| | 37189 | .extra_temps = .{ |
| | 37190 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37191 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 37192 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } }, |
| | 37193 | .unused, |
| | 37194 | .unused, |
| | 37195 | .unused, |
| | 37196 | .unused, |
| | 37197 | .unused, |
| | 37198 | .unused, |
| | 37199 | }, |
| | 37200 | .dst_temps = .{.mem}, |
| | 37201 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37202 | .each = .{ .once = &.{ |
| | 37203 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 37204 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37205 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37206 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 37207 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 37208 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 37209 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37210 | } }, |
| | 37211 | } }) catch |err| switch (err) { |
| | 37212 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 37213 | @tagName(air_tag), |
| | 37214 | ty_op.ty.toType().fmt(pt), |
| | 37215 | cg.typeOf(ty_op.operand).fmt(pt), |
| | 37216 | ops[0].tracking(cg), |
| | 37217 | }), |
| | 37218 | else => |e| return e, |
| | 37219 | }; |
| | 37220 | try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 37221 | }, |
| | 37222 | .fpext => |air_tag| if (use_old) try cg.airFpext(inst) else { |
| | 37223 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 37224 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 37225 | var res: [1]Temp = undefined; |
| | 37226 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ |
| | 37227 | .required_features = .{ .f16c, null, null, null }, |
| | 37228 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37229 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 37230 | .patterns = &.{ |
| | 37231 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37232 | }, |
| | 37233 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 37234 | .each = .{ .once = &.{ |
| | 37235 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 37236 | } }, |
| | 37237 | }, .{ |
| | 37238 | .required_features = .{ .f16c, null, null, null }, |
| | 37239 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 37240 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, |
| | 37241 | .patterns = &.{ |
| | 37242 | .{ .src = .{ .mem, .none, .none } }, |
| | 37243 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37244 | }, |
| | 37245 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 37246 | .each = .{ .once = &.{ |
| | 37247 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 37248 | } }, |
| | 37249 | }, .{ |
| | 37250 | .required_features = .{ .f16c, null, null, null }, |
| | 37251 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 37252 | .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }}, |
| | 37253 | .patterns = &.{ |
| | 37254 | .{ .src = .{ .mem, .none, .none } }, |
| | 37255 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37256 | }, |
| | 37257 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 37258 | .each = .{ .once = &.{ |
| | 37259 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| | 37260 | } }, |
| | 37261 | }, .{ |
| | 37262 | .required_features = .{ .sse, null, null, null }, |
| | 37263 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37264 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 37265 | .patterns = &.{ |
| | 37266 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 37267 | }, |
| | 37268 | .call_frame = .{ .alignment = .@"16" }, |
| | 37269 | .extra_temps = .{ |
| | 37270 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } }, |
| | 37271 | .unused, |
| | 37272 | .unused, |
| | 37273 | .unused, |
| | 37274 | .unused, |
| | 37275 | .unused, |
| | 37276 | .unused, |
| | 37277 | .unused, |
| | 37278 | .unused, |
| | 37279 | }, |
| | 37280 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 37281 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37282 | .each = .{ .once = &.{ |
| | 37283 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 37284 | } }, |
| | 37285 | }, .{ |
| | 37286 | .required_features = .{ .f16c, null, null, null }, |
| | 37287 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 37288 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }}, |
| | 37289 | .patterns = &.{ |
| | 37290 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37291 | }, |
| | 37292 | .extra_temps = .{ |
| | 37293 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37294 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 37295 | .unused, |
| | 37296 | .unused, |
| | 37297 | .unused, |
| | 37298 | .unused, |
| | 37299 | .unused, |
| | 37300 | .unused, |
| | 37301 | .unused, |
| | 37302 | }, |
| | 37303 | .dst_temps = .{.mem}, |
| | 37304 | .clobbers = .{ .eflags = true }, |
| | 37305 | .each = .{ .once = &.{ |
| | 37306 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37307 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37308 | .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 37309 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 37310 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37311 | } }, |
| | 37312 | }, .{ |
| | 37313 | .required_features = .{ .avx, null, null, null }, |
| | 37314 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37315 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 37316 | .patterns = &.{ |
| | 37317 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37318 | }, |
| | 37319 | .call_frame = .{ .alignment = .@"16" }, |
| | 37320 | .extra_temps = .{ |
| | 37321 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37322 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 37323 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } }, |
| | 37324 | .unused, |
| | 37325 | .unused, |
| | 37326 | .unused, |
| | 37327 | .unused, |
| | 37328 | .unused, |
| | 37329 | .unused, |
| | 37330 | }, |
| | 37331 | .dst_temps = .{.mem}, |
| | 37332 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37333 | .each = .{ .once = &.{ |
| | 37334 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37335 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 37336 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 37337 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37338 | .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 37339 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 37340 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37341 | } }, |
| | 37342 | }, .{ |
| | 37343 | .required_features = .{ .sse2, null, null, null }, |
| | 37344 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37345 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 37346 | .patterns = &.{ |
| | 37347 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37348 | }, |
| | 37349 | .call_frame = .{ .alignment = .@"16" }, |
| | 37350 | .extra_temps = .{ |
| | 37351 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37352 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 37353 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } }, |
| | 37354 | .unused, |
| | 37355 | .unused, |
| | 37356 | .unused, |
| | 37357 | .unused, |
| | 37358 | .unused, |
| | 37359 | .unused, |
| | 37360 | }, |
| | 37361 | .dst_temps = .{.mem}, |
| | 37362 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37363 | .each = .{ .once = &.{ |
| | 37364 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37365 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 37366 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 37367 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37368 | .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 37369 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 37370 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37371 | } }, |
| | 37372 | }, .{ |
| | 37373 | .required_features = .{ .sse, null, null, null }, |
| | 37374 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37375 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 37376 | .patterns = &.{ |
| | 37377 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37378 | }, |
| | 37379 | .call_frame = .{ .alignment = .@"16" }, |
| | 37380 | .extra_temps = .{ |
| | 37381 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37382 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 37383 | .{ .type = .f32, .kind = .mem }, |
| | 37384 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 37385 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } }, |
| | 37386 | .unused, |
| | 37387 | .unused, |
| | 37388 | .unused, |
| | 37389 | .unused, |
| | 37390 | }, |
| | 37391 | .dst_temps = .{.mem}, |
| | 37392 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37393 | .each = .{ .once = &.{ |
| | 37394 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37395 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37396 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 37397 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 37398 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 37399 | .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 37400 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 37401 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37402 | } }, |
| | 37403 | }, .{ |
| | 37404 | .required_features = .{ .f16c, null, null, null }, |
| | 37405 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37406 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 37407 | .patterns = &.{ |
| | 37408 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37409 | }, |
| | 37410 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 37411 | .each = .{ .once = &.{ |
| | 37412 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 37413 | .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ }, |
| | 37414 | } }, |
| | 37415 | }, .{ |
| | 37416 | .required_features = .{ .f16c, null, null, null }, |
| | 37417 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .word } }, .any, .any }, |
| | 37418 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, |
| | 37419 | .patterns = &.{ |
| | 37420 | .{ .src = .{ .mem, .none, .none } }, |
| | 37421 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37422 | }, |
| | 37423 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 37424 | .each = .{ .once = &.{ |
| | 37425 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 37426 | .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ }, |
| | 37427 | } }, |
| | 37428 | }, .{ |
| | 37429 | .required_features = .{ .f16c, null, null, null }, |
| | 37430 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 37431 | .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }}, |
| | 37432 | .patterns = &.{ |
| | 37433 | .{ .src = .{ .mem, .none, .none } }, |
| | 37434 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37435 | }, |
| | 37436 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 37437 | .each = .{ .once = &.{ |
| | 37438 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| | 37439 | .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ }, |
| | 37440 | } }, |
| | 37441 | }, .{ |
| | 37442 | .required_features = .{ .f16c, null, null, null }, |
| | 37443 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 37444 | .dst_constraints = .{.{ .scalar_float = .{ .of = .zword, .is = .qword } }}, |
| | 37445 | .patterns = &.{ |
| | 37446 | .{ .src = .{ .mem, .none, .none } }, |
| | 37447 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37448 | }, |
| | 37449 | .extra_temps = .{ |
| | 37450 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 37451 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 37452 | .unused, |
| | 37453 | .unused, |
| | 37454 | .unused, |
| | 37455 | .unused, |
| | 37456 | .unused, |
| | 37457 | .unused, |
| | 37458 | .unused, |
| | 37459 | }, |
| | 37460 | .dst_temps = .{.mem}, |
| | 37461 | .each = .{ .once = &.{ |
| | 37462 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src0x, ._, ._ }, |
| | 37463 | .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ }, |
| | 37464 | .{ ._, .v_f128, .extract, .tmp0x, .tmp0y, .ui(1), ._ }, |
| | 37465 | .{ ._, .v_pd, .mova, .mem(.dst0y), .tmp1y, ._, ._ }, |
| | 37466 | .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ }, |
| | 37467 | .{ ._, .v_pd, .mova, .memd(.dst0y, 32), .tmp1y, ._, ._ }, |
| | 37468 | } }, |
| | 37469 | }, .{ |
| | 37470 | .required_features = .{ .sse, null, null, null }, |
| | 37471 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37472 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 37473 | .patterns = &.{ |
| | 37474 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 37475 | }, |
| | 37476 | .call_frame = .{ .alignment = .@"16" }, |
| | 37477 | .extra_temps = .{ |
| | 37478 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } }, |
| | 37479 | .unused, |
| | 37480 | .unused, |
| | 37481 | .unused, |
| | 37482 | .unused, |
| | 37483 | .unused, |
| | 37484 | .unused, |
| | 37485 | .unused, |
| | 37486 | .unused, |
| | 37487 | }, |
| | 37488 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 37489 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37490 | .each = .{ .once = &.{ |
| | 37491 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 37492 | } }, |
| | 37493 | }, .{ |
| | 37494 | .required_features = .{ .f16c, null, null, null }, |
| | 37495 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 37496 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }}, |
| | 37497 | .patterns = &.{ |
| | 37498 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37499 | }, |
| | 37500 | .extra_temps = .{ |
| | 37501 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37502 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 37503 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 37504 | .unused, |
| | 37505 | .unused, |
| | 37506 | .unused, |
| | 37507 | .unused, |
| | 37508 | .unused, |
| | 37509 | .unused, |
| | 37510 | }, |
| | 37511 | .dst_temps = .{.mem}, |
| | 37512 | .clobbers = .{ .eflags = true }, |
| | 37513 | .each = .{ .once = &.{ |
| | 37514 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37515 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37516 | .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ }, |
| | 37517 | .{ ._, .v_f128, .extract, .tmp1x, .tmp1y, .ui(1), ._ }, |
| | 37518 | .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| | 37519 | .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ }, |
| | 37520 | .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_unaligned_size, 32), .tmp2y, ._, ._ }, |
| | 37521 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 37522 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37523 | } }, |
| | 37524 | }, .{ |
| | 37525 | .required_features = .{ .avx, null, null, null }, |
| | 37526 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37527 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 37528 | .patterns = &.{ |
| | 37529 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37530 | }, |
| | 37531 | .call_frame = .{ .alignment = .@"16" }, |
| | 37532 | .extra_temps = .{ |
| | 37533 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37534 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 37535 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } }, |
| | 37536 | .unused, |
| | 37537 | .unused, |
| | 37538 | .unused, |
| | 37539 | .unused, |
| | 37540 | .unused, |
| | 37541 | .unused, |
| | 37542 | }, |
| | 37543 | .dst_temps = .{.mem}, |
| | 37544 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37545 | .each = .{ .once = &.{ |
| | 37546 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37547 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 37548 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 37549 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37550 | .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 37551 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 37552 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37553 | } }, |
| | 37554 | }, .{ |
| | 37555 | .required_features = .{ .sse2, null, null, null }, |
| | 37556 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37557 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 37558 | .patterns = &.{ |
| | 37559 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37560 | }, |
| | 37561 | .call_frame = .{ .alignment = .@"16" }, |
| | 37562 | .extra_temps = .{ |
| | 37563 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37564 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 37565 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } }, |
| | 37566 | .unused, |
| | 37567 | .unused, |
| | 37568 | .unused, |
| | 37569 | .unused, |
| | 37570 | .unused, |
| | 37571 | .unused, |
| | 37572 | }, |
| | 37573 | .dst_temps = .{.mem}, |
| | 37574 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37575 | .each = .{ .once = &.{ |
| | 37576 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37577 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 37578 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 37579 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37580 | .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 37581 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 37582 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37583 | } }, |
| | 37584 | }, .{ |
| | 37585 | .required_features = .{ .sse, null, null, null }, |
| | 37586 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37587 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 37588 | .patterns = &.{ |
| | 37589 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37590 | }, |
| | 37591 | .call_frame = .{ .alignment = .@"16" }, |
| | 37592 | .extra_temps = .{ |
| | 37593 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37594 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 37595 | .{ .type = .f32, .kind = .mem }, |
| | 37596 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 37597 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } }, |
| | 37598 | .unused, |
| | 37599 | .unused, |
| | 37600 | .unused, |
| | 37601 | .unused, |
| | 37602 | }, |
| | 37603 | .dst_temps = .{.mem}, |
| | 37604 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37605 | .each = .{ .once = &.{ |
| | 37606 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37607 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37608 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 37609 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 37610 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 37611 | .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 37612 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 37613 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37614 | } }, |
| | 37615 | }, .{ |
| | 37616 | .required_features = .{ .f16c, .x87, null, null }, |
| | 37617 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37618 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 37619 | .patterns = &.{ |
| | 37620 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37621 | }, |
| | 37622 | .extra_temps = .{ |
| | 37623 | .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| | 37624 | .{ .type = .f32, .kind = .mem }, |
| | 37625 | .{ .type = .f32, .kind = .{ .reg = .st7 } }, |
| | 37626 | .unused, |
| | 37627 | .unused, |
| | 37628 | .unused, |
| | 37629 | .unused, |
| | 37630 | .unused, |
| | 37631 | .unused, |
| | 37632 | }, |
| | 37633 | .dst_temps = .{.{ .rc = .x87 }}, |
| | 37634 | .each = .{ .once = &.{ |
| | 37635 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ }, |
| | 37636 | .{ ._, .v_ss, .mov, .mem(.tmp1d), .tmp0x, ._, ._ }, |
| | 37637 | .{ ._, .f_, .ld, .mem(.tmp1d), ._, ._, ._ }, |
| | 37638 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| | 37639 | } }, |
| | 37640 | }, .{ |
| | 37641 | .required_features = .{ .sse, .x87, null, null }, |
| | 37642 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37643 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 37644 | .patterns = &.{ |
| | 37645 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 37646 | }, |
| | 37647 | .call_frame = .{ .alignment = .@"16" }, |
| | 37648 | .extra_temps = .{ |
| | 37649 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } }, |
| | 37650 | .unused, |
| | 37651 | .unused, |
| | 37652 | .unused, |
| | 37653 | .unused, |
| | 37654 | .unused, |
| | 37655 | .unused, |
| | 37656 | .unused, |
| | 37657 | .unused, |
| | 37658 | }, |
| | 37659 | .dst_temps = .{.{ .reg = .st0 }}, |
| | 37660 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37661 | .each = .{ .once = &.{ |
| | 37662 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 37663 | } }, |
| | 37664 | }, .{ |
| | 37665 | .required_features = .{ .avx, null, null, null }, |
| | 37666 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37667 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 37668 | .patterns = &.{ |
| | 37669 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37670 | }, |
| | 37671 | .call_frame = .{ .alignment = .@"16" }, |
| | 37672 | .extra_temps = .{ |
| | 37673 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37674 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 37675 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } }, |
| | 37676 | .unused, |
| | 37677 | .unused, |
| | 37678 | .unused, |
| | 37679 | .unused, |
| | 37680 | .unused, |
| | 37681 | .unused, |
| | 37682 | }, |
| | 37683 | .dst_temps = .{.mem}, |
| | 37684 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37685 | .each = .{ .once = &.{ |
| | 37686 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37687 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 37688 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 37689 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37690 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 37691 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 37692 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 37693 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37694 | } }, |
| | 37695 | }, .{ |
| | 37696 | .required_features = .{ .sse2, null, null, null }, |
| | 37697 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37698 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 37699 | .patterns = &.{ |
| | 37700 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37701 | }, |
| | 37702 | .call_frame = .{ .alignment = .@"16" }, |
| | 37703 | .extra_temps = .{ |
| | 37704 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37705 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 37706 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } }, |
| | 37707 | .unused, |
| | 37708 | .unused, |
| | 37709 | .unused, |
| | 37710 | .unused, |
| | 37711 | .unused, |
| | 37712 | .unused, |
| | 37713 | }, |
| | 37714 | .dst_temps = .{.mem}, |
| | 37715 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37716 | .each = .{ .once = &.{ |
| | 37717 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37718 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 37719 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 37720 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37721 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 37722 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 37723 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 37724 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37725 | } }, |
| | 37726 | }, .{ |
| | 37727 | .required_features = .{ .sse, null, null, null }, |
| | 37728 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37729 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 37730 | .patterns = &.{ |
| | 37731 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37732 | }, |
| | 37733 | .call_frame = .{ .alignment = .@"16" }, |
| | 37734 | .extra_temps = .{ |
| | 37735 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37736 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 37737 | .{ .type = .f32, .kind = .mem }, |
| | 37738 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 37739 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } }, |
| | 37740 | .unused, |
| | 37741 | .unused, |
| | 37742 | .unused, |
| | 37743 | .unused, |
| | 37744 | }, |
| | 37745 | .dst_temps = .{.mem}, |
| | 37746 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37747 | .each = .{ .once = &.{ |
| | 37748 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37749 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37750 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 37751 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 37752 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 37753 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 37754 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 37755 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 37756 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37757 | } }, |
| | 37758 | }, .{ |
| | 37759 | .required_features = .{ .sse, null, null, null }, |
| | 37760 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37761 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 37762 | .patterns = &.{ |
| | 37763 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 37764 | }, |
| | 37765 | .call_frame = .{ .alignment = .@"16" }, |
| | 37766 | .extra_temps = .{ |
| | 37767 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } }, |
| | 37768 | .unused, |
| | 37769 | .unused, |
| | 37770 | .unused, |
| | 37771 | .unused, |
| | 37772 | .unused, |
| | 37773 | .unused, |
| | 37774 | .unused, |
| | 37775 | .unused, |
| | 37776 | }, |
| | 37777 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 37778 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37779 | .each = .{ .once = &.{ |
| | 37780 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 37781 | } }, |
| | 37782 | }, .{ |
| | 37783 | .required_features = .{ .avx, null, null, null }, |
| | 37784 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37785 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 37786 | .patterns = &.{ |
| | 37787 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37788 | }, |
| | 37789 | .call_frame = .{ .alignment = .@"16" }, |
| | 37790 | .extra_temps = .{ |
| | 37791 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37792 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 37793 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } }, |
| | 37794 | .unused, |
| | 37795 | .unused, |
| | 37796 | .unused, |
| | 37797 | .unused, |
| | 37798 | .unused, |
| | 37799 | .unused, |
| | 37800 | }, |
| | 37801 | .dst_temps = .{.mem}, |
| | 37802 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37803 | .each = .{ .once = &.{ |
| | 37804 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37805 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 37806 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 37807 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37808 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 37809 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 37810 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37811 | } }, |
| | 37812 | }, .{ |
| | 37813 | .required_features = .{ .sse2, null, null, null }, |
| | 37814 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37815 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 37816 | .patterns = &.{ |
| | 37817 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37818 | }, |
| | 37819 | .call_frame = .{ .alignment = .@"16" }, |
| | 37820 | .extra_temps = .{ |
| | 37821 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37822 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 37823 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } }, |
| | 37824 | .unused, |
| | 37825 | .unused, |
| | 37826 | .unused, |
| | 37827 | .unused, |
| | 37828 | .unused, |
| | 37829 | .unused, |
| | 37830 | }, |
| | 37831 | .dst_temps = .{.mem}, |
| | 37832 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37833 | .each = .{ .once = &.{ |
| | 37834 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37835 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 37836 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 37837 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 37838 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 37839 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 37840 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37841 | } }, |
| | 37842 | }, .{ |
| | 37843 | .required_features = .{ .sse, null, null, null }, |
| | 37844 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 37845 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 37846 | .patterns = &.{ |
| | 37847 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37848 | }, |
| | 37849 | .call_frame = .{ .alignment = .@"16" }, |
| | 37850 | .extra_temps = .{ |
| | 37851 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37852 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 37853 | .{ .type = .f32, .kind = .mem }, |
| | 37854 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 37855 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } }, |
| | 37856 | .unused, |
| | 37857 | .unused, |
| | 37858 | .unused, |
| | 37859 | .unused, |
| | 37860 | }, |
| | 37861 | .dst_temps = .{.mem}, |
| | 37862 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 37863 | .each = .{ .once = &.{ |
| | 37864 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37865 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37866 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 37867 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 37868 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 37869 | .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 37870 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 37871 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37872 | } }, |
| | 37873 | }, .{ |
| | 37874 | .required_features = .{ .avx, null, null, null }, |
| | 37875 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 37876 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 37877 | .patterns = &.{ |
| | 37878 | .{ .src = .{ .mem, .none, .none } }, |
| | 37879 | }, |
| | 37880 | .dst_temps = .{.{ .rc = .sse }}, |
| | 37881 | .each = .{ .once = &.{ |
| | 37882 | .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, |
| | 37883 | .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .src0d, ._ }, |
| | 37884 | } }, |
| | 37885 | }, .{ |
| | 37886 | .required_features = .{ .avx, null, null, null }, |
| | 37887 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 37888 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 37889 | .patterns = &.{ |
| | 37890 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37891 | }, |
| | 37892 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 37893 | .each = .{ .once = &.{ |
| | 37894 | .{ ._, .v_sd, .cvtss2, .dst0x, .src0x, .src0d, ._ }, |
| | 37895 | } }, |
| | 37896 | }, .{ |
| | 37897 | .required_features = .{ .sse2, null, null, null }, |
| | 37898 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 37899 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 37900 | .patterns = &.{ |
| | 37901 | .{ .src = .{ .mem, .none, .none } }, |
| | 37902 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37903 | }, |
| | 37904 | .dst_temps = .{.{ .rc = .sse }}, |
| | 37905 | .each = .{ .once = &.{ |
| | 37906 | .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, |
| | 37907 | .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ }, |
| | 37908 | } }, |
| | 37909 | }, .{ |
| | 37910 | .required_features = .{ .x87, null, null, null }, |
| | 37911 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 37912 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 37913 | .patterns = &.{ |
| | 37914 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37915 | }, |
| | 37916 | .extra_temps = .{ |
| | 37917 | .{ .type = .f32, .kind = .{ .reg = .st7 } }, |
| | 37918 | .unused, |
| | 37919 | .unused, |
| | 37920 | .unused, |
| | 37921 | .unused, |
| | 37922 | .unused, |
| | 37923 | .unused, |
| | 37924 | .unused, |
| | 37925 | .unused, |
| | 37926 | }, |
| | 37927 | .dst_temps = .{.mem}, |
| | 37928 | .each = .{ .once = &.{ |
| | 37929 | .{ ._, .f_, .ld, .src0d, ._, ._, ._ }, |
| | 37930 | .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, |
| | 37931 | } }, |
| | 37932 | }, .{ |
| | 37933 | .required_features = .{ .avx, null, null, null }, |
| | 37934 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| | 37935 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, |
| | 37936 | .patterns = &.{ |
| | 37937 | .{ .src = .{ .mem, .none, .none } }, |
| | 37938 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37939 | }, |
| | 37940 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 37941 | .each = .{ .once = &.{ |
| | 37942 | .{ ._, .v_pd, .cvtps2, .dst0x, .src0q, ._, ._ }, |
| | 37943 | } }, |
| | 37944 | }, .{ |
| | 37945 | .required_features = .{ .sse2, null, null, null }, |
| | 37946 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| | 37947 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, |
| | 37948 | .patterns = &.{ |
| | 37949 | .{ .src = .{ .mem, .none, .none } }, |
| | 37950 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37951 | }, |
| | 37952 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 37953 | .each = .{ .once = &.{ |
| | 37954 | .{ ._, ._pd, .cvtps2, .dst0x, .src0q, ._, ._ }, |
| | 37955 | } }, |
| | 37956 | }, .{ |
| | 37957 | .required_features = .{ .avx, null, null, null }, |
| | 37958 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 37959 | .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }}, |
| | 37960 | .patterns = &.{ |
| | 37961 | .{ .src = .{ .mem, .none, .none } }, |
| | 37962 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 37963 | }, |
| | 37964 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 37965 | .each = .{ .once = &.{ |
| | 37966 | .{ ._, .v_pd, .cvtps2, .dst0y, .src0x, ._, ._ }, |
| | 37967 | } }, |
| | 37968 | }, .{ |
| | 37969 | .required_features = .{ .avx, null, null, null }, |
| | 37970 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 37971 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }}, |
| | 37972 | .patterns = &.{ |
| | 37973 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 37974 | }, |
| | 37975 | .extra_temps = .{ |
| | 37976 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 37977 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 37978 | .unused, |
| | 37979 | .unused, |
| | 37980 | .unused, |
| | 37981 | .unused, |
| | 37982 | .unused, |
| | 37983 | .unused, |
| | 37984 | .unused, |
| | 37985 | }, |
| | 37986 | .dst_temps = .{.mem}, |
| | 37987 | .clobbers = .{ .eflags = true }, |
| | 37988 | .each = .{ .once = &.{ |
| | 37989 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 37990 | .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 37991 | .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 37992 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 37993 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 37994 | } }, |
| | 37995 | }, .{ |
| | 37996 | .required_features = .{ .sse2, null, null, null }, |
| | 37997 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| | 37998 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, |
| | 37999 | .patterns = &.{ |
| | 38000 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38001 | }, |
| | 38002 | .extra_temps = .{ |
| | 38003 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38004 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 38005 | .unused, |
| | 38006 | .unused, |
| | 38007 | .unused, |
| | 38008 | .unused, |
| | 38009 | .unused, |
| | 38010 | .unused, |
| | 38011 | .unused, |
| | 38012 | }, |
| | 38013 | .dst_temps = .{.mem}, |
| | 38014 | .clobbers = .{ .eflags = true }, |
| | 38015 | .each = .{ .once = &.{ |
| | 38016 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38017 | .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38018 | .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 38019 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 38020 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38021 | } }, |
| | 38022 | }, .{ |
| | 38023 | .required_features = .{ .x87, null, null, null }, |
| | 38024 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 38025 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 38026 | .patterns = &.{ |
| | 38027 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38028 | }, |
| | 38029 | .extra_temps = .{ |
| | 38030 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38031 | .{ .type = .f32, .kind = .{ .reg = .st7 } }, |
| | 38032 | .unused, |
| | 38033 | .unused, |
| | 38034 | .unused, |
| | 38035 | .unused, |
| | 38036 | .unused, |
| | 38037 | .unused, |
| | 38038 | .unused, |
| | 38039 | }, |
| | 38040 | .dst_temps = .{.mem}, |
| | 38041 | .clobbers = .{ .eflags = true }, |
| | 38042 | .each = .{ .once = &.{ |
| | 38043 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38044 | .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 38045 | .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 38046 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 38047 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38048 | } }, |
| | 38049 | }, .{ |
| | 38050 | .required_features = .{ .x87, null, null, null }, |
| | 38051 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 38052 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 38053 | .patterns = &.{ |
| | 38054 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38055 | }, |
| | 38056 | .extra_temps = .{ |
| | 38057 | .{ .type = .f32, .kind = .{ .reg = .st7 } }, |
| | 38058 | .unused, |
| | 38059 | .unused, |
| | 38060 | .unused, |
| | 38061 | .unused, |
| | 38062 | .unused, |
| | 38063 | .unused, |
| | 38064 | .unused, |
| | 38065 | .unused, |
| | 38066 | }, |
| | 38067 | .dst_temps = .{.mem}, |
| | 38068 | .each = .{ .once = &.{ |
| | 38069 | .{ ._, .f_, .ld, .src0d, ._, ._, ._ }, |
| | 38070 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| | 38071 | } }, |
| | 38072 | }, .{ |
| | 38073 | .required_features = .{ .x87, null, null, null }, |
| | 38074 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 38075 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 38076 | .patterns = &.{ |
| | 38077 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38078 | }, |
| | 38079 | .extra_temps = .{ |
| | 38080 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38081 | .{ .type = .f32, .kind = .{ .reg = .st7 } }, |
| | 38082 | .unused, |
| | 38083 | .unused, |
| | 38084 | .unused, |
| | 38085 | .unused, |
| | 38086 | .unused, |
| | 38087 | .unused, |
| | 38088 | .unused, |
| | 38089 | }, |
| | 38090 | .dst_temps = .{.mem}, |
| | 38091 | .clobbers = .{ .eflags = true }, |
| | 38092 | .each = .{ .once = &.{ |
| | 38093 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38094 | .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 38095 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 38096 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 38097 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38098 | } }, |
| | 38099 | }, .{ |
| | 38100 | .required_features = .{ .sse, null, null, null }, |
| | 38101 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 38102 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38103 | .patterns = &.{ |
| | 38104 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 38105 | }, |
| | 38106 | .call_frame = .{ .alignment = .@"16" }, |
| | 38107 | .extra_temps = .{ |
| | 38108 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } }, |
| | 38109 | .unused, |
| | 38110 | .unused, |
| | 38111 | .unused, |
| | 38112 | .unused, |
| | 38113 | .unused, |
| | 38114 | .unused, |
| | 38115 | .unused, |
| | 38116 | .unused, |
| | 38117 | }, |
| | 38118 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 38119 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38120 | .each = .{ .once = &.{ |
| | 38121 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 38122 | } }, |
| | 38123 | }, .{ |
| | 38124 | .required_features = .{ .avx, null, null, null }, |
| | 38125 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 38126 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38127 | .patterns = &.{ |
| | 38128 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38129 | }, |
| | 38130 | .call_frame = .{ .alignment = .@"16" }, |
| | 38131 | .extra_temps = .{ |
| | 38132 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38133 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 38134 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } }, |
| | 38135 | .unused, |
| | 38136 | .unused, |
| | 38137 | .unused, |
| | 38138 | .unused, |
| | 38139 | .unused, |
| | 38140 | .unused, |
| | 38141 | }, |
| | 38142 | .dst_temps = .{.mem}, |
| | 38143 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38144 | .each = .{ .once = &.{ |
| | 38145 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38146 | .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38147 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 38148 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 38149 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 38150 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38151 | } }, |
| | 38152 | }, .{ |
| | 38153 | .required_features = .{ .sse2, null, null, null }, |
| | 38154 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 38155 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38156 | .patterns = &.{ |
| | 38157 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38158 | }, |
| | 38159 | .call_frame = .{ .alignment = .@"16" }, |
| | 38160 | .extra_temps = .{ |
| | 38161 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38162 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 38163 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } }, |
| | 38164 | .unused, |
| | 38165 | .unused, |
| | 38166 | .unused, |
| | 38167 | .unused, |
| | 38168 | .unused, |
| | 38169 | .unused, |
| | 38170 | }, |
| | 38171 | .dst_temps = .{.mem}, |
| | 38172 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38173 | .each = .{ .once = &.{ |
| | 38174 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38175 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38176 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 38177 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 38178 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 38179 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38180 | } }, |
| | 38181 | }, .{ |
| | 38182 | .required_features = .{ .sse, null, null, null }, |
| | 38183 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 38184 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38185 | .patterns = &.{ |
| | 38186 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38187 | }, |
| | 38188 | .call_frame = .{ .alignment = .@"16" }, |
| | 38189 | .extra_temps = .{ |
| | 38190 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38191 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 38192 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } }, |
| | 38193 | .unused, |
| | 38194 | .unused, |
| | 38195 | .unused, |
| | 38196 | .unused, |
| | 38197 | .unused, |
| | 38198 | .unused, |
| | 38199 | }, |
| | 38200 | .dst_temps = .{.mem}, |
| | 38201 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38202 | .each = .{ .once = &.{ |
| | 38203 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38204 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38205 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 38206 | .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 38207 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 38208 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38209 | } }, |
| | 38210 | }, .{ |
| | 38211 | .required_features = .{ .x87, null, null, null }, |
| | 38212 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 38213 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 38214 | .patterns = &.{ |
| | 38215 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38216 | }, |
| | 38217 | .extra_temps = .{ |
| | 38218 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| | 38219 | .unused, |
| | 38220 | .unused, |
| | 38221 | .unused, |
| | 38222 | .unused, |
| | 38223 | .unused, |
| | 38224 | .unused, |
| | 38225 | .unused, |
| | 38226 | .unused, |
| | 38227 | }, |
| | 38228 | .dst_temps = .{.mem}, |
| | 38229 | .each = .{ .once = &.{ |
| | 38230 | .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, |
| | 38231 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| | 38232 | } }, |
| | 38233 | }, .{ |
| | 38234 | .required_features = .{ .x87, null, null, null }, |
| | 38235 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 38236 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 38237 | .patterns = &.{ |
| | 38238 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38239 | }, |
| | 38240 | .extra_temps = .{ |
| | 38241 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38242 | .{ .type = .f64, .kind = .{ .reg = .st7 } }, |
| | 38243 | .unused, |
| | 38244 | .unused, |
| | 38245 | .unused, |
| | 38246 | .unused, |
| | 38247 | .unused, |
| | 38248 | .unused, |
| | 38249 | .unused, |
| | 38250 | }, |
| | 38251 | .dst_temps = .{.mem}, |
| | 38252 | .clobbers = .{ .eflags = true }, |
| | 38253 | .each = .{ .once = &.{ |
| | 38254 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38255 | .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 38256 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 38257 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 38258 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38259 | } }, |
| | 38260 | }, .{ |
| | 38261 | .required_features = .{ .sse, null, null, null }, |
| | 38262 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 38263 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38264 | .patterns = &.{ |
| | 38265 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, |
| | 38266 | }, |
| | 38267 | .call_frame = .{ .alignment = .@"16" }, |
| | 38268 | .extra_temps = .{ |
| | 38269 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } }, |
| | 38270 | .unused, |
| | 38271 | .unused, |
| | 38272 | .unused, |
| | 38273 | .unused, |
| | 38274 | .unused, |
| | 38275 | .unused, |
| | 38276 | .unused, |
| | 38277 | .unused, |
| | 38278 | }, |
| | 38279 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 38280 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38281 | .each = .{ .once = &.{ |
| | 38282 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| | 38283 | } }, |
| | 38284 | }, .{ |
| | 38285 | .required_features = .{ .avx, null, null, null }, |
| | 38286 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 38287 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38288 | .patterns = &.{ |
| | 38289 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38290 | }, |
| | 38291 | .call_frame = .{ .alignment = .@"16" }, |
| | 38292 | .extra_temps = .{ |
| | 38293 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38294 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 38295 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } }, |
| | 38296 | .unused, |
| | 38297 | .unused, |
| | 38298 | .unused, |
| | 38299 | .unused, |
| | 38300 | .unused, |
| | 38301 | .unused, |
| | 38302 | }, |
| | 38303 | .dst_temps = .{.mem}, |
| | 38304 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38305 | .each = .{ .once = &.{ |
| | 38306 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38307 | .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38308 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 38309 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 38310 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 38311 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38312 | } }, |
| | 38313 | }, .{ |
| | 38314 | .required_features = .{ .sse2, null, null, null }, |
| | 38315 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 38316 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38317 | .patterns = &.{ |
| | 38318 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38319 | }, |
| | 38320 | .call_frame = .{ .alignment = .@"16" }, |
| | 38321 | .extra_temps = .{ |
| | 38322 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38323 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 38324 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } }, |
| | 38325 | .unused, |
| | 38326 | .unused, |
| | 38327 | .unused, |
| | 38328 | .unused, |
| | 38329 | .unused, |
| | 38330 | .unused, |
| | 38331 | }, |
| | 38332 | .dst_temps = .{.mem}, |
| | 38333 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38334 | .each = .{ .once = &.{ |
| | 38335 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38336 | .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38337 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 38338 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 38339 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 38340 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38341 | } }, |
| | 38342 | }, .{ |
| | 38343 | .required_features = .{ .sse, null, null, null }, |
| | 38344 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 38345 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38346 | .patterns = &.{ |
| | 38347 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38348 | }, |
| | 38349 | .call_frame = .{ .alignment = .@"16" }, |
| | 38350 | .extra_temps = .{ |
| | 38351 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38352 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 38353 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } }, |
| | 38354 | .unused, |
| | 38355 | .unused, |
| | 38356 | .unused, |
| | 38357 | .unused, |
| | 38358 | .unused, |
| | 38359 | .unused, |
| | 38360 | }, |
| | 38361 | .dst_temps = .{.mem}, |
| | 38362 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38363 | .each = .{ .once = &.{ |
| | 38364 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38365 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 38366 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38367 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 38368 | .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 38369 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 38370 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38371 | } }, |
| | 38372 | }, .{ |
| | 38373 | .required_features = .{ .avx, null, null, null }, |
| | 38374 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 38375 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38376 | .patterns = &.{ |
| | 38377 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38378 | }, |
| | 38379 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 38380 | .extra_temps = .{ |
| | 38381 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 38382 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, |
| | 38383 | .unused, |
| | 38384 | .unused, |
| | 38385 | .unused, |
| | 38386 | .unused, |
| | 38387 | .unused, |
| | 38388 | .unused, |
| | 38389 | .unused, |
| | 38390 | }, |
| | 38391 | .dst_temps = .{.{ .reg = .xmm0 }}, |
| | 38392 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38393 | .each = .{ .once = &.{ |
| | 38394 | .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ }, |
| | 38395 | .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ }, |
| | 38396 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 38397 | } }, |
| | 38398 | }, .{ |
| | 38399 | .required_features = .{ .sse2, null, null, null }, |
| | 38400 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 38401 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38402 | .patterns = &.{ |
| | 38403 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38404 | }, |
| | 38405 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 38406 | .extra_temps = .{ |
| | 38407 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 38408 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, |
| | 38409 | .unused, |
| | 38410 | .unused, |
| | 38411 | .unused, |
| | 38412 | .unused, |
| | 38413 | .unused, |
| | 38414 | .unused, |
| | 38415 | .unused, |
| | 38416 | }, |
| | 38417 | .dst_temps = .{.{ .reg = .xmm0 }}, |
| | 38418 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38419 | .each = .{ .once = &.{ |
| | 38420 | .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ }, |
| | 38421 | .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ }, |
| | 38422 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 38423 | } }, |
| | 38424 | }, .{ |
| | 38425 | .required_features = .{ .sse, null, null, null }, |
| | 38426 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 38427 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38428 | .patterns = &.{ |
| | 38429 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38430 | }, |
| | 38431 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 38432 | .extra_temps = .{ |
| | 38433 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 38434 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, |
| | 38435 | .unused, |
| | 38436 | .unused, |
| | 38437 | .unused, |
| | 38438 | .unused, |
| | 38439 | .unused, |
| | 38440 | .unused, |
| | 38441 | .unused, |
| | 38442 | }, |
| | 38443 | .dst_temps = .{.{ .reg = .xmm0 }}, |
| | 38444 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38445 | .each = .{ .once = &.{ |
| | 38446 | .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ }, |
| | 38447 | .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ }, |
| | 38448 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| | 38449 | } }, |
| | 38450 | }, .{ |
| | 38451 | .required_features = .{ .avx, null, null, null }, |
| | 38452 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 38453 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38454 | .patterns = &.{ |
| | 38455 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38456 | }, |
| | 38457 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 38458 | .extra_temps = .{ |
| | 38459 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38460 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 38461 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 38462 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, |
| | 38463 | .unused, |
| | 38464 | .unused, |
| | 38465 | .unused, |
| | 38466 | .unused, |
| | 38467 | .unused, |
| | 38468 | }, |
| | 38469 | .dst_temps = .{.mem}, |
| | 38470 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38471 | .each = .{ .once = &.{ |
| | 38472 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38473 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38474 | .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 38475 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 38476 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 38477 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 38478 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38479 | } }, |
| | 38480 | }, .{ |
| | 38481 | .required_features = .{ .sse2, null, null, null }, |
| | 38482 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 38483 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38484 | .patterns = &.{ |
| | 38485 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38486 | }, |
| | 38487 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 38488 | .extra_temps = .{ |
| | 38489 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38490 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 38491 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 38492 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, |
| | 38493 | .unused, |
| | 38494 | .unused, |
| | 38495 | .unused, |
| | 38496 | .unused, |
| | 38497 | .unused, |
| | 38498 | }, |
| | 38499 | .dst_temps = .{.mem}, |
| | 38500 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38501 | .each = .{ .once = &.{ |
| | 38502 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38503 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38504 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 38505 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 38506 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 38507 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 38508 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38509 | } }, |
| | 38510 | }, .{ |
| | 38511 | .required_features = .{ .sse, null, null, null }, |
| | 38512 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, |
| | 38513 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 38514 | .patterns = &.{ |
| | 38515 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38516 | }, |
| | 38517 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 38518 | .extra_temps = .{ |
| | 38519 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38520 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 38521 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 38522 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, |
| | 38523 | .unused, |
| | 38524 | .unused, |
| | 38525 | .unused, |
| | 38526 | .unused, |
| | 38527 | .unused, |
| | 38528 | }, |
| | 38529 | .dst_temps = .{.mem}, |
| | 38530 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 38531 | .each = .{ .once = &.{ |
| | 38532 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 38533 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38534 | .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 38535 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 38536 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 38537 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 38538 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38539 | } }, |
| | 38540 | } }) catch |err| switch (err) { |
| | 38541 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 38542 | @tagName(air_tag), |
| | 38543 | ty_op.ty.toType().fmt(pt), |
| | 38544 | cg.typeOf(ty_op.operand).fmt(pt), |
| | 38545 | ops[0].tracking(cg), |
| | 38546 | }), |
| | 38547 | else => |e| return e, |
| | 38548 | }; |
| | 38549 | try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 38550 | }, |
| | 38551 | .intcast => |air_tag| if (use_old) try cg.airIntCast(inst) else { |
| | 38552 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 38553 | const dst_ty = ty_op.ty.toType(); |
| | 38554 | const src_ty = cg.typeOf(ty_op.operand); |
| | 38555 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 38556 | var res: [1]Temp = undefined; |
| | 38557 | cg.select(&res, &.{dst_ty}, &ops, if (dst_ty.scalarType(zcu).abiSize(zcu) <= src_ty.scalarType(zcu).abiSize(zcu)) comptime &.{ .{ |
| | 38558 | .dst_constraints = .{.{ .int = .dword }}, |
| | 38559 | .patterns = &.{ |
| | 38560 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 38561 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| | 38562 | }, |
| | 38563 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 38564 | .each = .{ .once = &.{} }, |
| | 38565 | }, .{ |
| | 38566 | .required_features = .{ .@"64bit", null, null, null }, |
| | 38567 | .dst_constraints = .{.{ .int = .qword }}, |
| | 38568 | .patterns = &.{ |
| | 38569 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 38570 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| | 38571 | }, |
| | 38572 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 38573 | .each = .{ .once = &.{} }, |
| | 38574 | }, .{ |
| | 38575 | .dst_constraints = .{.{ .int = .byte }}, |
| | 38576 | .patterns = &.{ |
| | 38577 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38578 | }, |
| | 38579 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 38580 | .each = .{ .once = &.{ |
| | 38581 | .{ ._, ._, .mov, .dst0b, .mem(.src0b), ._, ._ }, |
| | 38582 | } }, |
| | 38583 | }, .{ |
| | 38584 | .dst_constraints = .{.{ .int = .word }}, |
| | 38585 | .patterns = &.{ |
| | 38586 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38587 | }, |
| | 38588 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 38589 | .each = .{ .once = &.{ |
| | 38590 | .{ ._, ._, .mov, .dst0w, .mem(.src0w), ._, ._ }, |
| | 38591 | } }, |
| | 38592 | }, .{ |
| | 38593 | .dst_constraints = .{.{ .int = .dword }}, |
| | 38594 | .patterns = &.{ |
| | 38595 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38596 | }, |
| | 38597 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 38598 | .each = .{ .once = &.{ |
| | 38599 | .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ }, |
| | 38600 | } }, |
| | 38601 | }, .{ |
| | 38602 | .required_features = .{ .@"64bit", null, null, null }, |
| | 38603 | .dst_constraints = .{.{ .int = .qword }}, |
| | 38604 | .patterns = &.{ |
| | 38605 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38606 | }, |
| | 38607 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 38608 | .each = .{ .once = &.{ |
| | 38609 | .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ }, |
| | 38610 | } }, |
| | 38611 | }, .{ |
| | 38612 | .required_features = .{ .@"64bit", null, null, null }, |
| | 38613 | .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, |
| | 38614 | .patterns = &.{ |
| | 38615 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38616 | }, |
| | 38617 | .extra_temps = .{ |
| | 38618 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| | 38619 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 38620 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 38621 | .unused, |
| | 38622 | .unused, |
| | 38623 | .unused, |
| | 38624 | .unused, |
| | 38625 | .unused, |
| | 38626 | .unused, |
| | 38627 | }, |
| | 38628 | .dst_temps = .{.mem}, |
| | 38629 | .each = .{ .once = &.{ |
| | 38630 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| | 38631 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 38632 | .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ }, |
| | 38633 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 38634 | } }, |
| | 38635 | }, .{ |
| | 38636 | .required_features = .{ .sse, null, null, null }, |
| | 38637 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 38638 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }}, |
| | 38639 | .patterns = &.{ |
| | 38640 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 38641 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 38642 | }, |
| | 38643 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 38644 | .each = .{ .once = &.{} }, |
| | 38645 | }, .{ |
| | 38646 | .required_features = .{ .avx, null, null, null }, |
| | 38647 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| | 38648 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .byte } }}, |
| | 38649 | .patterns = &.{ |
| | 38650 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 38651 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 38652 | }, |
| | 38653 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 38654 | .each = .{ .once = &.{} }, |
| | 38655 | }, .{ |
| | 38656 | .required_features = .{ .avx, null, null, null }, |
| | 38657 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 38658 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }}, |
| | 38659 | .patterns = &.{ |
| | 38660 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 38661 | }, |
| | 38662 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 38663 | .each = .{ .once = &.{ |
| | 38664 | .{ ._, .vp_b, .ackssw, .dst0x, .src0x, .dst0x, ._ }, |
| | 38665 | } }, |
| | 38666 | }, .{ |
| | 38667 | .required_features = .{ .avx, null, null, null }, |
| | 38668 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 38669 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }}, |
| | 38670 | .patterns = &.{ |
| | 38671 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 38672 | }, |
| | 38673 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 38674 | .each = .{ .once = &.{ |
| | 38675 | .{ ._, .vp_b, .ackusw, .dst0x, .src0x, .dst0x, ._ }, |
| | 38676 | } }, |
| | 38677 | }, .{ |
| | 38678 | .required_features = .{ .sse2, null, null, null }, |
| | 38679 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 38680 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }}, |
| | 38681 | .patterns = &.{ |
| | 38682 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 38683 | }, |
| | 38684 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 38685 | .each = .{ .once = &.{ |
| | 38686 | .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ }, |
| | 38687 | } }, |
| | 38688 | }, .{ |
| | 38689 | .required_features = .{ .sse2, null, null, null }, |
| | 38690 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 38691 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }}, |
| | 38692 | .patterns = &.{ |
| | 38693 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 38694 | }, |
| | 38695 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 38696 | .each = .{ .once = &.{ |
| | 38697 | .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ }, |
| | 38698 | } }, |
| | 38699 | }, .{ |
| | 38700 | .required_features = .{ .avx2, null, null, null }, |
| | 38701 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| | 38702 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }}, |
| | 38703 | .patterns = &.{ |
| | 38704 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 38705 | }, |
| | 38706 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 38707 | .each = .{ .once = &.{ |
| | 38708 | .{ ._, .vp_b, .ackssw, .dst0y, .src0y, .dst0y, ._ }, |
| | 38709 | } }, |
| | 38710 | }, .{ |
| | 38711 | .required_features = .{ .avx2, null, null, null }, |
| | 38712 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| | 38713 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }}, |
| | 38714 | .patterns = &.{ |
| | 38715 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 38716 | }, |
| | 38717 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 38718 | .each = .{ .once = &.{ |
| | 38719 | .{ ._, .vp_b, .ackusw, .dst0y, .src0y, .dst0y, ._ }, |
| | 38720 | } }, |
| | 38721 | }, .{ |
| | 38722 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 38723 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 38724 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, |
| | 38725 | .patterns = &.{ |
| | 38726 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38727 | }, |
| | 38728 | .extra_temps = .{ |
| | 38729 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38730 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 38731 | .unused, |
| | 38732 | .unused, |
| | 38733 | .unused, |
| | 38734 | .unused, |
| | 38735 | .unused, |
| | 38736 | .unused, |
| | 38737 | .unused, |
| | 38738 | }, |
| | 38739 | .dst_temps = .{.mem}, |
| | 38740 | .clobbers = .{ .eflags = true }, |
| | 38741 | .each = .{ .once = &.{ |
| | 38742 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 38743 | .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38744 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 38745 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 38746 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38747 | } }, |
| | 38748 | }, .{ |
| | 38749 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 38750 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, |
| | 38751 | .patterns = &.{ |
| | 38752 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38753 | }, |
| | 38754 | .extra_temps = .{ |
| | 38755 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38756 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 38757 | .unused, |
| | 38758 | .unused, |
| | 38759 | .unused, |
| | 38760 | .unused, |
| | 38761 | .unused, |
| | 38762 | .unused, |
| | 38763 | .unused, |
| | 38764 | }, |
| | 38765 | .dst_temps = .{.mem}, |
| | 38766 | .clobbers = .{ .eflags = true }, |
| | 38767 | .each = .{ .once = &.{ |
| | 38768 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 38769 | .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38770 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 38771 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 38772 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 38773 | } }, |
| | 38774 | }, .{ |
| | 38775 | .required_features = .{ .avx, null, null, null }, |
| | 38776 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 38777 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }}, |
| | 38778 | .patterns = &.{ |
| | 38779 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 38780 | }, |
| | 38781 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 38782 | .each = .{ .once = &.{ |
| | 38783 | .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ }, |
| | 38784 | .{ ._, .vp_b, .ackssw, .dst0x, .dst0x, .dst0x, ._ }, |
| | 38785 | } }, |
| | 38786 | }, .{ |
| | 38787 | .required_features = .{ .avx, null, null, null }, |
| | 38788 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 38789 | .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }}, |
| | 38790 | .patterns = &.{ |
| | 38791 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 38792 | }, |
| | 38793 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 38794 | .each = .{ .once = &.{ |
| | 38795 | .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ }, |
| | 38796 | .{ ._, .vp_b, .ackusw, .dst0x, .dst0x, .dst0x, ._ }, |
| | 38797 | } }, |
| | 38798 | }, .{ |
| | 38799 | .required_features = .{ .sse2, null, null, null }, |
| | 38800 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 38801 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }}, |
| | 38802 | .patterns = &.{ |
| | 38803 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 38804 | }, |
| | 38805 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 38806 | .each = .{ .once = &.{ |
| | 38807 | .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ }, |
| | 38808 | .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ }, |
| | 38809 | } }, |
| | 38810 | }, .{ |
| | 38811 | .required_features = .{ .sse4_1, null, null, null }, |
| | 38812 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 38813 | .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }}, |
| | 38814 | .patterns = &.{ |
| | 38815 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 38816 | }, |
| | 38817 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 38818 | .each = .{ .once = &.{ |
| | 38819 | .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ }, |
| | 38820 | .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ }, |
| | 38821 | } }, |
| | 38822 | }, .{ |
| | 38823 | .required_features = .{ .avx2, null, null, null }, |
| | 38824 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 38825 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }}, |
| | 38826 | .patterns = &.{ |
| | 38827 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 38828 | }, |
| | 38829 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 38830 | .each = .{ .once = &.{ |
| | 38831 | .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ }, |
| | 38832 | .{ ._, .vp_b, .ackssw, .dst0y, .dst0y, .dst0y, ._ }, |
| | 38833 | } }, |
| | 38834 | }, .{ |
| | 38835 | .required_features = .{ .avx2, null, null, null }, |
| | 38836 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 38837 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }}, |
| | 38838 | .patterns = &.{ |
| | 38839 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 38840 | }, |
| | 38841 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 38842 | .each = .{ .once = &.{ |
| | 38843 | .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ }, |
| | 38844 | .{ ._, .vp_b, .ackusw, .dst0y, .dst0y, .dst0y, ._ }, |
| | 38845 | } }, |
| | 38846 | }, .{ |
| | 38847 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 38848 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 38849 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, |
| | 38850 | .patterns = &.{ |
| | 38851 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38852 | }, |
| | 38853 | .extra_temps = .{ |
| | 38854 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38855 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 38856 | .unused, |
| | 38857 | .unused, |
| | 38858 | .unused, |
| | 38859 | .unused, |
| | 38860 | .unused, |
| | 38861 | .unused, |
| | 38862 | .unused, |
| | 38863 | }, |
| | 38864 | .dst_temps = .{.mem}, |
| | 38865 | .clobbers = .{ .eflags = true }, |
| | 38866 | .each = .{ .once = &.{ |
| | 38867 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 38868 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38869 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 38870 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 38871 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38872 | } }, |
| | 38873 | }, .{ |
| | 38874 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 38875 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, |
| | 38876 | .patterns = &.{ |
| | 38877 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38878 | }, |
| | 38879 | .extra_temps = .{ |
| | 38880 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38881 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 38882 | .unused, |
| | 38883 | .unused, |
| | 38884 | .unused, |
| | 38885 | .unused, |
| | 38886 | .unused, |
| | 38887 | .unused, |
| | 38888 | .unused, |
| | 38889 | }, |
| | 38890 | .dst_temps = .{.mem}, |
| | 38891 | .clobbers = .{ .eflags = true }, |
| | 38892 | .each = .{ .once = &.{ |
| | 38893 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 38894 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38895 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 38896 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 38897 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 38898 | } }, |
| | 38899 | }, .{ |
| | 38900 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 38901 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 38902 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, |
| | 38903 | .patterns = &.{ |
| | 38904 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38905 | }, |
| | 38906 | .extra_temps = .{ |
| | 38907 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38908 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 38909 | .unused, |
| | 38910 | .unused, |
| | 38911 | .unused, |
| | 38912 | .unused, |
| | 38913 | .unused, |
| | 38914 | .unused, |
| | 38915 | .unused, |
| | 38916 | }, |
| | 38917 | .dst_temps = .{.mem}, |
| | 38918 | .clobbers = .{ .eflags = true }, |
| | 38919 | .each = .{ .once = &.{ |
| | 38920 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 38921 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38922 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 38923 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 38924 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38925 | } }, |
| | 38926 | }, .{ |
| | 38927 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 38928 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, |
| | 38929 | .patterns = &.{ |
| | 38930 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38931 | }, |
| | 38932 | .extra_temps = .{ |
| | 38933 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38934 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 38935 | .unused, |
| | 38936 | .unused, |
| | 38937 | .unused, |
| | 38938 | .unused, |
| | 38939 | .unused, |
| | 38940 | .unused, |
| | 38941 | .unused, |
| | 38942 | }, |
| | 38943 | .dst_temps = .{.mem}, |
| | 38944 | .clobbers = .{ .eflags = true }, |
| | 38945 | .each = .{ .once = &.{ |
| | 38946 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 38947 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 38948 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 38949 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 38950 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 38951 | } }, |
| | 38952 | }, .{ |
| | 38953 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 38954 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| | 38955 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, |
| | 38956 | .patterns = &.{ |
| | 38957 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38958 | }, |
| | 38959 | .extra_temps = .{ |
| | 38960 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38961 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 38962 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 38963 | .unused, |
| | 38964 | .unused, |
| | 38965 | .unused, |
| | 38966 | .unused, |
| | 38967 | .unused, |
| | 38968 | .unused, |
| | 38969 | }, |
| | 38970 | .dst_temps = .{.mem}, |
| | 38971 | .clobbers = .{ .eflags = true }, |
| | 38972 | .each = .{ .once = &.{ |
| | 38973 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 38974 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 38975 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| | 38976 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, |
| | 38977 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 38978 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 38979 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 38980 | } }, |
| | 38981 | }, .{ |
| | 38982 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| | 38983 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, |
| | 38984 | .patterns = &.{ |
| | 38985 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 38986 | }, |
| | 38987 | .extra_temps = .{ |
| | 38988 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 38989 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 38990 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 38991 | .unused, |
| | 38992 | .unused, |
| | 38993 | .unused, |
| | 38994 | .unused, |
| | 38995 | .unused, |
| | 38996 | .unused, |
| | 38997 | }, |
| | 38998 | .dst_temps = .{.mem}, |
| | 38999 | .clobbers = .{ .eflags = true }, |
| | 39000 | .each = .{ .once = &.{ |
| | 39001 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 39002 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 39003 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| | 39004 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, |
| | 39005 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 39006 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 39007 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 39008 | } }, |
| | 39009 | }, .{ |
| | 39010 | .required_features = .{ .sse, null, null, null }, |
| | 39011 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 39012 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, |
| | 39013 | .patterns = &.{ |
| | 39014 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 39015 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 39016 | }, |
| | 39017 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 39018 | .each = .{ .once = &.{} }, |
| | 39019 | }, .{ |
| | 39020 | .required_features = .{ .avx, null, null, null }, |
| | 39021 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| | 39022 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }}, |
| | 39023 | .patterns = &.{ |
| | 39024 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 39025 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 39026 | }, |
| | 39027 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 39028 | .each = .{ .once = &.{} }, |
| | 39029 | }, .{ |
| | 39030 | .required_features = .{ .avx, null, null, null }, |
| | 39031 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 39032 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }}, |
| | 39033 | .patterns = &.{ |
| | 39034 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 39035 | }, |
| | 39036 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 39037 | .each = .{ .once = &.{ |
| | 39038 | .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ }, |
| | 39039 | } }, |
| | 39040 | }, .{ |
| | 39041 | .required_features = .{ .avx, null, null, null }, |
| | 39042 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 39043 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }}, |
| | 39044 | .patterns = &.{ |
| | 39045 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 39046 | }, |
| | 39047 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 39048 | .each = .{ .once = &.{ |
| | 39049 | .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ }, |
| | 39050 | } }, |
| | 39051 | }, .{ |
| | 39052 | .required_features = .{ .sse2, null, null, null }, |
| | 39053 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 39054 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }}, |
| | 39055 | .patterns = &.{ |
| | 39056 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 39057 | }, |
| | 39058 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 39059 | .each = .{ .once = &.{ |
| | 39060 | .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ }, |
| | 39061 | } }, |
| | 39062 | }, .{ |
| | 39063 | .required_features = .{ .sse4_1, null, null, null }, |
| | 39064 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 39065 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }}, |
| | 39066 | .patterns = &.{ |
| | 39067 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 39068 | }, |
| | 39069 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 39070 | .each = .{ .once = &.{ |
| | 39071 | .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ }, |
| | 39072 | } }, |
| | 39073 | }, .{ |
| | 39074 | .required_features = .{ .avx2, null, null, null }, |
| | 39075 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 39076 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, |
| | 39077 | .patterns = &.{ |
| | 39078 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 39079 | }, |
| | 39080 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 39081 | .each = .{ .once = &.{ |
| | 39082 | .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ }, |
| | 39083 | } }, |
| | 39084 | }, .{ |
| | 39085 | .required_features = .{ .avx2, null, null, null }, |
| | 39086 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 39087 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, |
| | 39088 | .patterns = &.{ |
| | 39089 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 39090 | }, |
| | 39091 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 39092 | .each = .{ .once = &.{ |
| | 39093 | .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ }, |
| | 39094 | } }, |
| | 39095 | }, .{ |
| | 39096 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 39097 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, |
| | 39098 | .patterns = &.{ |
| | 39099 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 39100 | }, |
| | 39101 | .extra_temps = .{ |
| | 39102 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 39103 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 39104 | .unused, |
| | 39105 | .unused, |
| | 39106 | .unused, |
| | 39107 | .unused, |
| | 39108 | .unused, |
| | 39109 | .unused, |
| | 39110 | .unused, |
| | 39111 | }, |
| | 39112 | .dst_temps = .{.mem}, |
| | 39113 | .clobbers = .{ .eflags = true }, |
| | 39114 | .each = .{ .once = &.{ |
| | 39115 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 39116 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 39117 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 39118 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 39119 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 39120 | } }, |
| | 39121 | }, .{ |
| | 39122 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 39123 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, |
| | 39124 | .patterns = &.{ |
| | 39125 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 39126 | }, |
| | 39127 | .extra_temps = .{ |
| | 39128 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 39129 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 39130 | .unused, |
| | 39131 | .unused, |
| | 39132 | .unused, |
| | 39133 | .unused, |
| | 39134 | .unused, |
| | 39135 | .unused, |
| | 39136 | .unused, |
| | 39137 | }, |
| | 39138 | .dst_temps = .{.mem}, |
| | 39139 | .clobbers = .{ .eflags = true }, |
| | 39140 | .each = .{ .once = &.{ |
| | 39141 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 39142 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 39143 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 39144 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 39145 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 39146 | } }, |
| | 39147 | }, .{ |
| | 39148 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 39149 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, |
| | 39150 | .patterns = &.{ |
| | 39151 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 39152 | }, |
| | 39153 | .extra_temps = .{ |
| | 39154 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 39155 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 39156 | .unused, |
| | 39157 | .unused, |
| | 39158 | .unused, |
| | 39159 | .unused, |
| | 39160 | .unused, |
| | 39161 | .unused, |
| | 39162 | .unused, |
| | 39163 | }, |
| | 39164 | .dst_temps = .{.mem}, |
| | 39165 | .clobbers = .{ .eflags = true }, |
| | 39166 | .each = .{ .once = &.{ |
| | 39167 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 39168 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 39169 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 39170 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 39171 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 39172 | } }, |
| | 39173 | }, .{ |
| | 39174 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| | 39175 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, |
| | 39176 | .patterns = &.{ |
| | 39177 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 39178 | }, |
| | 39179 | .extra_temps = .{ |
| | 39180 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 39181 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 39182 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 39183 | .unused, |
| | 39184 | .unused, |
| | 39185 | .unused, |
| | 39186 | .unused, |
| | 39187 | .unused, |
| | 39188 | .unused, |
| | 39189 | }, |
| | 39190 | .dst_temps = .{.mem}, |
| | 39191 | .clobbers = .{ .eflags = true }, |
| | 39192 | .each = .{ .once = &.{ |
| | 39193 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 39194 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 39195 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| | 39196 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, |
| | 39197 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 39198 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 39199 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 39200 | } }, |
| | 39201 | }, .{ |
| | 39202 | .required_features = .{ .sse, null, null, null }, |
| | 39203 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 39204 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, |
| | 39205 | .patterns = &.{ |
| | 39206 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 39207 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 39208 | }, |
| | 39209 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 39210 | .each = .{ .once = &.{} }, |
| | 39211 | }, .{ |
| | 39212 | .required_features = .{ .avx, null, null, null }, |
| | 39213 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 39214 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }}, |
| | 39215 | .patterns = &.{ |
| | 39216 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 39217 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 39218 | }, |
| | 39219 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 39220 | .each = .{ .once = &.{} }, |
| | 39221 | }, .{ |
| | 39222 | .required_features = .{ .avx, null, null, null }, |
| | 39223 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 39224 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }}, |
| | 39225 | .patterns = &.{ |
| | 39226 | .{ .src = .{ .mem, .none, .none } }, |
| | 39227 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 39228 | }, |
| | 39229 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 39230 | .each = .{ .once = &.{ |
| | 39231 | .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ }, |
| | 39232 | } }, |
| | 39233 | }, .{ |
| | 39234 | .required_features = .{ .sse2, null, null, null }, |
| | 39235 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 39236 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }}, |
| | 39237 | .patterns = &.{ |
| | 39238 | .{ .src = .{ .mem, .none, .none } }, |
| | 39239 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 39240 | }, |
| | 39241 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 39242 | .each = .{ .once = &.{ |
| | 39243 | .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ }, |
| | 39244 | } }, |
| | 39245 | }, .{ |
| | 39246 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 39247 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, |
| | 39248 | .patterns = &.{ |
| | 39249 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 39250 | }, |
| | 39251 | .extra_temps = .{ |
| | 39252 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 39253 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 39254 | .unused, |
| | 39255 | .unused, |
| | 39256 | .unused, |
| | 39257 | .unused, |
| | 39258 | .unused, |
| | 39259 | .unused, |
| | 39260 | .unused, |
| | 39261 | }, |
| | 39262 | .dst_temps = .{.mem}, |
| | 39263 | .clobbers = .{ .eflags = true }, |
| | 39264 | .each = .{ .once = &.{ |
| | 39265 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 39266 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 39267 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 39268 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 39269 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 39270 | } }, |
| | 39271 | }, .{ |
| | 39272 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 39273 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, |
| | 39274 | .patterns = &.{ |
| | 39275 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 39276 | }, |
| | 39277 | .extra_temps = .{ |
| | 39278 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 39279 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 39280 | .unused, |
| | 39281 | .unused, |
| | 39282 | .unused, |
| | 39283 | .unused, |
| | 39284 | .unused, |
| | 39285 | .unused, |
| | 39286 | .unused, |
| | 39287 | }, |
| | 39288 | .dst_temps = .{.mem}, |
| | 39289 | .clobbers = .{ .eflags = true }, |
| | 39290 | .each = .{ .once = &.{ |
| | 39291 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 39292 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 39293 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 39294 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 39295 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 39296 | } }, |
| | 39297 | }, .{ |
| | 39298 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| | 39299 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, |
| | 39300 | .patterns = &.{ |
| | 39301 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 39302 | }, |
| | 39303 | .extra_temps = .{ |
| | 39304 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 39305 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 39306 | .unused, |
| | 39307 | .unused, |
| | 39308 | .unused, |
| | 39309 | .unused, |
| | 39310 | .unused, |
| | 39311 | .unused, |
| | 39312 | .unused, |
| | 39313 | }, |
| | 39314 | .dst_temps = .{.mem}, |
| | 39315 | .clobbers = .{ .eflags = true }, |
| | 39316 | .each = .{ .once = &.{ |
| | 39317 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 39318 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 39319 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 39320 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 39321 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 39322 | } }, |
| | 39323 | }, .{ |
| | 39324 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| | 39325 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, |
| | 39326 | .patterns = &.{ |
| | 39327 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 39328 | }, |
| | 39329 | .extra_temps = .{ |
| | 39330 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 39331 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 39332 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 39333 | .unused, |
| | 39334 | .unused, |
| | 39335 | .unused, |
| | 39336 | .unused, |
| | 39337 | .unused, |
| | 39338 | .unused, |
| | 39339 | }, |
| | 39340 | .dst_temps = .{.mem}, |
| | 39341 | .clobbers = .{ .eflags = true }, |
| | 39342 | .each = .{ .once = &.{ |
| | 39343 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 39344 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 39345 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| | 39346 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, |
| | 39347 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 39348 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 39349 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 39350 | } }, |
| | 39351 | }, .{ |
| | 39352 | .required_features = .{ .sse, null, null, null }, |
| | 39353 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 39354 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, |
| | 39355 | .patterns = &.{ |
| | 39356 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 39357 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 39358 | }, |
| | 39359 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 39360 | .each = .{ .once = &.{} }, |
| | 39361 | }, .{ |
| | 39362 | .required_features = .{ .avx, null, null, null }, |
| | 39363 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 39364 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }}, |
| | 39365 | .patterns = &.{ |
| | 39366 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 39367 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 39368 | }, |
| | 39369 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 39370 | .each = .{ .once = &.{} }, |
| | 39371 | }, .{ |
| | 39372 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39373 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| | 39374 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, |
| | 39375 | .patterns = &.{ |
| | 39376 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 39377 | }, |
| | 39378 | .extra_temps = .{ |
| | 39379 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 39380 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 39381 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 39382 | .unused, |
| | 39383 | .unused, |
| | 39384 | .unused, |
| | 39385 | .unused, |
| | 39386 | .unused, |
| | 39387 | .unused, |
| | 39388 | }, |
| | 39389 | .dst_temps = .{.mem}, |
| | 39390 | .clobbers = .{ .eflags = true }, |
| | 39391 | .each = .{ .once = &.{ |
| | 39392 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 39393 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 39394 | .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ }, |
| | 39395 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, |
| | 39396 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 39397 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 39398 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 39399 | } }, |
| | 39400 | }, .{ |
| | 39401 | .required_features = .{ .sse, null, null, null }, |
| | 39402 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 39403 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, |
| | 39404 | .patterns = &.{ |
| | 39405 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 39406 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 39407 | }, |
| | 39408 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 39409 | .each = .{ .once = &.{} }, |
| | 39410 | }, .{ |
| | 39411 | .required_features = .{ .avx, null, null, null }, |
| | 39412 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .xword } }, .any, .any }, |
| | 39413 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .xword } }}, |
| | 39414 | .patterns = &.{ |
| | 39415 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 39416 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 39417 | }, |
| | 39418 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 39419 | .each = .{ .once = &.{} }, |
| | 39420 | }, .{ |
| | 39421 | .required_features = .{ .avx, null, null, null }, |
| | 39422 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| | 39423 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .yword } }}, |
| | 39424 | .patterns = &.{ |
| | 39425 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 39426 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 39427 | }, |
| | 39428 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 39429 | .each = .{ .once = &.{} }, |
| | 39430 | }, .{ |
| | 39431 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| | 39432 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| | 39433 | .dst_constraints = .{.any_scalar_int}, |
| | 39434 | .patterns = &.{ |
| | 39435 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 39436 | }, |
| | 39437 | .extra_temps = .{ |
| | 39438 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 39439 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| | 39440 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 39441 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39442 | .unused, |
| | 39443 | .unused, |
| | 39444 | .unused, |
| | 39445 | .unused, |
| | 39446 | .unused, |
| | 39447 | }, |
| | 39448 | .dst_temps = .{.mem}, |
| | 39449 | .clobbers = .{ .eflags = true }, |
| | 39450 | .each = .{ .once = &.{ |
| | 39451 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 39452 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| | 39453 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| | 39454 | .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ }, |
| | 39455 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 39456 | .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 39457 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| | 39458 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| | 39459 | } }, |
| | 39460 | }, .{ |
| | 39461 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39462 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| | 39463 | .dst_constraints = .{.any_scalar_int}, |
| | 39464 | .patterns = &.{ |
| | 39465 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 39466 | }, |
| | 39467 | .extra_temps = .{ |
| | 39468 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 39469 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| | 39470 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 39471 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39472 | .unused, |
| | 39473 | .unused, |
| | 39474 | .unused, |
| | 39475 | .unused, |
| | 39476 | .unused, |
| | 39477 | }, |
| | 39478 | .dst_temps = .{.mem}, |
| | 39479 | .clobbers = .{ .eflags = true }, |
| | 39480 | .each = .{ .once = &.{ |
| | 39481 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 39482 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| | 39483 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| | 39484 | .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ }, |
| | 39485 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 39486 | .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 39487 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| | 39488 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 39489 | } }, |
| | 39490 | } } else comptime &.{ .{ |
| | 39491 | .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, |
| | 39492 | .dst_constraints = .{.{ .signed_int = .dword }}, |
| | 39493 | .patterns = &.{ |
| | 39494 | .{ .src = .{ .mem, .none, .none } }, |
| | 39495 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39496 | }, |
| | 39497 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, |
| | 39498 | .each = .{ .once = &.{ |
| | 39499 | .{ ._, ._, .movsx, .dst0d, .src0b, ._, ._ }, |
| | 39500 | } }, |
| | 39501 | }, .{ |
| | 39502 | .src_constraints = .{ .{ .int = .byte }, .any, .any }, |
| | 39503 | .dst_constraints = .{.{ .int = .dword }}, |
| | 39504 | .patterns = &.{ |
| | 39505 | .{ .src = .{ .mem, .none, .none } }, |
| | 39506 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39507 | }, |
| | 39508 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, |
| | 39509 | .each = .{ .once = &.{ |
| | 39510 | .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ }, |
| | 39511 | } }, |
| | 39512 | }, .{ |
| | 39513 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39514 | .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, |
| | 39515 | .dst_constraints = .{.{ .signed_int = .qword }}, |
| | 39516 | .patterns = &.{ |
| | 39517 | .{ .src = .{ .mem, .none, .none } }, |
| | 39518 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39519 | }, |
| | 39520 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, |
| | 39521 | .each = .{ .once = &.{ |
| | 39522 | .{ ._, ._, .movsx, .dst0q, .src0b, ._, ._ }, |
| | 39523 | } }, |
| | 39524 | }, .{ |
| | 39525 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39526 | .src_constraints = .{ .{ .int = .byte }, .any, .any }, |
| | 39527 | .dst_constraints = .{.{ .int = .qword }}, |
| | 39528 | .patterns = &.{ |
| | 39529 | .{ .src = .{ .mem, .none, .none } }, |
| | 39530 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39531 | }, |
| | 39532 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, |
| | 39533 | .each = .{ .once = &.{ |
| | 39534 | .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ }, |
| | 39535 | } }, |
| | 39536 | }, .{ |
| | 39537 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39538 | .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, |
| | 39539 | .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, |
| | 39540 | .patterns = &.{ |
| | 39541 | .{ .src = .{ .mem, .none, .none } }, |
| | 39542 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39543 | }, |
| | 39544 | .extra_temps = .{ |
| | 39545 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| | 39546 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 39547 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39548 | .unused, |
| | 39549 | .unused, |
| | 39550 | .unused, |
| | 39551 | .unused, |
| | 39552 | .unused, |
| | 39553 | .unused, |
| | 39554 | }, |
| | 39555 | .dst_temps = .{.mem}, |
| | 39556 | .clobbers = .{ .eflags = true }, |
| | 39557 | .each = .{ .once = &.{ |
| | 39558 | .{ ._, ._, .movsx, .tmp0q, .src0b, ._, ._ }, |
| | 39559 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39560 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 39561 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| | 39562 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| | 39563 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 39564 | } }, |
| | 39565 | }, .{ |
| | 39566 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39567 | .src_constraints = .{ .{ .int = .byte }, .any, .any }, |
| | 39568 | .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, |
| | 39569 | .patterns = &.{ |
| | 39570 | .{ .src = .{ .mem, .none, .none } }, |
| | 39571 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39572 | }, |
| | 39573 | .extra_temps = .{ |
| | 39574 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| | 39575 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 39576 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39577 | .unused, |
| | 39578 | .unused, |
| | 39579 | .unused, |
| | 39580 | .unused, |
| | 39581 | .unused, |
| | 39582 | .unused, |
| | 39583 | }, |
| | 39584 | .dst_temps = .{.mem}, |
| | 39585 | .clobbers = .{ .eflags = true }, |
| | 39586 | .each = .{ .once = &.{ |
| | 39587 | .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, |
| | 39588 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39589 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 39590 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 39591 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| | 39592 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 39593 | } }, |
| | 39594 | }, .{ |
| | 39595 | .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, |
| | 39596 | .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, |
| | 39597 | .patterns = &.{ |
| | 39598 | .{ .src = .{ .mem, .none, .none } }, |
| | 39599 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39600 | }, |
| | 39601 | .extra_temps = .{ |
| | 39602 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 39603 | .{ .type = .usize, .kind = .{ .reg = .edi } }, |
| | 39604 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39605 | .unused, |
| | 39606 | .unused, |
| | 39607 | .unused, |
| | 39608 | .unused, |
| | 39609 | .unused, |
| | 39610 | .unused, |
| | 39611 | }, |
| | 39612 | .dst_temps = .{.mem}, |
| | 39613 | .clobbers = .{ .eflags = true }, |
| | 39614 | .each = .{ .once = &.{ |
| | 39615 | .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, |
| | 39616 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39617 | .{ ._, ._sd, .sto, ._, ._, ._, ._ }, |
| | 39618 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| | 39619 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ }, |
| | 39620 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 39621 | } }, |
| | 39622 | }, .{ |
| | 39623 | .src_constraints = .{ .{ .int = .byte }, .any, .any }, |
| | 39624 | .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }}, |
| | 39625 | .patterns = &.{ |
| | 39626 | .{ .src = .{ .mem, .none, .none } }, |
| | 39627 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39628 | }, |
| | 39629 | .extra_temps = .{ |
| | 39630 | .{ .type = .u32, .kind = .{ .reg = .eax } }, |
| | 39631 | .{ .type = .usize, .kind = .{ .reg = .edi } }, |
| | 39632 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39633 | .unused, |
| | 39634 | .unused, |
| | 39635 | .unused, |
| | 39636 | .unused, |
| | 39637 | .unused, |
| | 39638 | .unused, |
| | 39639 | }, |
| | 39640 | .dst_temps = .{.mem}, |
| | 39641 | .clobbers = .{ .eflags = true }, |
| | 39642 | .each = .{ .once = &.{ |
| | 39643 | .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, |
| | 39644 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39645 | .{ ._, ._sd, .sto, ._, ._, ._, ._ }, |
| | 39646 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 39647 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ }, |
| | 39648 | .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ }, |
| | 39649 | } }, |
| | 39650 | }, .{ |
| | 39651 | .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, |
| | 39652 | .dst_constraints = .{.{ .signed_int = .dword }}, |
| | 39653 | .patterns = &.{ |
| | 39654 | .{ .src = .{ .mem, .none, .none } }, |
| | 39655 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39656 | }, |
| | 39657 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, |
| | 39658 | .each = .{ .once = &.{ |
| | 39659 | .{ ._, ._, .movsx, .dst0d, .src0w, ._, ._ }, |
| | 39660 | } }, |
| | 39661 | }, .{ |
| | 39662 | .src_constraints = .{ .{ .int = .word }, .any, .any }, |
| | 39663 | .dst_constraints = .{.{ .int = .dword }}, |
| | 39664 | .patterns = &.{ |
| | 39665 | .{ .src = .{ .mem, .none, .none } }, |
| | 39666 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39667 | }, |
| | 39668 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, |
| | 39669 | .each = .{ .once = &.{ |
| | 39670 | .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ }, |
| | 39671 | } }, |
| | 39672 | }, .{ |
| | 39673 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39674 | .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, |
| | 39675 | .dst_constraints = .{.{ .signed_int = .qword }}, |
| | 39676 | .patterns = &.{ |
| | 39677 | .{ .src = .{ .mem, .none, .none } }, |
| | 39678 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39679 | }, |
| | 39680 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, |
| | 39681 | .each = .{ .once = &.{ |
| | 39682 | .{ ._, ._, .movsx, .dst0q, .src0w, ._, ._ }, |
| | 39683 | } }, |
| | 39684 | }, .{ |
| | 39685 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39686 | .src_constraints = .{ .{ .int = .word }, .any, .any }, |
| | 39687 | .dst_constraints = .{.{ .int = .qword }}, |
| | 39688 | .patterns = &.{ |
| | 39689 | .{ .src = .{ .mem, .none, .none } }, |
| | 39690 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39691 | }, |
| | 39692 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, |
| | 39693 | .each = .{ .once = &.{ |
| | 39694 | .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ }, |
| | 39695 | } }, |
| | 39696 | }, .{ |
| | 39697 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39698 | .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, |
| | 39699 | .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, |
| | 39700 | .patterns = &.{ |
| | 39701 | .{ .src = .{ .mem, .none, .none } }, |
| | 39702 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39703 | }, |
| | 39704 | .extra_temps = .{ |
| | 39705 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| | 39706 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 39707 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39708 | .unused, |
| | 39709 | .unused, |
| | 39710 | .unused, |
| | 39711 | .unused, |
| | 39712 | .unused, |
| | 39713 | .unused, |
| | 39714 | }, |
| | 39715 | .dst_temps = .{.mem}, |
| | 39716 | .clobbers = .{ .eflags = true }, |
| | 39717 | .each = .{ .once = &.{ |
| | 39718 | .{ ._, ._, .movsx, .tmp0q, .src0w, ._, ._ }, |
| | 39719 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39720 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 39721 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| | 39722 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| | 39723 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 39724 | } }, |
| | 39725 | }, .{ |
| | 39726 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39727 | .src_constraints = .{ .{ .int = .word }, .any, .any }, |
| | 39728 | .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, |
| | 39729 | .patterns = &.{ |
| | 39730 | .{ .src = .{ .mem, .none, .none } }, |
| | 39731 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39732 | }, |
| | 39733 | .extra_temps = .{ |
| | 39734 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| | 39735 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 39736 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39737 | .unused, |
| | 39738 | .unused, |
| | 39739 | .unused, |
| | 39740 | .unused, |
| | 39741 | .unused, |
| | 39742 | .unused, |
| | 39743 | }, |
| | 39744 | .dst_temps = .{.mem}, |
| | 39745 | .clobbers = .{ .eflags = true }, |
| | 39746 | .each = .{ .once = &.{ |
| | 39747 | .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, |
| | 39748 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39749 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 39750 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 39751 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| | 39752 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 39753 | } }, |
| | 39754 | }, .{ |
| | 39755 | .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, |
| | 39756 | .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, |
| | 39757 | .patterns = &.{ |
| | 39758 | .{ .src = .{ .mem, .none, .none } }, |
| | 39759 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39760 | }, |
| | 39761 | .extra_temps = .{ |
| | 39762 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 39763 | .{ .type = .usize, .kind = .{ .reg = .edi } }, |
| | 39764 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39765 | .unused, |
| | 39766 | .unused, |
| | 39767 | .unused, |
| | 39768 | .unused, |
| | 39769 | .unused, |
| | 39770 | .unused, |
| | 39771 | }, |
| | 39772 | .dst_temps = .{.mem}, |
| | 39773 | .clobbers = .{ .eflags = true }, |
| | 39774 | .each = .{ .once = &.{ |
| | 39775 | .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, |
| | 39776 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39777 | .{ ._, ._sd, .sto, ._, ._, ._, ._ }, |
| | 39778 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| | 39779 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ }, |
| | 39780 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 39781 | } }, |
| | 39782 | }, .{ |
| | 39783 | .src_constraints = .{ .{ .int = .word }, .any, .any }, |
| | 39784 | .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }}, |
| | 39785 | .patterns = &.{ |
| | 39786 | .{ .src = .{ .mem, .none, .none } }, |
| | 39787 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39788 | }, |
| | 39789 | .extra_temps = .{ |
| | 39790 | .{ .type = .u32, .kind = .{ .reg = .eax } }, |
| | 39791 | .{ .type = .usize, .kind = .{ .reg = .edi } }, |
| | 39792 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39793 | .unused, |
| | 39794 | .unused, |
| | 39795 | .unused, |
| | 39796 | .unused, |
| | 39797 | .unused, |
| | 39798 | .unused, |
| | 39799 | }, |
| | 39800 | .dst_temps = .{.mem}, |
| | 39801 | .clobbers = .{ .eflags = true }, |
| | 39802 | .each = .{ .once = &.{ |
| | 39803 | .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, |
| | 39804 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39805 | .{ ._, ._sd, .sto, ._, ._, ._, ._ }, |
| | 39806 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 39807 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ }, |
| | 39808 | .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ }, |
| | 39809 | } }, |
| | 39810 | }, .{ |
| | 39811 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39812 | .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, |
| | 39813 | .dst_constraints = .{.{ .signed_int = .qword }}, |
| | 39814 | .patterns = &.{ |
| | 39815 | .{ .src = .{ .mem, .none, .none } }, |
| | 39816 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39817 | }, |
| | 39818 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, |
| | 39819 | .each = .{ .once = &.{ |
| | 39820 | .{ ._, ._d, .movsx, .dst0q, .src0d, ._, ._ }, |
| | 39821 | } }, |
| | 39822 | }, .{ |
| | 39823 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39824 | .src_constraints = .{ .{ .int = .dword }, .any, .any }, |
| | 39825 | .dst_constraints = .{.{ .int = .qword }}, |
| | 39826 | .patterns = &.{ |
| | 39827 | .{ .src = .{ .mem, .none, .none } }, |
| | 39828 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39829 | }, |
| | 39830 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, |
| | 39831 | .each = .{ .once = &.{ |
| | 39832 | .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ }, |
| | 39833 | } }, |
| | 39834 | }, .{ |
| | 39835 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39836 | .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, |
| | 39837 | .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, |
| | 39838 | .patterns = &.{ |
| | 39839 | .{ .src = .{ .mem, .none, .none } }, |
| | 39840 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39841 | }, |
| | 39842 | .extra_temps = .{ |
| | 39843 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| | 39844 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 39845 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39846 | .unused, |
| | 39847 | .unused, |
| | 39848 | .unused, |
| | 39849 | .unused, |
| | 39850 | .unused, |
| | 39851 | .unused, |
| | 39852 | }, |
| | 39853 | .dst_temps = .{.mem}, |
| | 39854 | .clobbers = .{ .eflags = true }, |
| | 39855 | .each = .{ .once = &.{ |
| | 39856 | .{ ._, ._d, .movsx, .tmp0q, .src0d, ._, ._ }, |
| | 39857 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39858 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 39859 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| | 39860 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| | 39861 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 39862 | } }, |
| | 39863 | }, .{ |
| | 39864 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39865 | .src_constraints = .{ .{ .int = .dword }, .any, .any }, |
| | 39866 | .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, |
| | 39867 | .patterns = &.{ |
| | 39868 | .{ .src = .{ .mem, .none, .none } }, |
| | 39869 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39870 | }, |
| | 39871 | .extra_temps = .{ |
| | 39872 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| | 39873 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 39874 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39875 | .unused, |
| | 39876 | .unused, |
| | 39877 | .unused, |
| | 39878 | .unused, |
| | 39879 | .unused, |
| | 39880 | .unused, |
| | 39881 | }, |
| | 39882 | .dst_temps = .{.mem}, |
| | 39883 | .clobbers = .{ .eflags = true }, |
| | 39884 | .each = .{ .once = &.{ |
| | 39885 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| | 39886 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39887 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 39888 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 39889 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| | 39890 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 39891 | } }, |
| | 39892 | }, .{ |
| | 39893 | .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, |
| | 39894 | .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, |
| | 39895 | .patterns = &.{ |
| | 39896 | .{ .src = .{ .mem, .none, .none } }, |
| | 39897 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39898 | }, |
| | 39899 | .extra_temps = .{ |
| | 39900 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| | 39901 | .{ .type = .usize, .kind = .{ .reg = .edi } }, |
| | 39902 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39903 | .unused, |
| | 39904 | .unused, |
| | 39905 | .unused, |
| | 39906 | .unused, |
| | 39907 | .unused, |
| | 39908 | .unused, |
| | 39909 | }, |
| | 39910 | .dst_temps = .{.mem}, |
| | 39911 | .clobbers = .{ .eflags = true }, |
| | 39912 | .each = .{ .once = &.{ |
| | 39913 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| | 39914 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39915 | .{ ._, ._sd, .sto, ._, ._, ._, ._ }, |
| | 39916 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| | 39917 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ }, |
| | 39918 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 39919 | } }, |
| | 39920 | }, .{ |
| | 39921 | .src_constraints = .{ .{ .int = .dword }, .any, .any }, |
| | 39922 | .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }}, |
| | 39923 | .patterns = &.{ |
| | 39924 | .{ .src = .{ .mem, .none, .none } }, |
| | 39925 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39926 | }, |
| | 39927 | .extra_temps = .{ |
| | 39928 | .{ .type = .u32, .kind = .{ .reg = .eax } }, |
| | 39929 | .{ .type = .usize, .kind = .{ .reg = .edi } }, |
| | 39930 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39931 | .unused, |
| | 39932 | .unused, |
| | 39933 | .unused, |
| | 39934 | .unused, |
| | 39935 | .unused, |
| | 39936 | .unused, |
| | 39937 | }, |
| | 39938 | .dst_temps = .{.mem}, |
| | 39939 | .clobbers = .{ .eflags = true }, |
| | 39940 | .each = .{ .once = &.{ |
| | 39941 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| | 39942 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39943 | .{ ._, ._sd, .sto, ._, ._, ._, ._ }, |
| | 39944 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 39945 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ }, |
| | 39946 | .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ }, |
| | 39947 | } }, |
| | 39948 | }, .{ |
| | 39949 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39950 | .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, |
| | 39951 | .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, |
| | 39952 | .patterns = &.{ |
| | 39953 | .{ .src = .{ .mem, .none, .none } }, |
| | 39954 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39955 | }, |
| | 39956 | .extra_temps = .{ |
| | 39957 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| | 39958 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 39959 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39960 | .unused, |
| | 39961 | .unused, |
| | 39962 | .unused, |
| | 39963 | .unused, |
| | 39964 | .unused, |
| | 39965 | .unused, |
| | 39966 | }, |
| | 39967 | .dst_temps = .{.mem}, |
| | 39968 | .clobbers = .{ .eflags = true }, |
| | 39969 | .each = .{ .once = &.{ |
| | 39970 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| | 39971 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 39972 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 39973 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| | 39974 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| | 39975 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 39976 | } }, |
| | 39977 | }, .{ |
| | 39978 | .required_features = .{ .@"64bit", null, null, null }, |
| | 39979 | .src_constraints = .{ .{ .int = .qword }, .any, .any }, |
| | 39980 | .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, |
| | 39981 | .patterns = &.{ |
| | 39982 | .{ .src = .{ .mem, .none, .none } }, |
| | 39983 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 39984 | }, |
| | 39985 | .extra_temps = .{ |
| | 39986 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| | 39987 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 39988 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 39989 | .unused, |
| | 39990 | .unused, |
| | 39991 | .unused, |
| | 39992 | .unused, |
| | 39993 | .unused, |
| | 39994 | .unused, |
| | 39995 | }, |
| | 39996 | .dst_temps = .{.mem}, |
| | 39997 | .clobbers = .{ .eflags = true }, |
| | 39998 | .each = .{ .once = &.{ |
| | 39999 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| | 40000 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 40001 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 40002 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| | 40003 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| | 40004 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 40005 | } }, |
| | 40006 | }, .{ |
| | 40007 | .required_features = .{ .@"64bit", null, null, null }, |
| | 40008 | .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 40009 | .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, |
| | 40010 | .patterns = &.{ |
| | 40011 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40012 | }, |
| | 40013 | .extra_temps = .{ |
| | 40014 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| | 40015 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 40016 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 40017 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| | 40018 | .unused, |
| | 40019 | .unused, |
| | 40020 | .unused, |
| | 40021 | .unused, |
| | 40022 | .unused, |
| | 40023 | }, |
| | 40024 | .dst_temps = .{.mem}, |
| | 40025 | .clobbers = .{ .eflags = true }, |
| | 40026 | .each = .{ .once = &.{ |
| | 40027 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| | 40028 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 40029 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| | 40030 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 40031 | .{ ._, ._sq, .lod, ._, ._, ._, ._ }, |
| | 40032 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 40033 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| | 40034 | .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ }, |
| | 40035 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 40036 | } }, |
| | 40037 | }, .{ |
| | 40038 | .required_features = .{ .@"64bit", null, null, null }, |
| | 40039 | .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 40040 | .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, |
| | 40041 | .patterns = &.{ |
| | 40042 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40043 | }, |
| | 40044 | .extra_temps = .{ |
| | 40045 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| | 40046 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 40047 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 40048 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| | 40049 | .unused, |
| | 40050 | .unused, |
| | 40051 | .unused, |
| | 40052 | .unused, |
| | 40053 | .unused, |
| | 40054 | }, |
| | 40055 | .dst_temps = .{.mem}, |
| | 40056 | .clobbers = .{ .eflags = true }, |
| | 40057 | .each = .{ .once = &.{ |
| | 40058 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| | 40059 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 40060 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, |
| | 40061 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 40062 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| | 40063 | .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ }, |
| | 40064 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 40065 | } }, |
| | 40066 | }, .{ |
| | 40067 | .required_features = .{ .avx, null, null, null }, |
| | 40068 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40069 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, |
| | 40070 | .patterns = &.{ |
| | 40071 | .{ .src = .{ .mem, .none, .none } }, |
| | 40072 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40073 | }, |
| | 40074 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40075 | .each = .{ .once = &.{ |
| | 40076 | .{ ._, .vp_w, .movsxb, .dst0x, .src0q, ._, ._ }, |
| | 40077 | } }, |
| | 40078 | }, .{ |
| | 40079 | .required_features = .{ .avx, null, null, null }, |
| | 40080 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40081 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, |
| | 40082 | .patterns = &.{ |
| | 40083 | .{ .src = .{ .mem, .none, .none } }, |
| | 40084 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40085 | }, |
| | 40086 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40087 | .each = .{ .once = &.{ |
| | 40088 | .{ ._, .vp_w, .movzxb, .dst0x, .src0q, ._, ._ }, |
| | 40089 | } }, |
| | 40090 | }, .{ |
| | 40091 | .required_features = .{ .sse4_1, null, null, null }, |
| | 40092 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40093 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, |
| | 40094 | .patterns = &.{ |
| | 40095 | .{ .src = .{ .mem, .none, .none } }, |
| | 40096 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40097 | }, |
| | 40098 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40099 | .each = .{ .once = &.{ |
| | 40100 | .{ ._, .p_w, .movsxb, .dst0x, .src0q, ._, ._ }, |
| | 40101 | } }, |
| | 40102 | }, .{ |
| | 40103 | .required_features = .{ .sse4_1, null, null, null }, |
| | 40104 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40105 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, |
| | 40106 | .patterns = &.{ |
| | 40107 | .{ .src = .{ .mem, .none, .none } }, |
| | 40108 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40109 | }, |
| | 40110 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40111 | .each = .{ .once = &.{ |
| | 40112 | .{ ._, .p_w, .movzxb, .dst0x, .src0q, ._, ._ }, |
| | 40113 | } }, |
| | 40114 | }, .{ |
| | 40115 | .required_features = .{ .sse2, null, null, null }, |
| | 40116 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40117 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, |
| | 40118 | .patterns = &.{ |
| | 40119 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 40120 | }, |
| | 40121 | .extra_temps = .{ |
| | 40122 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 40123 | .unused, |
| | 40124 | .unused, |
| | 40125 | .unused, |
| | 40126 | .unused, |
| | 40127 | .unused, |
| | 40128 | .unused, |
| | 40129 | .unused, |
| | 40130 | .unused, |
| | 40131 | }, |
| | 40132 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 40133 | .each = .{ .once = &.{ |
| | 40134 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 40135 | .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ }, |
| | 40136 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, |
| | 40137 | } }, |
| | 40138 | }, .{ |
| | 40139 | .required_features = .{ .sse2, null, null, null }, |
| | 40140 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40141 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, |
| | 40142 | .patterns = &.{ |
| | 40143 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 40144 | }, |
| | 40145 | .extra_temps = .{ |
| | 40146 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 40147 | .unused, |
| | 40148 | .unused, |
| | 40149 | .unused, |
| | 40150 | .unused, |
| | 40151 | .unused, |
| | 40152 | .unused, |
| | 40153 | .unused, |
| | 40154 | .unused, |
| | 40155 | }, |
| | 40156 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 40157 | .each = .{ .once = &.{ |
| | 40158 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 40159 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, |
| | 40160 | } }, |
| | 40161 | }, .{ |
| | 40162 | .required_features = .{ .avx2, null, null, null }, |
| | 40163 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 40164 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }}, |
| | 40165 | .patterns = &.{ |
| | 40166 | .{ .src = .{ .mem, .none, .none } }, |
| | 40167 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40168 | }, |
| | 40169 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40170 | .each = .{ .once = &.{ |
| | 40171 | .{ ._, .vp_w, .movsxb, .dst0y, .src0x, ._, ._ }, |
| | 40172 | } }, |
| | 40173 | }, .{ |
| | 40174 | .required_features = .{ .avx2, null, null, null }, |
| | 40175 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 40176 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }}, |
| | 40177 | .patterns = &.{ |
| | 40178 | .{ .src = .{ .mem, .none, .none } }, |
| | 40179 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40180 | }, |
| | 40181 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40182 | .each = .{ .once = &.{ |
| | 40183 | .{ ._, .vp_w, .movzxb, .dst0y, .src0x, ._, ._ }, |
| | 40184 | } }, |
| | 40185 | }, .{ |
| | 40186 | .required_features = .{ .avx2, null, null, null }, |
| | 40187 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 40188 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }}, |
| | 40189 | .patterns = &.{ |
| | 40190 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40191 | }, |
| | 40192 | .extra_temps = .{ |
| | 40193 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40194 | .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, |
| | 40195 | .unused, |
| | 40196 | .unused, |
| | 40197 | .unused, |
| | 40198 | .unused, |
| | 40199 | .unused, |
| | 40200 | .unused, |
| | 40201 | .unused, |
| | 40202 | }, |
| | 40203 | .dst_temps = .{.mem}, |
| | 40204 | .clobbers = .{ .eflags = true }, |
| | 40205 | .each = .{ .once = &.{ |
| | 40206 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40207 | .{ .@"0:", .vp_w, .movsxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40208 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 40209 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 40210 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40211 | } }, |
| | 40212 | }, .{ |
| | 40213 | .required_features = .{ .avx2, null, null, null }, |
| | 40214 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 40215 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }}, |
| | 40216 | .patterns = &.{ |
| | 40217 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40218 | }, |
| | 40219 | .extra_temps = .{ |
| | 40220 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40221 | .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, |
| | 40222 | .unused, |
| | 40223 | .unused, |
| | 40224 | .unused, |
| | 40225 | .unused, |
| | 40226 | .unused, |
| | 40227 | .unused, |
| | 40228 | .unused, |
| | 40229 | }, |
| | 40230 | .dst_temps = .{.mem}, |
| | 40231 | .clobbers = .{ .eflags = true }, |
| | 40232 | .each = .{ .once = &.{ |
| | 40233 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40234 | .{ .@"0:", .vp_w, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40235 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 40236 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 40237 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40238 | } }, |
| | 40239 | }, .{ |
| | 40240 | .required_features = .{ .avx, null, null, null }, |
| | 40241 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40242 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }}, |
| | 40243 | .patterns = &.{ |
| | 40244 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40245 | }, |
| | 40246 | .extra_temps = .{ |
| | 40247 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40248 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, |
| | 40249 | .unused, |
| | 40250 | .unused, |
| | 40251 | .unused, |
| | 40252 | .unused, |
| | 40253 | .unused, |
| | 40254 | .unused, |
| | 40255 | .unused, |
| | 40256 | }, |
| | 40257 | .dst_temps = .{.mem}, |
| | 40258 | .clobbers = .{ .eflags = true }, |
| | 40259 | .each = .{ .once = &.{ |
| | 40260 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40261 | .{ .@"0:", .vp_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40262 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 40263 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 40264 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40265 | } }, |
| | 40266 | }, .{ |
| | 40267 | .required_features = .{ .avx, null, null, null }, |
| | 40268 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40269 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }}, |
| | 40270 | .patterns = &.{ |
| | 40271 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40272 | }, |
| | 40273 | .extra_temps = .{ |
| | 40274 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40275 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 40276 | .unused, |
| | 40277 | .unused, |
| | 40278 | .unused, |
| | 40279 | .unused, |
| | 40280 | .unused, |
| | 40281 | .unused, |
| | 40282 | .unused, |
| | 40283 | }, |
| | 40284 | .dst_temps = .{.mem}, |
| | 40285 | .clobbers = .{ .eflags = true }, |
| | 40286 | .each = .{ .once = &.{ |
| | 40287 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40288 | .{ .@"0:", .vp_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40289 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 40290 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 40291 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40292 | } }, |
| | 40293 | }, .{ |
| | 40294 | .required_features = .{ .sse4_1, null, null, null }, |
| | 40295 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40296 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }}, |
| | 40297 | .patterns = &.{ |
| | 40298 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40299 | }, |
| | 40300 | .extra_temps = .{ |
| | 40301 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40302 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, |
| | 40303 | .unused, |
| | 40304 | .unused, |
| | 40305 | .unused, |
| | 40306 | .unused, |
| | 40307 | .unused, |
| | 40308 | .unused, |
| | 40309 | .unused, |
| | 40310 | }, |
| | 40311 | .dst_temps = .{.mem}, |
| | 40312 | .clobbers = .{ .eflags = true }, |
| | 40313 | .each = .{ .once = &.{ |
| | 40314 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40315 | .{ .@"0:", .p_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40316 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 40317 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 40318 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40319 | } }, |
| | 40320 | }, .{ |
| | 40321 | .required_features = .{ .sse4_1, null, null, null }, |
| | 40322 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40323 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }}, |
| | 40324 | .patterns = &.{ |
| | 40325 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40326 | }, |
| | 40327 | .extra_temps = .{ |
| | 40328 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40329 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 40330 | .unused, |
| | 40331 | .unused, |
| | 40332 | .unused, |
| | 40333 | .unused, |
| | 40334 | .unused, |
| | 40335 | .unused, |
| | 40336 | .unused, |
| | 40337 | }, |
| | 40338 | .dst_temps = .{.mem}, |
| | 40339 | .clobbers = .{ .eflags = true }, |
| | 40340 | .each = .{ .once = &.{ |
| | 40341 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40342 | .{ .@"0:", .p_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40343 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 40344 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 40345 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40346 | } }, |
| | 40347 | }, .{ |
| | 40348 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 40349 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 40350 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, |
| | 40351 | .patterns = &.{ |
| | 40352 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40353 | }, |
| | 40354 | .extra_temps = .{ |
| | 40355 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40356 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| | 40357 | .unused, |
| | 40358 | .unused, |
| | 40359 | .unused, |
| | 40360 | .unused, |
| | 40361 | .unused, |
| | 40362 | .unused, |
| | 40363 | .unused, |
| | 40364 | }, |
| | 40365 | .dst_temps = .{.mem}, |
| | 40366 | .clobbers = .{ .eflags = true }, |
| | 40367 | .each = .{ .once = &.{ |
| | 40368 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40369 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40370 | .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 40371 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 40372 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40373 | } }, |
| | 40374 | }, .{ |
| | 40375 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 40376 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, |
| | 40377 | .patterns = &.{ |
| | 40378 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40379 | }, |
| | 40380 | .extra_temps = .{ |
| | 40381 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40382 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| | 40383 | .unused, |
| | 40384 | .unused, |
| | 40385 | .unused, |
| | 40386 | .unused, |
| | 40387 | .unused, |
| | 40388 | .unused, |
| | 40389 | .unused, |
| | 40390 | }, |
| | 40391 | .dst_temps = .{.mem}, |
| | 40392 | .clobbers = .{ .eflags = true }, |
| | 40393 | .each = .{ .once = &.{ |
| | 40394 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40395 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40396 | .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 40397 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 40398 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 40399 | } }, |
| | 40400 | }, .{ |
| | 40401 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 40402 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 40403 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, |
| | 40404 | .patterns = &.{ |
| | 40405 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40406 | }, |
| | 40407 | .extra_temps = .{ |
| | 40408 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40409 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 40410 | .unused, |
| | 40411 | .unused, |
| | 40412 | .unused, |
| | 40413 | .unused, |
| | 40414 | .unused, |
| | 40415 | .unused, |
| | 40416 | .unused, |
| | 40417 | }, |
| | 40418 | .dst_temps = .{.mem}, |
| | 40419 | .clobbers = .{ .eflags = true }, |
| | 40420 | .each = .{ .once = &.{ |
| | 40421 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40422 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40423 | .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 40424 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 40425 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40426 | } }, |
| | 40427 | }, .{ |
| | 40428 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 40429 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, |
| | 40430 | .patterns = &.{ |
| | 40431 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40432 | }, |
| | 40433 | .extra_temps = .{ |
| | 40434 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40435 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 40436 | .unused, |
| | 40437 | .unused, |
| | 40438 | .unused, |
| | 40439 | .unused, |
| | 40440 | .unused, |
| | 40441 | .unused, |
| | 40442 | .unused, |
| | 40443 | }, |
| | 40444 | .dst_temps = .{.mem}, |
| | 40445 | .clobbers = .{ .eflags = true }, |
| | 40446 | .each = .{ .once = &.{ |
| | 40447 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40448 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40449 | .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 40450 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 40451 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 40452 | } }, |
| | 40453 | }, .{ |
| | 40454 | .required_features = .{ .avx, null, null, null }, |
| | 40455 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40456 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| | 40457 | .patterns = &.{ |
| | 40458 | .{ .src = .{ .mem, .none, .none } }, |
| | 40459 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40460 | }, |
| | 40461 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40462 | .each = .{ .once = &.{ |
| | 40463 | .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ }, |
| | 40464 | } }, |
| | 40465 | }, .{ |
| | 40466 | .required_features = .{ .avx, null, null, null }, |
| | 40467 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40468 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, |
| | 40469 | .patterns = &.{ |
| | 40470 | .{ .src = .{ .mem, .none, .none } }, |
| | 40471 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40472 | }, |
| | 40473 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40474 | .each = .{ .once = &.{ |
| | 40475 | .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ }, |
| | 40476 | } }, |
| | 40477 | }, .{ |
| | 40478 | .required_features = .{ .sse4_1, null, null, null }, |
| | 40479 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40480 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| | 40481 | .patterns = &.{ |
| | 40482 | .{ .src = .{ .mem, .none, .none } }, |
| | 40483 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40484 | }, |
| | 40485 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40486 | .each = .{ .once = &.{ |
| | 40487 | .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ }, |
| | 40488 | } }, |
| | 40489 | }, .{ |
| | 40490 | .required_features = .{ .sse4_1, null, null, null }, |
| | 40491 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40492 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, |
| | 40493 | .patterns = &.{ |
| | 40494 | .{ .src = .{ .mem, .none, .none } }, |
| | 40495 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40496 | }, |
| | 40497 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40498 | .each = .{ .once = &.{ |
| | 40499 | .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ }, |
| | 40500 | } }, |
| | 40501 | }, .{ |
| | 40502 | .required_features = .{ .sse2, null, null, null }, |
| | 40503 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40504 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| | 40505 | .patterns = &.{ |
| | 40506 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 40507 | }, |
| | 40508 | .extra_temps = .{ |
| | 40509 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 40510 | .unused, |
| | 40511 | .unused, |
| | 40512 | .unused, |
| | 40513 | .unused, |
| | 40514 | .unused, |
| | 40515 | .unused, |
| | 40516 | .unused, |
| | 40517 | .unused, |
| | 40518 | }, |
| | 40519 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 40520 | .each = .{ .once = &.{ |
| | 40521 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 40522 | .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ }, |
| | 40523 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, |
| | 40524 | .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ }, |
| | 40525 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, |
| | 40526 | } }, |
| | 40527 | }, .{ |
| | 40528 | .required_features = .{ .sse2, null, null, null }, |
| | 40529 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40530 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, |
| | 40531 | .patterns = &.{ |
| | 40532 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 40533 | }, |
| | 40534 | .extra_temps = .{ |
| | 40535 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 40536 | .unused, |
| | 40537 | .unused, |
| | 40538 | .unused, |
| | 40539 | .unused, |
| | 40540 | .unused, |
| | 40541 | .unused, |
| | 40542 | .unused, |
| | 40543 | .unused, |
| | 40544 | }, |
| | 40545 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 40546 | .each = .{ .once = &.{ |
| | 40547 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 40548 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, |
| | 40549 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, |
| | 40550 | } }, |
| | 40551 | }, .{ |
| | 40552 | .required_features = .{ .avx2, null, null, null }, |
| | 40553 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40554 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }}, |
| | 40555 | .patterns = &.{ |
| | 40556 | .{ .src = .{ .mem, .none, .none } }, |
| | 40557 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40558 | }, |
| | 40559 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40560 | .each = .{ .once = &.{ |
| | 40561 | .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ }, |
| | 40562 | } }, |
| | 40563 | }, .{ |
| | 40564 | .required_features = .{ .avx2, null, null, null }, |
| | 40565 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40566 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }}, |
| | 40567 | .patterns = &.{ |
| | 40568 | .{ .src = .{ .mem, .none, .none } }, |
| | 40569 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40570 | }, |
| | 40571 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40572 | .each = .{ .once = &.{ |
| | 40573 | .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ }, |
| | 40574 | } }, |
| | 40575 | }, .{ |
| | 40576 | .required_features = .{ .avx2, null, null, null }, |
| | 40577 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40578 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }}, |
| | 40579 | .patterns = &.{ |
| | 40580 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40581 | }, |
| | 40582 | .extra_temps = .{ |
| | 40583 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40584 | .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, |
| | 40585 | .unused, |
| | 40586 | .unused, |
| | 40587 | .unused, |
| | 40588 | .unused, |
| | 40589 | .unused, |
| | 40590 | .unused, |
| | 40591 | .unused, |
| | 40592 | }, |
| | 40593 | .dst_temps = .{.mem}, |
| | 40594 | .clobbers = .{ .eflags = true }, |
| | 40595 | .each = .{ .once = &.{ |
| | 40596 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40597 | .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40598 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 40599 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 40600 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40601 | } }, |
| | 40602 | }, .{ |
| | 40603 | .required_features = .{ .avx2, null, null, null }, |
| | 40604 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| | 40605 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }}, |
| | 40606 | .patterns = &.{ |
| | 40607 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40608 | }, |
| | 40609 | .extra_temps = .{ |
| | 40610 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40611 | .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, |
| | 40612 | .unused, |
| | 40613 | .unused, |
| | 40614 | .unused, |
| | 40615 | .unused, |
| | 40616 | .unused, |
| | 40617 | .unused, |
| | 40618 | .unused, |
| | 40619 | }, |
| | 40620 | .dst_temps = .{.mem}, |
| | 40621 | .clobbers = .{ .eflags = true }, |
| | 40622 | .each = .{ .once = &.{ |
| | 40623 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40624 | .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40625 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 40626 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 40627 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40628 | } }, |
| | 40629 | }, .{ |
| | 40630 | .required_features = .{ .avx, null, null, null }, |
| | 40631 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40632 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| | 40633 | .patterns = &.{ |
| | 40634 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40635 | }, |
| | 40636 | .extra_temps = .{ |
| | 40637 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40638 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| | 40639 | .unused, |
| | 40640 | .unused, |
| | 40641 | .unused, |
| | 40642 | .unused, |
| | 40643 | .unused, |
| | 40644 | .unused, |
| | 40645 | .unused, |
| | 40646 | }, |
| | 40647 | .dst_temps = .{.mem}, |
| | 40648 | .clobbers = .{ .eflags = true }, |
| | 40649 | .each = .{ .once = &.{ |
| | 40650 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40651 | .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40652 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 40653 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 40654 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40655 | } }, |
| | 40656 | }, .{ |
| | 40657 | .required_features = .{ .avx, null, null, null }, |
| | 40658 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40659 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }}, |
| | 40660 | .patterns = &.{ |
| | 40661 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40662 | }, |
| | 40663 | .extra_temps = .{ |
| | 40664 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40665 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 40666 | .unused, |
| | 40667 | .unused, |
| | 40668 | .unused, |
| | 40669 | .unused, |
| | 40670 | .unused, |
| | 40671 | .unused, |
| | 40672 | .unused, |
| | 40673 | }, |
| | 40674 | .dst_temps = .{.mem}, |
| | 40675 | .clobbers = .{ .eflags = true }, |
| | 40676 | .each = .{ .once = &.{ |
| | 40677 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40678 | .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40679 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 40680 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 40681 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40682 | } }, |
| | 40683 | }, .{ |
| | 40684 | .required_features = .{ .sse4_1, null, null, null }, |
| | 40685 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40686 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| | 40687 | .patterns = &.{ |
| | 40688 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40689 | }, |
| | 40690 | .extra_temps = .{ |
| | 40691 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40692 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| | 40693 | .unused, |
| | 40694 | .unused, |
| | 40695 | .unused, |
| | 40696 | .unused, |
| | 40697 | .unused, |
| | 40698 | .unused, |
| | 40699 | .unused, |
| | 40700 | }, |
| | 40701 | .dst_temps = .{.mem}, |
| | 40702 | .clobbers = .{ .eflags = true }, |
| | 40703 | .each = .{ .once = &.{ |
| | 40704 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40705 | .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40706 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 40707 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 40708 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40709 | } }, |
| | 40710 | }, .{ |
| | 40711 | .required_features = .{ .sse4_1, null, null, null }, |
| | 40712 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40713 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }}, |
| | 40714 | .patterns = &.{ |
| | 40715 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40716 | }, |
| | 40717 | .extra_temps = .{ |
| | 40718 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40719 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 40720 | .unused, |
| | 40721 | .unused, |
| | 40722 | .unused, |
| | 40723 | .unused, |
| | 40724 | .unused, |
| | 40725 | .unused, |
| | 40726 | .unused, |
| | 40727 | }, |
| | 40728 | .dst_temps = .{.mem}, |
| | 40729 | .clobbers = .{ .eflags = true }, |
| | 40730 | .each = .{ .once = &.{ |
| | 40731 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40732 | .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40733 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 40734 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 40735 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40736 | } }, |
| | 40737 | }, .{ |
| | 40738 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 40739 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 40740 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, |
| | 40741 | .patterns = &.{ |
| | 40742 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40743 | }, |
| | 40744 | .extra_temps = .{ |
| | 40745 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40746 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| | 40747 | .unused, |
| | 40748 | .unused, |
| | 40749 | .unused, |
| | 40750 | .unused, |
| | 40751 | .unused, |
| | 40752 | .unused, |
| | 40753 | .unused, |
| | 40754 | }, |
| | 40755 | .dst_temps = .{.mem}, |
| | 40756 | .clobbers = .{ .eflags = true }, |
| | 40757 | .each = .{ .once = &.{ |
| | 40758 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40759 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40760 | .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 40761 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 40762 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40763 | } }, |
| | 40764 | }, .{ |
| | 40765 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 40766 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, |
| | 40767 | .patterns = &.{ |
| | 40768 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40769 | }, |
| | 40770 | .extra_temps = .{ |
| | 40771 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40772 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| | 40773 | .unused, |
| | 40774 | .unused, |
| | 40775 | .unused, |
| | 40776 | .unused, |
| | 40777 | .unused, |
| | 40778 | .unused, |
| | 40779 | .unused, |
| | 40780 | }, |
| | 40781 | .dst_temps = .{.mem}, |
| | 40782 | .clobbers = .{ .eflags = true }, |
| | 40783 | .each = .{ .once = &.{ |
| | 40784 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40785 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40786 | .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 40787 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 40788 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 40789 | } }, |
| | 40790 | }, .{ |
| | 40791 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 40792 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 40793 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, |
| | 40794 | .patterns = &.{ |
| | 40795 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40796 | }, |
| | 40797 | .extra_temps = .{ |
| | 40798 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40799 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 40800 | .unused, |
| | 40801 | .unused, |
| | 40802 | .unused, |
| | 40803 | .unused, |
| | 40804 | .unused, |
| | 40805 | .unused, |
| | 40806 | .unused, |
| | 40807 | }, |
| | 40808 | .dst_temps = .{.mem}, |
| | 40809 | .clobbers = .{ .eflags = true }, |
| | 40810 | .each = .{ .once = &.{ |
| | 40811 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40812 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40813 | .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 40814 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 40815 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40816 | } }, |
| | 40817 | }, .{ |
| | 40818 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 40819 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, |
| | 40820 | .patterns = &.{ |
| | 40821 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40822 | }, |
| | 40823 | .extra_temps = .{ |
| | 40824 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40825 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 40826 | .unused, |
| | 40827 | .unused, |
| | 40828 | .unused, |
| | 40829 | .unused, |
| | 40830 | .unused, |
| | 40831 | .unused, |
| | 40832 | .unused, |
| | 40833 | }, |
| | 40834 | .dst_temps = .{.mem}, |
| | 40835 | .clobbers = .{ .eflags = true }, |
| | 40836 | .each = .{ .once = &.{ |
| | 40837 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40838 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40839 | .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 40840 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 40841 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 40842 | } }, |
| | 40843 | }, .{ |
| | 40844 | .required_features = .{ .avx, null, null, null }, |
| | 40845 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, |
| | 40846 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 40847 | .patterns = &.{ |
| | 40848 | .{ .src = .{ .mem, .none, .none } }, |
| | 40849 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40850 | }, |
| | 40851 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40852 | .each = .{ .once = &.{ |
| | 40853 | .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ }, |
| | 40854 | } }, |
| | 40855 | }, .{ |
| | 40856 | .required_features = .{ .avx, null, null, null }, |
| | 40857 | .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any }, |
| | 40858 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, |
| | 40859 | .patterns = &.{ |
| | 40860 | .{ .src = .{ .mem, .none, .none } }, |
| | 40861 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40862 | }, |
| | 40863 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40864 | .each = .{ .once = &.{ |
| | 40865 | .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ }, |
| | 40866 | } }, |
| | 40867 | }, .{ |
| | 40868 | .required_features = .{ .sse4_1, null, null, null }, |
| | 40869 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, |
| | 40870 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 40871 | .patterns = &.{ |
| | 40872 | .{ .src = .{ .mem, .none, .none } }, |
| | 40873 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40874 | }, |
| | 40875 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40876 | .each = .{ .once = &.{ |
| | 40877 | .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ }, |
| | 40878 | } }, |
| | 40879 | }, .{ |
| | 40880 | .required_features = .{ .sse4_1, null, null, null }, |
| | 40881 | .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any }, |
| | 40882 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, |
| | 40883 | .patterns = &.{ |
| | 40884 | .{ .src = .{ .mem, .none, .none } }, |
| | 40885 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40886 | }, |
| | 40887 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40888 | .each = .{ .once = &.{ |
| | 40889 | .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ }, |
| | 40890 | } }, |
| | 40891 | }, .{ |
| | 40892 | .required_features = .{ .sse2, null, null, null }, |
| | 40893 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, |
| | 40894 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 40895 | .patterns = &.{ |
| | 40896 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 40897 | }, |
| | 40898 | .extra_temps = .{ |
| | 40899 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 40900 | .unused, |
| | 40901 | .unused, |
| | 40902 | .unused, |
| | 40903 | .unused, |
| | 40904 | .unused, |
| | 40905 | .unused, |
| | 40906 | .unused, |
| | 40907 | .unused, |
| | 40908 | }, |
| | 40909 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 40910 | .each = .{ .once = &.{ |
| | 40911 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 40912 | .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ }, |
| | 40913 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, |
| | 40914 | .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ }, |
| | 40915 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, |
| | 40916 | .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ }, |
| | 40917 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, |
| | 40918 | } }, |
| | 40919 | }, .{ |
| | 40920 | .required_features = .{ .sse2, null, null, null }, |
| | 40921 | .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any }, |
| | 40922 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, |
| | 40923 | .patterns = &.{ |
| | 40924 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 40925 | }, |
| | 40926 | .extra_temps = .{ |
| | 40927 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 40928 | .unused, |
| | 40929 | .unused, |
| | 40930 | .unused, |
| | 40931 | .unused, |
| | 40932 | .unused, |
| | 40933 | .unused, |
| | 40934 | .unused, |
| | 40935 | .unused, |
| | 40936 | }, |
| | 40937 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 40938 | .each = .{ .once = &.{ |
| | 40939 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 40940 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, |
| | 40941 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, |
| | 40942 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, |
| | 40943 | } }, |
| | 40944 | }, .{ |
| | 40945 | .required_features = .{ .avx2, null, null, null }, |
| | 40946 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40947 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }}, |
| | 40948 | .patterns = &.{ |
| | 40949 | .{ .src = .{ .mem, .none, .none } }, |
| | 40950 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40951 | }, |
| | 40952 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40953 | .each = .{ .once = &.{ |
| | 40954 | .{ ._, .vp_q, .movsxb, .dst0y, .src0d, ._, ._ }, |
| | 40955 | } }, |
| | 40956 | }, .{ |
| | 40957 | .required_features = .{ .avx2, null, null, null }, |
| | 40958 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40959 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }}, |
| | 40960 | .patterns = &.{ |
| | 40961 | .{ .src = .{ .mem, .none, .none } }, |
| | 40962 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 40963 | }, |
| | 40964 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 40965 | .each = .{ .once = &.{ |
| | 40966 | .{ ._, .vp_q, .movzxb, .dst0y, .src0d, ._, ._ }, |
| | 40967 | } }, |
| | 40968 | }, .{ |
| | 40969 | .required_features = .{ .avx2, null, null, null }, |
| | 40970 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40971 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }}, |
| | 40972 | .patterns = &.{ |
| | 40973 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 40974 | }, |
| | 40975 | .extra_temps = .{ |
| | 40976 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 40977 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| | 40978 | .unused, |
| | 40979 | .unused, |
| | 40980 | .unused, |
| | 40981 | .unused, |
| | 40982 | .unused, |
| | 40983 | .unused, |
| | 40984 | .unused, |
| | 40985 | }, |
| | 40986 | .dst_temps = .{.mem}, |
| | 40987 | .clobbers = .{ .eflags = true }, |
| | 40988 | .each = .{ .once = &.{ |
| | 40989 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 40990 | .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 40991 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 40992 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 40993 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 40994 | } }, |
| | 40995 | }, .{ |
| | 40996 | .required_features = .{ .avx2, null, null, null }, |
| | 40997 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, |
| | 40998 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }}, |
| | 40999 | .patterns = &.{ |
| | 41000 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41001 | }, |
| | 41002 | .extra_temps = .{ |
| | 41003 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41004 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| | 41005 | .unused, |
| | 41006 | .unused, |
| | 41007 | .unused, |
| | 41008 | .unused, |
| | 41009 | .unused, |
| | 41010 | .unused, |
| | 41011 | .unused, |
| | 41012 | }, |
| | 41013 | .dst_temps = .{.mem}, |
| | 41014 | .clobbers = .{ .eflags = true }, |
| | 41015 | .each = .{ .once = &.{ |
| | 41016 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41017 | .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41018 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 41019 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 41020 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41021 | } }, |
| | 41022 | }, .{ |
| | 41023 | .required_features = .{ .avx, null, null, null }, |
| | 41024 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, |
| | 41025 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 41026 | .patterns = &.{ |
| | 41027 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41028 | }, |
| | 41029 | .extra_temps = .{ |
| | 41030 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41031 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 41032 | .unused, |
| | 41033 | .unused, |
| | 41034 | .unused, |
| | 41035 | .unused, |
| | 41036 | .unused, |
| | 41037 | .unused, |
| | 41038 | .unused, |
| | 41039 | }, |
| | 41040 | .dst_temps = .{.mem}, |
| | 41041 | .clobbers = .{ .eflags = true }, |
| | 41042 | .each = .{ .once = &.{ |
| | 41043 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41044 | .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41045 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 41046 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 41047 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41048 | } }, |
| | 41049 | }, .{ |
| | 41050 | .required_features = .{ .avx, null, null, null }, |
| | 41051 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any }, |
| | 41052 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, |
| | 41053 | .patterns = &.{ |
| | 41054 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41055 | }, |
| | 41056 | .extra_temps = .{ |
| | 41057 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41058 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 41059 | .unused, |
| | 41060 | .unused, |
| | 41061 | .unused, |
| | 41062 | .unused, |
| | 41063 | .unused, |
| | 41064 | .unused, |
| | 41065 | .unused, |
| | 41066 | }, |
| | 41067 | .dst_temps = .{.mem}, |
| | 41068 | .clobbers = .{ .eflags = true }, |
| | 41069 | .each = .{ .once = &.{ |
| | 41070 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41071 | .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41072 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 41073 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 41074 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41075 | } }, |
| | 41076 | }, .{ |
| | 41077 | .required_features = .{ .sse4_1, null, null, null }, |
| | 41078 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, |
| | 41079 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 41080 | .patterns = &.{ |
| | 41081 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41082 | }, |
| | 41083 | .extra_temps = .{ |
| | 41084 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41085 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 41086 | .unused, |
| | 41087 | .unused, |
| | 41088 | .unused, |
| | 41089 | .unused, |
| | 41090 | .unused, |
| | 41091 | .unused, |
| | 41092 | .unused, |
| | 41093 | }, |
| | 41094 | .dst_temps = .{.mem}, |
| | 41095 | .clobbers = .{ .eflags = true }, |
| | 41096 | .each = .{ .once = &.{ |
| | 41097 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41098 | .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41099 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 41100 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 41101 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41102 | } }, |
| | 41103 | }, .{ |
| | 41104 | .required_features = .{ .sse4_1, null, null, null }, |
| | 41105 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any }, |
| | 41106 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, |
| | 41107 | .patterns = &.{ |
| | 41108 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41109 | }, |
| | 41110 | .extra_temps = .{ |
| | 41111 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41112 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 41113 | .unused, |
| | 41114 | .unused, |
| | 41115 | .unused, |
| | 41116 | .unused, |
| | 41117 | .unused, |
| | 41118 | .unused, |
| | 41119 | .unused, |
| | 41120 | }, |
| | 41121 | .dst_temps = .{.mem}, |
| | 41122 | .clobbers = .{ .eflags = true }, |
| | 41123 | .each = .{ .once = &.{ |
| | 41124 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41125 | .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41126 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 41127 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 41128 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41129 | } }, |
| | 41130 | }, .{ |
| | 41131 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| | 41132 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41133 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, |
| | 41134 | .patterns = &.{ |
| | 41135 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41136 | }, |
| | 41137 | .extra_temps = .{ |
| | 41138 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41139 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| | 41140 | .unused, |
| | 41141 | .unused, |
| | 41142 | .unused, |
| | 41143 | .unused, |
| | 41144 | .unused, |
| | 41145 | .unused, |
| | 41146 | .unused, |
| | 41147 | }, |
| | 41148 | .dst_temps = .{.mem}, |
| | 41149 | .clobbers = .{ .eflags = true }, |
| | 41150 | .each = .{ .once = &.{ |
| | 41151 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41152 | .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41153 | .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 41154 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 41155 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41156 | } }, |
| | 41157 | }, .{ |
| | 41158 | .required_features = .{ .@"64bit", null, null, null }, |
| | 41159 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41160 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, |
| | 41161 | .patterns = &.{ |
| | 41162 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41163 | }, |
| | 41164 | .extra_temps = .{ |
| | 41165 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41166 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| | 41167 | .unused, |
| | 41168 | .unused, |
| | 41169 | .unused, |
| | 41170 | .unused, |
| | 41171 | .unused, |
| | 41172 | .unused, |
| | 41173 | .unused, |
| | 41174 | }, |
| | 41175 | .dst_temps = .{.mem}, |
| | 41176 | .clobbers = .{ .eflags = true }, |
| | 41177 | .each = .{ .once = &.{ |
| | 41178 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41179 | .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41180 | .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 41181 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 41182 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 41183 | } }, |
| | 41184 | }, .{ |
| | 41185 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 41186 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41187 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, |
| | 41188 | .patterns = &.{ |
| | 41189 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41190 | }, |
| | 41191 | .extra_temps = .{ |
| | 41192 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41193 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 41194 | .unused, |
| | 41195 | .unused, |
| | 41196 | .unused, |
| | 41197 | .unused, |
| | 41198 | .unused, |
| | 41199 | .unused, |
| | 41200 | .unused, |
| | 41201 | }, |
| | 41202 | .dst_temps = .{.mem}, |
| | 41203 | .clobbers = .{ .eflags = true }, |
| | 41204 | .each = .{ .once = &.{ |
| | 41205 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41206 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41207 | .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 41208 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 41209 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41210 | } }, |
| | 41211 | }, .{ |
| | 41212 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41213 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, |
| | 41214 | .patterns = &.{ |
| | 41215 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41216 | }, |
| | 41217 | .extra_temps = .{ |
| | 41218 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41219 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 41220 | .unused, |
| | 41221 | .unused, |
| | 41222 | .unused, |
| | 41223 | .unused, |
| | 41224 | .unused, |
| | 41225 | .unused, |
| | 41226 | .unused, |
| | 41227 | }, |
| | 41228 | .dst_temps = .{.mem}, |
| | 41229 | .clobbers = .{ .eflags = true }, |
| | 41230 | .each = .{ .once = &.{ |
| | 41231 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41232 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41233 | .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 41234 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 41235 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 41236 | } }, |
| | 41237 | }, .{ |
| | 41238 | .required_features = .{ .avx, null, null, null }, |
| | 41239 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41240 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, |
| | 41241 | .patterns = &.{ |
| | 41242 | .{ .src = .{ .mem, .none, .none } }, |
| | 41243 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41244 | }, |
| | 41245 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41246 | .each = .{ .once = &.{ |
| | 41247 | .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ }, |
| | 41248 | .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ }, |
| | 41249 | } }, |
| | 41250 | }, .{ |
| | 41251 | .required_features = .{ .avx, null, null, null }, |
| | 41252 | .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41253 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, |
| | 41254 | .patterns = &.{ |
| | 41255 | .{ .src = .{ .mem, .none, .none } }, |
| | 41256 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41257 | }, |
| | 41258 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41259 | .each = .{ .once = &.{ |
| | 41260 | .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ }, |
| | 41261 | .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ }, |
| | 41262 | } }, |
| | 41263 | }, .{ |
| | 41264 | .required_features = .{ .sse4_1, null, null, null }, |
| | 41265 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41266 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, |
| | 41267 | .patterns = &.{ |
| | 41268 | .{ .src = .{ .mem, .none, .none } }, |
| | 41269 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41270 | }, |
| | 41271 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41272 | .each = .{ .once = &.{ |
| | 41273 | .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ }, |
| | 41274 | .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ }, |
| | 41275 | } }, |
| | 41276 | }, .{ |
| | 41277 | .required_features = .{ .sse4_1, null, null, null }, |
| | 41278 | .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41279 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, |
| | 41280 | .patterns = &.{ |
| | 41281 | .{ .src = .{ .mem, .none, .none } }, |
| | 41282 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41283 | }, |
| | 41284 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41285 | .each = .{ .once = &.{ |
| | 41286 | .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ }, |
| | 41287 | .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ }, |
| | 41288 | } }, |
| | 41289 | }, .{ |
| | 41290 | .required_features = .{ .sse2, null, null, null }, |
| | 41291 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41292 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, |
| | 41293 | .patterns = &.{ |
| | 41294 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 41295 | }, |
| | 41296 | .extra_temps = .{ |
| | 41297 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 41298 | .unused, |
| | 41299 | .unused, |
| | 41300 | .unused, |
| | 41301 | .unused, |
| | 41302 | .unused, |
| | 41303 | .unused, |
| | 41304 | .unused, |
| | 41305 | .unused, |
| | 41306 | }, |
| | 41307 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 41308 | .each = .{ .once = &.{ |
| | 41309 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 41310 | .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ }, |
| | 41311 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, |
| | 41312 | .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ }, |
| | 41313 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, |
| | 41314 | .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ }, |
| | 41315 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, |
| | 41316 | .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ }, |
| | 41317 | .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ }, |
| | 41318 | } }, |
| | 41319 | }, .{ |
| | 41320 | .required_features = .{ .sse2, null, null, null }, |
| | 41321 | .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41322 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, |
| | 41323 | .patterns = &.{ |
| | 41324 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 41325 | }, |
| | 41326 | .extra_temps = .{ |
| | 41327 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 41328 | .unused, |
| | 41329 | .unused, |
| | 41330 | .unused, |
| | 41331 | .unused, |
| | 41332 | .unused, |
| | 41333 | .unused, |
| | 41334 | .unused, |
| | 41335 | .unused, |
| | 41336 | }, |
| | 41337 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 41338 | .each = .{ .once = &.{ |
| | 41339 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 41340 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, |
| | 41341 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, |
| | 41342 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, |
| | 41343 | .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ }, |
| | 41344 | } }, |
| | 41345 | }, .{ |
| | 41346 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| | 41347 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41348 | .dst_constraints = .{.any_scalar_signed_int}, |
| | 41349 | .patterns = &.{ |
| | 41350 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41351 | }, |
| | 41352 | .extra_temps = .{ |
| | 41353 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41354 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 41355 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| | 41356 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 41357 | .unused, |
| | 41358 | .unused, |
| | 41359 | .unused, |
| | 41360 | .unused, |
| | 41361 | .unused, |
| | 41362 | }, |
| | 41363 | .dst_temps = .{.mem}, |
| | 41364 | .clobbers = .{ .eflags = true }, |
| | 41365 | .each = .{ .once = &.{ |
| | 41366 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41367 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, |
| | 41368 | .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41369 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 41370 | .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ }, |
| | 41371 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 41372 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 41373 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 41374 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41375 | } }, |
| | 41376 | }, .{ |
| | 41377 | .required_features = .{ .@"64bit", null, null, null }, |
| | 41378 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41379 | .dst_constraints = .{.any_scalar_signed_int}, |
| | 41380 | .patterns = &.{ |
| | 41381 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41382 | }, |
| | 41383 | .extra_temps = .{ |
| | 41384 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41385 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 41386 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| | 41387 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 41388 | .unused, |
| | 41389 | .unused, |
| | 41390 | .unused, |
| | 41391 | .unused, |
| | 41392 | .unused, |
| | 41393 | }, |
| | 41394 | .dst_temps = .{.mem}, |
| | 41395 | .clobbers = .{ .eflags = true }, |
| | 41396 | .each = .{ .once = &.{ |
| | 41397 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41398 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, |
| | 41399 | .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41400 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 41401 | .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ }, |
| | 41402 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 41403 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 41404 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 41405 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 41406 | } }, |
| | 41407 | }, .{ |
| | 41408 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| | 41409 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41410 | .dst_constraints = .{.any_scalar_int}, |
| | 41411 | .patterns = &.{ |
| | 41412 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41413 | }, |
| | 41414 | .extra_temps = .{ |
| | 41415 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41416 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 41417 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| | 41418 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 41419 | .unused, |
| | 41420 | .unused, |
| | 41421 | .unused, |
| | 41422 | .unused, |
| | 41423 | .unused, |
| | 41424 | }, |
| | 41425 | .dst_temps = .{.mem}, |
| | 41426 | .clobbers = .{ .eflags = true }, |
| | 41427 | .each = .{ .once = &.{ |
| | 41428 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41429 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, |
| | 41430 | .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41431 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 41432 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 41433 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 41434 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 41435 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 41436 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41437 | } }, |
| | 41438 | }, .{ |
| | 41439 | .required_features = .{ .@"64bit", null, null, null }, |
| | 41440 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 41441 | .dst_constraints = .{.any_scalar_int}, |
| | 41442 | .patterns = &.{ |
| | 41443 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41444 | }, |
| | 41445 | .extra_temps = .{ |
| | 41446 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41447 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 41448 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| | 41449 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 41450 | .unused, |
| | 41451 | .unused, |
| | 41452 | .unused, |
| | 41453 | .unused, |
| | 41454 | .unused, |
| | 41455 | }, |
| | 41456 | .dst_temps = .{.mem}, |
| | 41457 | .clobbers = .{ .eflags = true }, |
| | 41458 | .each = .{ .once = &.{ |
| | 41459 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41460 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, |
| | 41461 | .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41462 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 41463 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 41464 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 41465 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 41466 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 41467 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 41468 | } }, |
| | 41469 | }, .{ |
| | 41470 | .required_features = .{ .avx, null, null, null }, |
| | 41471 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41472 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| | 41473 | .patterns = &.{ |
| | 41474 | .{ .src = .{ .mem, .none, .none } }, |
| | 41475 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41476 | }, |
| | 41477 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41478 | .each = .{ .once = &.{ |
| | 41479 | .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ }, |
| | 41480 | } }, |
| | 41481 | }, .{ |
| | 41482 | .required_features = .{ .avx, null, null, null }, |
| | 41483 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41484 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, |
| | 41485 | .patterns = &.{ |
| | 41486 | .{ .src = .{ .mem, .none, .none } }, |
| | 41487 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41488 | }, |
| | 41489 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41490 | .each = .{ .once = &.{ |
| | 41491 | .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ }, |
| | 41492 | } }, |
| | 41493 | }, .{ |
| | 41494 | .required_features = .{ .sse4_1, null, null, null }, |
| | 41495 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41496 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| | 41497 | .patterns = &.{ |
| | 41498 | .{ .src = .{ .mem, .none, .none } }, |
| | 41499 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41500 | }, |
| | 41501 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41502 | .each = .{ .once = &.{ |
| | 41503 | .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ }, |
| | 41504 | } }, |
| | 41505 | }, .{ |
| | 41506 | .required_features = .{ .sse4_1, null, null, null }, |
| | 41507 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41508 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, |
| | 41509 | .patterns = &.{ |
| | 41510 | .{ .src = .{ .mem, .none, .none } }, |
| | 41511 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41512 | }, |
| | 41513 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41514 | .each = .{ .once = &.{ |
| | 41515 | .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ }, |
| | 41516 | } }, |
| | 41517 | }, .{ |
| | 41518 | .required_features = .{ .sse2, null, null, null }, |
| | 41519 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41520 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| | 41521 | .patterns = &.{ |
| | 41522 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 41523 | }, |
| | 41524 | .extra_temps = .{ |
| | 41525 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, |
| | 41526 | .unused, |
| | 41527 | .unused, |
| | 41528 | .unused, |
| | 41529 | .unused, |
| | 41530 | .unused, |
| | 41531 | .unused, |
| | 41532 | .unused, |
| | 41533 | .unused, |
| | 41534 | }, |
| | 41535 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 41536 | .each = .{ .once = &.{ |
| | 41537 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 41538 | .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ }, |
| | 41539 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, |
| | 41540 | } }, |
| | 41541 | }, .{ |
| | 41542 | .required_features = .{ .sse2, null, null, null }, |
| | 41543 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41544 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, |
| | 41545 | .patterns = &.{ |
| | 41546 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 41547 | }, |
| | 41548 | .extra_temps = .{ |
| | 41549 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 41550 | .unused, |
| | 41551 | .unused, |
| | 41552 | .unused, |
| | 41553 | .unused, |
| | 41554 | .unused, |
| | 41555 | .unused, |
| | 41556 | .unused, |
| | 41557 | .unused, |
| | 41558 | }, |
| | 41559 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 41560 | .each = .{ .once = &.{ |
| | 41561 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 41562 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, |
| | 41563 | } }, |
| | 41564 | }, .{ |
| | 41565 | .required_features = .{ .avx2, null, null, null }, |
| | 41566 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 41567 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }}, |
| | 41568 | .patterns = &.{ |
| | 41569 | .{ .src = .{ .mem, .none, .none } }, |
| | 41570 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41571 | }, |
| | 41572 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41573 | .each = .{ .once = &.{ |
| | 41574 | .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ }, |
| | 41575 | } }, |
| | 41576 | }, .{ |
| | 41577 | .required_features = .{ .avx2, null, null, null }, |
| | 41578 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 41579 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }}, |
| | 41580 | .patterns = &.{ |
| | 41581 | .{ .src = .{ .mem, .none, .none } }, |
| | 41582 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41583 | }, |
| | 41584 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41585 | .each = .{ .once = &.{ |
| | 41586 | .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ }, |
| | 41587 | } }, |
| | 41588 | }, .{ |
| | 41589 | .required_features = .{ .avx2, null, null, null }, |
| | 41590 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 41591 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }}, |
| | 41592 | .patterns = &.{ |
| | 41593 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41594 | }, |
| | 41595 | .extra_temps = .{ |
| | 41596 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41597 | .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, |
| | 41598 | .unused, |
| | 41599 | .unused, |
| | 41600 | .unused, |
| | 41601 | .unused, |
| | 41602 | .unused, |
| | 41603 | .unused, |
| | 41604 | .unused, |
| | 41605 | }, |
| | 41606 | .dst_temps = .{.mem}, |
| | 41607 | .clobbers = .{ .eflags = true }, |
| | 41608 | .each = .{ .once = &.{ |
| | 41609 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41610 | .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41611 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 41612 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 41613 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41614 | } }, |
| | 41615 | }, .{ |
| | 41616 | .required_features = .{ .avx2, null, null, null }, |
| | 41617 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 41618 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }}, |
| | 41619 | .patterns = &.{ |
| | 41620 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41621 | }, |
| | 41622 | .extra_temps = .{ |
| | 41623 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41624 | .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, |
| | 41625 | .unused, |
| | 41626 | .unused, |
| | 41627 | .unused, |
| | 41628 | .unused, |
| | 41629 | .unused, |
| | 41630 | .unused, |
| | 41631 | .unused, |
| | 41632 | }, |
| | 41633 | .dst_temps = .{.mem}, |
| | 41634 | .clobbers = .{ .eflags = true }, |
| | 41635 | .each = .{ .once = &.{ |
| | 41636 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41637 | .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41638 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 41639 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 41640 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41641 | } }, |
| | 41642 | }, .{ |
| | 41643 | .required_features = .{ .avx, null, null, null }, |
| | 41644 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41645 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| | 41646 | .patterns = &.{ |
| | 41647 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41648 | }, |
| | 41649 | .extra_temps = .{ |
| | 41650 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41651 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| | 41652 | .unused, |
| | 41653 | .unused, |
| | 41654 | .unused, |
| | 41655 | .unused, |
| | 41656 | .unused, |
| | 41657 | .unused, |
| | 41658 | .unused, |
| | 41659 | }, |
| | 41660 | .dst_temps = .{.mem}, |
| | 41661 | .clobbers = .{ .eflags = true }, |
| | 41662 | .each = .{ .once = &.{ |
| | 41663 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41664 | .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41665 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 41666 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 41667 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41668 | } }, |
| | 41669 | }, .{ |
| | 41670 | .required_features = .{ .avx, null, null, null }, |
| | 41671 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41672 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }}, |
| | 41673 | .patterns = &.{ |
| | 41674 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41675 | }, |
| | 41676 | .extra_temps = .{ |
| | 41677 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41678 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 41679 | .unused, |
| | 41680 | .unused, |
| | 41681 | .unused, |
| | 41682 | .unused, |
| | 41683 | .unused, |
| | 41684 | .unused, |
| | 41685 | .unused, |
| | 41686 | }, |
| | 41687 | .dst_temps = .{.mem}, |
| | 41688 | .clobbers = .{ .eflags = true }, |
| | 41689 | .each = .{ .once = &.{ |
| | 41690 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41691 | .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41692 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 41693 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 41694 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41695 | } }, |
| | 41696 | }, .{ |
| | 41697 | .required_features = .{ .sse4_1, null, null, null }, |
| | 41698 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41699 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| | 41700 | .patterns = &.{ |
| | 41701 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41702 | }, |
| | 41703 | .extra_temps = .{ |
| | 41704 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41705 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| | 41706 | .unused, |
| | 41707 | .unused, |
| | 41708 | .unused, |
| | 41709 | .unused, |
| | 41710 | .unused, |
| | 41711 | .unused, |
| | 41712 | .unused, |
| | 41713 | }, |
| | 41714 | .dst_temps = .{.mem}, |
| | 41715 | .clobbers = .{ .eflags = true }, |
| | 41716 | .each = .{ .once = &.{ |
| | 41717 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41718 | .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41719 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 41720 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 41721 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41722 | } }, |
| | 41723 | }, .{ |
| | 41724 | .required_features = .{ .sse4_1, null, null, null }, |
| | 41725 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41726 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }}, |
| | 41727 | .patterns = &.{ |
| | 41728 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41729 | }, |
| | 41730 | .extra_temps = .{ |
| | 41731 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41732 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 41733 | .unused, |
| | 41734 | .unused, |
| | 41735 | .unused, |
| | 41736 | .unused, |
| | 41737 | .unused, |
| | 41738 | .unused, |
| | 41739 | .unused, |
| | 41740 | }, |
| | 41741 | .dst_temps = .{.mem}, |
| | 41742 | .clobbers = .{ .eflags = true }, |
| | 41743 | .each = .{ .once = &.{ |
| | 41744 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41745 | .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41746 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 41747 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 41748 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41749 | } }, |
| | 41750 | }, .{ |
| | 41751 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 41752 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, |
| | 41753 | .patterns = &.{ |
| | 41754 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41755 | }, |
| | 41756 | .extra_temps = .{ |
| | 41757 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41758 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| | 41759 | .unused, |
| | 41760 | .unused, |
| | 41761 | .unused, |
| | 41762 | .unused, |
| | 41763 | .unused, |
| | 41764 | .unused, |
| | 41765 | .unused, |
| | 41766 | }, |
| | 41767 | .dst_temps = .{.mem}, |
| | 41768 | .clobbers = .{ .eflags = true }, |
| | 41769 | .each = .{ .once = &.{ |
| | 41770 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41771 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41772 | .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 41773 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 41774 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41775 | } }, |
| | 41776 | }, .{ |
| | 41777 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 41778 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, |
| | 41779 | .patterns = &.{ |
| | 41780 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41781 | }, |
| | 41782 | .extra_temps = .{ |
| | 41783 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41784 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 41785 | .unused, |
| | 41786 | .unused, |
| | 41787 | .unused, |
| | 41788 | .unused, |
| | 41789 | .unused, |
| | 41790 | .unused, |
| | 41791 | .unused, |
| | 41792 | }, |
| | 41793 | .dst_temps = .{.mem}, |
| | 41794 | .clobbers = .{ .eflags = true }, |
| | 41795 | .each = .{ .once = &.{ |
| | 41796 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41797 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41798 | .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 41799 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 41800 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41801 | } }, |
| | 41802 | }, .{ |
| | 41803 | .required_features = .{ .avx, null, null, null }, |
| | 41804 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, |
| | 41805 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 41806 | .patterns = &.{ |
| | 41807 | .{ .src = .{ .mem, .none, .none } }, |
| | 41808 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41809 | }, |
| | 41810 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41811 | .each = .{ .once = &.{ |
| | 41812 | .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ }, |
| | 41813 | } }, |
| | 41814 | }, .{ |
| | 41815 | .required_features = .{ .avx, null, null, null }, |
| | 41816 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any }, |
| | 41817 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, |
| | 41818 | .patterns = &.{ |
| | 41819 | .{ .src = .{ .mem, .none, .none } }, |
| | 41820 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41821 | }, |
| | 41822 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41823 | .each = .{ .once = &.{ |
| | 41824 | .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ }, |
| | 41825 | } }, |
| | 41826 | }, .{ |
| | 41827 | .required_features = .{ .sse4_1, null, null, null }, |
| | 41828 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, |
| | 41829 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 41830 | .patterns = &.{ |
| | 41831 | .{ .src = .{ .mem, .none, .none } }, |
| | 41832 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41833 | }, |
| | 41834 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41835 | .each = .{ .once = &.{ |
| | 41836 | .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ }, |
| | 41837 | } }, |
| | 41838 | }, .{ |
| | 41839 | .required_features = .{ .sse4_1, null, null, null }, |
| | 41840 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any }, |
| | 41841 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, |
| | 41842 | .patterns = &.{ |
| | 41843 | .{ .src = .{ .mem, .none, .none } }, |
| | 41844 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41845 | }, |
| | 41846 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41847 | .each = .{ .once = &.{ |
| | 41848 | .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ }, |
| | 41849 | } }, |
| | 41850 | }, .{ |
| | 41851 | .required_features = .{ .sse2, null, null, null }, |
| | 41852 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, |
| | 41853 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 41854 | .patterns = &.{ |
| | 41855 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 41856 | }, |
| | 41857 | .extra_temps = .{ |
| | 41858 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, |
| | 41859 | .unused, |
| | 41860 | .unused, |
| | 41861 | .unused, |
| | 41862 | .unused, |
| | 41863 | .unused, |
| | 41864 | .unused, |
| | 41865 | .unused, |
| | 41866 | .unused, |
| | 41867 | }, |
| | 41868 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 41869 | .each = .{ .once = &.{ |
| | 41870 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 41871 | .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ }, |
| | 41872 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, |
| | 41873 | .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ }, |
| | 41874 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, |
| | 41875 | } }, |
| | 41876 | }, .{ |
| | 41877 | .required_features = .{ .sse2, null, null, null }, |
| | 41878 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any }, |
| | 41879 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, |
| | 41880 | .patterns = &.{ |
| | 41881 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 41882 | }, |
| | 41883 | .extra_temps = .{ |
| | 41884 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 41885 | .unused, |
| | 41886 | .unused, |
| | 41887 | .unused, |
| | 41888 | .unused, |
| | 41889 | .unused, |
| | 41890 | .unused, |
| | 41891 | .unused, |
| | 41892 | .unused, |
| | 41893 | }, |
| | 41894 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 41895 | .each = .{ .once = &.{ |
| | 41896 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 41897 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, |
| | 41898 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, |
| | 41899 | } }, |
| | 41900 | }, .{ |
| | 41901 | .required_features = .{ .avx2, null, null, null }, |
| | 41902 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41903 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }}, |
| | 41904 | .patterns = &.{ |
| | 41905 | .{ .src = .{ .mem, .none, .none } }, |
| | 41906 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41907 | }, |
| | 41908 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41909 | .each = .{ .once = &.{ |
| | 41910 | .{ ._, .vp_q, .movsxw, .dst0y, .src0q, ._, ._ }, |
| | 41911 | } }, |
| | 41912 | }, .{ |
| | 41913 | .required_features = .{ .avx2, null, null, null }, |
| | 41914 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41915 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }}, |
| | 41916 | .patterns = &.{ |
| | 41917 | .{ .src = .{ .mem, .none, .none } }, |
| | 41918 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 41919 | }, |
| | 41920 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 41921 | .each = .{ .once = &.{ |
| | 41922 | .{ ._, .vp_q, .movzxw, .dst0y, .src0q, ._, ._ }, |
| | 41923 | } }, |
| | 41924 | }, .{ |
| | 41925 | .required_features = .{ .avx2, null, null, null }, |
| | 41926 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41927 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }}, |
| | 41928 | .patterns = &.{ |
| | 41929 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41930 | }, |
| | 41931 | .extra_temps = .{ |
| | 41932 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41933 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| | 41934 | .unused, |
| | 41935 | .unused, |
| | 41936 | .unused, |
| | 41937 | .unused, |
| | 41938 | .unused, |
| | 41939 | .unused, |
| | 41940 | .unused, |
| | 41941 | }, |
| | 41942 | .dst_temps = .{.mem}, |
| | 41943 | .clobbers = .{ .eflags = true }, |
| | 41944 | .each = .{ .once = &.{ |
| | 41945 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41946 | .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41947 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 41948 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 41949 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41950 | } }, |
| | 41951 | }, .{ |
| | 41952 | .required_features = .{ .avx2, null, null, null }, |
| | 41953 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| | 41954 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }}, |
| | 41955 | .patterns = &.{ |
| | 41956 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41957 | }, |
| | 41958 | .extra_temps = .{ |
| | 41959 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41960 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| | 41961 | .unused, |
| | 41962 | .unused, |
| | 41963 | .unused, |
| | 41964 | .unused, |
| | 41965 | .unused, |
| | 41966 | .unused, |
| | 41967 | .unused, |
| | 41968 | }, |
| | 41969 | .dst_temps = .{.mem}, |
| | 41970 | .clobbers = .{ .eflags = true }, |
| | 41971 | .each = .{ .once = &.{ |
| | 41972 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 41973 | .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 41974 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 41975 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 41976 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 41977 | } }, |
| | 41978 | }, .{ |
| | 41979 | .required_features = .{ .avx, null, null, null }, |
| | 41980 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, |
| | 41981 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 41982 | .patterns = &.{ |
| | 41983 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 41984 | }, |
| | 41985 | .extra_temps = .{ |
| | 41986 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 41987 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 41988 | .unused, |
| | 41989 | .unused, |
| | 41990 | .unused, |
| | 41991 | .unused, |
| | 41992 | .unused, |
| | 41993 | .unused, |
| | 41994 | .unused, |
| | 41995 | }, |
| | 41996 | .dst_temps = .{.mem}, |
| | 41997 | .clobbers = .{ .eflags = true }, |
| | 41998 | .each = .{ .once = &.{ |
| | 41999 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 42000 | .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 42001 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 42002 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 42003 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 42004 | } }, |
| | 42005 | }, .{ |
| | 42006 | .required_features = .{ .avx, null, null, null }, |
| | 42007 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any }, |
| | 42008 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, |
| | 42009 | .patterns = &.{ |
| | 42010 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 42011 | }, |
| | 42012 | .extra_temps = .{ |
| | 42013 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 42014 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 42015 | .unused, |
| | 42016 | .unused, |
| | 42017 | .unused, |
| | 42018 | .unused, |
| | 42019 | .unused, |
| | 42020 | .unused, |
| | 42021 | .unused, |
| | 42022 | }, |
| | 42023 | .dst_temps = .{.mem}, |
| | 42024 | .clobbers = .{ .eflags = true }, |
| | 42025 | .each = .{ .once = &.{ |
| | 42026 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 42027 | .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 42028 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 42029 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 42030 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 42031 | } }, |
| | 42032 | }, .{ |
| | 42033 | .required_features = .{ .sse4_1, null, null, null }, |
| | 42034 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, |
| | 42035 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 42036 | .patterns = &.{ |
| | 42037 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 42038 | }, |
| | 42039 | .extra_temps = .{ |
| | 42040 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 42041 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 42042 | .unused, |
| | 42043 | .unused, |
| | 42044 | .unused, |
| | 42045 | .unused, |
| | 42046 | .unused, |
| | 42047 | .unused, |
| | 42048 | .unused, |
| | 42049 | }, |
| | 42050 | .dst_temps = .{.mem}, |
| | 42051 | .clobbers = .{ .eflags = true }, |
| | 42052 | .each = .{ .once = &.{ |
| | 42053 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 42054 | .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 42055 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 42056 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 42057 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 21710 | } }, | 42058 | } }, |
| 21711 | }); | 42059 | }, .{ |
| 21712 | }, | 42060 | .required_features = .{ .sse4_1, null, null, null }, |
| 21713 | .dbg_empty_stmt => if (cg.debug_output != .none) { | 42061 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any }, |
| 21714 | if (cg.mir_instructions.len > 0) { | 42062 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, |
| 21715 | const prev_mir_op = &cg.mir_instructions.items(.ops)[cg.mir_instructions.len - 1]; | 42063 | .patterns = &.{ |
| 21716 | if (prev_mir_op.* == .pseudo_dbg_line_line_column) | 42064 | .{ .src = .{ .to_mem, .none, .none } }, |
| 21717 | prev_mir_op.* = .pseudo_dbg_line_stmt_line_column; | | |
| 21718 | } | | |
| 21719 | try cg.asmOpOnly(.{ ._, .nop }); | | |
| 21720 | }, | | |
| 21721 | .dbg_inline_block => { | | |
| 21722 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; | | |
| 21723 | const extra = cg.air.extraData(Air.DbgInlineBlock, ty_pl.payload); | | |
| 21724 | const old_inline_func = cg.inline_func; | | |
| 21725 | defer cg.inline_func = old_inline_func; | | |
| 21726 | cg.inline_func = extra.data.func; | | |
| 21727 | if (cg.debug_output != .none) _ = try cg.addInst(.{ | | |
| 21728 | .tag = .pseudo, | | |
| 21729 | .ops = .pseudo_dbg_enter_inline_func, | | |
| 21730 | .data = .{ .func = extra.data.func }, | | |
| 21731 | }); | | |
| 21732 | try cg.lowerBlock(inst, @ptrCast(cg.air.extra[extra.end..][0..extra.data.body_len])); | | |
| 21733 | if (cg.debug_output != .none) _ = try cg.addInst(.{ | | |
| 21734 | .tag = .pseudo, | | |
| 21735 | .ops = .pseudo_dbg_leave_inline_func, | | |
| 21736 | .data = .{ .func = old_inline_func }, | | |
| 21737 | }); | | |
| 21738 | }, | | |
| 21739 | .dbg_var_ptr, | | |
| 21740 | .dbg_var_val, | | |
| 21741 | .dbg_arg_inline, | | |
| 21742 | => if (use_old) try cg.airDbgVar(inst) else if (cg.debug_output != .none) { | | |
| 21743 | const pl_op = air_datas[@intFromEnum(inst)].pl_op; | | |
| 21744 | var ops = try cg.tempsFromOperands(inst, .{pl_op.operand}); | | |
| 21745 | var mcv = ops[0].tracking(cg).short; | | |
| 21746 | switch (mcv) { | | |
| 21747 | else => {}, | | |
| 21748 | .eflags => |cc| switch (cc) { | | |
| 21749 | else => {}, | | |
| 21750 | // These values would self destruct. Maybe we make them use their | | |
| 21751 | // turing complete dwarf expression interpreters for once? | | |
| 21752 | .z_and_np, .nz_or_p => { | | |
| 21753 | try cg.spillEflagsIfOccupied(); | | |
| 21754 | mcv = ops[0].tracking(cg).short; | | |
| 21755 | }, | | |
| 21756 | }, | 42065 | }, |
| 21757 | } | 42066 | .extra_temps = .{ |
| 21758 | try cg.genLocalDebugInfo(inst, ops[0].tracking(cg).short); | 42067 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 21759 | try ops[0].die(cg); | 42068 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 21760 | }, | 42069 | .unused, |
| 21761 | .is_null_ptr => if (use_old) try cg.airIsNullPtr(inst) else { | 42070 | .unused, |
| 21762 | const un_op = air_datas[@intFromEnum(inst)].un_op; | 42071 | .unused, |
| 21763 | const opt_ty = cg.typeOf(un_op).childType(zcu); | 42072 | .unused, |
| 21764 | const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu); | 42073 | .unused, |
| 21765 | const opt_child_ty = opt_ty.optionalChild(zcu); | 42074 | .unused, |
| 21766 | const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu)); | 42075 | .unused, |
| 21767 | var ops = try cg.tempsFromOperands(inst, .{un_op}); | | |
| 21768 | if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg); | | |
| 21769 | while (try ops[0].toLea(cg)) {} | | |
| 21770 | try cg.asmMemoryImmediate( | | |
| 21771 | .{ ._, .cmp }, | | |
| 21772 | try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl) | | |
| 21773 | .byte | | |
| 21774 | else if (opt_child_ty.isSlice(zcu)) | | |
| 21775 | .qword | | |
| 21776 | else | | |
| 21777 | .fromSize(opt_child_abi_size) }), | | |
| 21778 | .u(0), | | |
| 21779 | ); | | |
| 21780 | const is_null = try cg.tempInit(.bool, .{ .eflags = .e }); | | |
| 21781 | try is_null.finish(inst, &.{un_op}, &ops, cg); | | |
| 21782 | }, | | |
| 21783 | .is_non_null_ptr => if (use_old) try cg.airIsNonNullPtr(inst) else { | | |
| 21784 | const un_op = air_datas[@intFromEnum(inst)].un_op; | | |
| 21785 | const opt_ty = cg.typeOf(un_op).childType(zcu); | | |
| 21786 | const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu); | | |
| 21787 | const opt_child_ty = opt_ty.optionalChild(zcu); | | |
| 21788 | const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu)); | | |
| 21789 | var ops = try cg.tempsFromOperands(inst, .{un_op}); | | |
| 21790 | if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg); | | |
| 21791 | while (try ops[0].toLea(cg)) {} | | |
| 21792 | try cg.asmMemoryImmediate( | | |
| 21793 | .{ ._, .cmp }, | | |
| 21794 | try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl) | | |
| 21795 | .byte | | |
| 21796 | else if (opt_child_ty.isSlice(zcu)) | | |
| 21797 | .qword | | |
| 21798 | else | | |
| 21799 | .fromSize(opt_child_abi_size) }), | | |
| 21800 | .u(0), | | |
| 21801 | ); | | |
| 21802 | const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne }); | | |
| 21803 | try is_non_null.finish(inst, &.{un_op}, &ops, cg); | | |
| 21804 | }, | | |
| 21805 | .is_err_ptr => if (use_old) try cg.airIsErrPtr(inst) else { | | |
| 21806 | const un_op = air_datas[@intFromEnum(inst)].un_op; | | |
| 21807 | const eu_ty = cg.typeOf(un_op).childType(zcu); | | |
| 21808 | const eu_err_ty = eu_ty.errorUnionSet(zcu); | | |
| 21809 | const eu_pl_ty = eu_ty.errorUnionPayload(zcu); | | |
| 21810 | const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu)); | | |
| 21811 | var ops = try cg.tempsFromOperands(inst, .{un_op}); | | |
| 21812 | try ops[0].toOffset(eu_err_off, cg); | | |
| 21813 | while (try ops[0].toLea(cg)) {} | | |
| 21814 | try cg.asmMemoryImmediate( | | |
| 21815 | .{ ._, .cmp }, | | |
| 21816 | try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }), | | |
| 21817 | .u(0), | | |
| 21818 | ); | | |
| 21819 | const is_err = try cg.tempInit(.bool, .{ .eflags = .ne }); | | |
| 21820 | try is_err.finish(inst, &.{un_op}, &ops, cg); | | |
| 21821 | }, | | |
| 21822 | .is_non_err_ptr => if (use_old) try cg.airIsNonErrPtr(inst) else { | | |
| 21823 | const un_op = air_datas[@intFromEnum(inst)].un_op; | | |
| 21824 | const eu_ty = cg.typeOf(un_op).childType(zcu); | | |
| 21825 | const eu_err_ty = eu_ty.errorUnionSet(zcu); | | |
| 21826 | const eu_pl_ty = eu_ty.errorUnionPayload(zcu); | | |
| 21827 | const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu)); | | |
| 21828 | var ops = try cg.tempsFromOperands(inst, .{un_op}); | | |
| 21829 | try ops[0].toOffset(eu_err_off, cg); | | |
| 21830 | while (try ops[0].toLea(cg)) {} | | |
| 21831 | try cg.asmMemoryImmediate( | | |
| 21832 | .{ ._, .cmp }, | | |
| 21833 | try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }), | | |
| 21834 | .u(0), | | |
| 21835 | ); | | |
| 21836 | const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e }); | | |
| 21837 | try is_non_err.finish(inst, &.{un_op}, &ops, cg); | | |
| 21838 | }, | | |
| 21839 | .load => if (use_old) try cg.airLoad(inst) else fallback: { | | |
| 21840 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 21841 | const val_ty = ty_op.ty.toType(); | | |
| 21842 | const ptr_ty = cg.typeOf(ty_op.operand); | | |
| 21843 | const ptr_info = ptr_ty.ptrInfo(zcu); | | |
| 21844 | if (ptr_info.packed_offset.host_size > 0 and | | |
| 21845 | (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type)) | | |
| 21846 | break :fallback try cg.airLoad(inst); | | |
| 21847 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 21848 | const res = try ops[0].load(val_ty, .{ | | |
| 21849 | .disp = switch (ptr_info.flags.vector_index) { | | |
| 21850 | .none => 0, | | |
| 21851 | .runtime => unreachable, | | |
| 21852 | else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)), | | |
| 21853 | }, | 42076 | }, |
| 21854 | }, cg); | 42077 | .dst_temps = .{.mem}, |
| 21855 | try res.finish(inst, &.{ty_op.operand}, &ops, cg); | 42078 | .clobbers = .{ .eflags = true }, |
| 21856 | }, | 42079 | .each = .{ .once = &.{ |
| 21857 | .ret => try cg.airRet(inst, false), | 42080 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 21858 | .ret_safe => try cg.airRet(inst, true), | 42081 | .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| 21859 | .ret_load => try cg.airRetLoad(inst), | 42082 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 21860 | .store, .store_safe => |air_tag| if (use_old) try cg.airStore(inst, switch (air_tag) { | 42083 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 21861 | else => unreachable, | 42084 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 21862 | .store => false, | 42085 | } }, |
| 21863 | .store_safe => true, | 42086 | }, .{ |
| 21864 | }) else fallback: { | 42087 | .required_features = .{ .@"64bit", null, null, null }, |
| 21865 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; | 42088 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 21866 | const ptr_ty = cg.typeOf(bin_op.lhs); | 42089 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, |
| 21867 | const ptr_info = ptr_ty.ptrInfo(zcu); | 42090 | .patterns = &.{ |
| 21868 | const val_ty = cg.typeOf(bin_op.rhs); | 42091 | .{ .src = .{ .to_mem, .none, .none } }, |
| 21869 | if (ptr_info.packed_offset.host_size > 0 and | | |
| 21870 | (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type)) | | |
| 21871 | break :fallback try cg.airStore(inst, switch (air_tag) { | | |
| 21872 | else => unreachable, | | |
| 21873 | .store => false, | | |
| 21874 | .store_safe => true, | | |
| 21875 | }); | | |
| 21876 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); | | |
| 21877 | try ops[0].store(&ops[1], .{ | | |
| 21878 | .disp = switch (ptr_info.flags.vector_index) { | | |
| 21879 | .none => 0, | | |
| 21880 | .runtime => unreachable, | | |
| 21881 | else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)), | | |
| 21882 | }, | 42092 | }, |
| 21883 | .safe = switch (air_tag) { | 42093 | .extra_temps = .{ |
| 21884 | else => unreachable, | 42094 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 21885 | .store => false, | 42095 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 21886 | .store_safe => true, | 42096 | .unused, |
| | 42097 | .unused, |
| | 42098 | .unused, |
| | 42099 | .unused, |
| | 42100 | .unused, |
| | 42101 | .unused, |
| | 42102 | .unused, |
| 21887 | }, | 42103 | }, |
| 21888 | }, cg); | 42104 | .dst_temps = .{.mem}, |
| 21889 | for (ops) |op| try op.die(cg); | 42105 | .clobbers = .{ .eflags = true }, |
| 21890 | }, | 42106 | .each = .{ .once = &.{ |
| 21891 | .unreach => {}, | 42107 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 21892 | .fptrunc => |air_tag| if (use_old) try cg.airFptrunc(inst) else { | 42108 | .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 21893 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | 42109 | .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| 21894 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | 42110 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 21895 | var res: [1]Temp = undefined; | 42111 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 21896 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ | 42112 | } }, |
| 21897 | .required_features = .{ .f16c, null, null, null }, | 42113 | }, .{ |
| 21898 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 42114 | .required_features = .{ .@"64bit", null, null, null }, |
| 21899 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, | 42115 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 42116 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, |
| | 42117 | .patterns = &.{ |
| | 42118 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 42119 | }, |
| | 42120 | .extra_temps = .{ |
| | 42121 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 42122 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 42123 | .unused, |
| | 42124 | .unused, |
| | 42125 | .unused, |
| | 42126 | .unused, |
| | 42127 | .unused, |
| | 42128 | .unused, |
| | 42129 | .unused, |
| | 42130 | }, |
| | 42131 | .dst_temps = .{.mem}, |
| | 42132 | .clobbers = .{ .eflags = true }, |
| | 42133 | .each = .{ .once = &.{ |
| | 42134 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 42135 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 42136 | .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 42137 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 42138 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 42139 | } }, |
| | 42140 | }, .{ |
| | 42141 | .required_features = .{ .avx, null, null, null }, |
| | 42142 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 42143 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, |
| | 42144 | .patterns = &.{ |
| | 42145 | .{ .src = .{ .mem, .none, .none } }, |
| | 42146 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 42147 | }, |
| | 42148 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 42149 | .each = .{ .once = &.{ |
| | 42150 | .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ }, |
| | 42151 | .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ }, |
| | 42152 | } }, |
| | 42153 | }, .{ |
| | 42154 | .required_features = .{ .avx, null, null, null }, |
| | 42155 | .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 42156 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, |
| | 42157 | .patterns = &.{ |
| | 42158 | .{ .src = .{ .mem, .none, .none } }, |
| | 42159 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 42160 | }, |
| | 42161 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 42162 | .each = .{ .once = &.{ |
| | 42163 | .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ }, |
| | 42164 | .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ }, |
| | 42165 | } }, |
| | 42166 | }, .{ |
| | 42167 | .required_features = .{ .sse4_1, null, null, null }, |
| | 42168 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 42169 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, |
| | 42170 | .patterns = &.{ |
| | 42171 | .{ .src = .{ .mem, .none, .none } }, |
| | 42172 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 42173 | }, |
| | 42174 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 42175 | .each = .{ .once = &.{ |
| | 42176 | .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ }, |
| | 42177 | .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ }, |
| | 42178 | } }, |
| | 42179 | }, .{ |
| | 42180 | .required_features = .{ .sse4_1, null, null, null }, |
| | 42181 | .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 42182 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, |
| | 42183 | .patterns = &.{ |
| | 42184 | .{ .src = .{ .mem, .none, .none } }, |
| | 42185 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 42186 | }, |
| | 42187 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 42188 | .each = .{ .once = &.{ |
| | 42189 | .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ }, |
| | 42190 | .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ }, |
| | 42191 | } }, |
| | 42192 | }, .{ |
| | 42193 | .required_features = .{ .sse2, null, null, null }, |
| | 42194 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 42195 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, |
| | 42196 | .patterns = &.{ |
| | 42197 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 42198 | }, |
| | 42199 | .extra_temps = .{ |
| | 42200 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, |
| | 42201 | .unused, |
| | 42202 | .unused, |
| | 42203 | .unused, |
| | 42204 | .unused, |
| | 42205 | .unused, |
| | 42206 | .unused, |
| | 42207 | .unused, |
| | 42208 | .unused, |
| | 42209 | }, |
| | 42210 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 42211 | .each = .{ .once = &.{ |
| | 42212 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 42213 | .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ }, |
| | 42214 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, |
| | 42215 | .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ }, |
| | 42216 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, |
| | 42217 | .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ }, |
| | 42218 | .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ }, |
| | 42219 | } }, |
| | 42220 | }, .{ |
| | 42221 | .required_features = .{ .sse2, null, null, null }, |
| | 42222 | .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 42223 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, |
| | 42224 | .patterns = &.{ |
| | 42225 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 42226 | }, |
| | 42227 | .extra_temps = .{ |
| | 42228 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 42229 | .unused, |
| | 42230 | .unused, |
| | 42231 | .unused, |
| | 42232 | .unused, |
| | 42233 | .unused, |
| | 42234 | .unused, |
| | 42235 | .unused, |
| | 42236 | .unused, |
| | 42237 | }, |
| | 42238 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 42239 | .each = .{ .once = &.{ |
| | 42240 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 42241 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, |
| | 42242 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, |
| | 42243 | .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ }, |
| | 42244 | } }, |
| | 42245 | }, .{ |
| | 42246 | .required_features = .{ .@"64bit", null, null, null }, |
| | 42247 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 42248 | .dst_constraints = .{.any_scalar_signed_int}, |
| | 42249 | .patterns = &.{ |
| | 42250 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 42251 | }, |
| | 42252 | .extra_temps = .{ |
| | 42253 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 42254 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 42255 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| | 42256 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 42257 | .unused, |
| | 42258 | .unused, |
| | 42259 | .unused, |
| | 42260 | .unused, |
| | 42261 | .unused, |
| | 42262 | }, |
| | 42263 | .dst_temps = .{.mem}, |
| | 42264 | .clobbers = .{ .eflags = true }, |
| | 42265 | .each = .{ .once = &.{ |
| | 42266 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 42267 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, |
| | 42268 | .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 42269 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 42270 | .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ }, |
| | 42271 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 42272 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 42273 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 42274 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 42275 | } }, |
| | 42276 | }, .{ |
| | 42277 | .required_features = .{ .@"64bit", null, null, null }, |
| | 42278 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 42279 | .dst_constraints = .{.any_scalar_int}, |
| | 42280 | .patterns = &.{ |
| | 42281 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 42282 | }, |
| | 42283 | .extra_temps = .{ |
| | 42284 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 42285 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 42286 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| | 42287 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 42288 | .unused, |
| | 42289 | .unused, |
| | 42290 | .unused, |
| | 42291 | .unused, |
| | 42292 | .unused, |
| | 42293 | }, |
| | 42294 | .dst_temps = .{.mem}, |
| | 42295 | .clobbers = .{ .eflags = true }, |
| | 42296 | .each = .{ .once = &.{ |
| | 42297 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 42298 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, |
| | 42299 | .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 42300 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 42301 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 42302 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 42303 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 42304 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 42305 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 42306 | } }, |
| | 42307 | }, .{ |
| | 42308 | .required_features = .{ .avx, null, null, null }, |
| | 42309 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| | 42310 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 42311 | .patterns = &.{ |
| | 42312 | .{ .src = .{ .mem, .none, .none } }, |
| | 42313 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 42314 | }, |
| | 42315 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 42316 | .each = .{ .once = &.{ |
| | 42317 | .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ }, |
| | 42318 | } }, |
| | 42319 | }, .{ |
| | 42320 | .required_features = .{ .avx, null, null, null }, |
| | 42321 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| | 42322 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, |
| | 42323 | .patterns = &.{ |
| | 42324 | .{ .src = .{ .mem, .none, .none } }, |
| | 42325 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 42326 | }, |
| | 42327 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 42328 | .each = .{ .once = &.{ |
| | 42329 | .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ }, |
| | 42330 | } }, |
| | 42331 | }, .{ |
| | 42332 | .required_features = .{ .sse4_1, null, null, null }, |
| | 42333 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| | 42334 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 42335 | .patterns = &.{ |
| | 42336 | .{ .src = .{ .mem, .none, .none } }, |
| | 42337 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 42338 | }, |
| | 42339 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 42340 | .each = .{ .once = &.{ |
| | 42341 | .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ }, |
| | 42342 | } }, |
| | 42343 | }, .{ |
| | 42344 | .required_features = .{ .sse4_1, null, null, null }, |
| | 42345 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| | 42346 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, |
| | 42347 | .patterns = &.{ |
| | 42348 | .{ .src = .{ .mem, .none, .none } }, |
| | 42349 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 42350 | }, |
| | 42351 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 42352 | .each = .{ .once = &.{ |
| | 42353 | .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ }, |
| | 42354 | } }, |
| | 42355 | }, .{ |
| | 42356 | .required_features = .{ .sse2, null, null, null }, |
| | 42357 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| | 42358 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 42359 | .patterns = &.{ |
| | 42360 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 42361 | }, |
| | 42362 | .extra_temps = .{ |
| | 42363 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| | 42364 | .unused, |
| | 42365 | .unused, |
| | 42366 | .unused, |
| | 42367 | .unused, |
| | 42368 | .unused, |
| | 42369 | .unused, |
| | 42370 | .unused, |
| | 42371 | .unused, |
| | 42372 | }, |
| | 42373 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 42374 | .each = .{ .once = &.{ |
| | 42375 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 42376 | .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ }, |
| | 42377 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, |
| | 42378 | } }, |
| | 42379 | }, .{ |
| | 42380 | .required_features = .{ .sse2, null, null, null }, |
| | 42381 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| | 42382 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, |
| 21900 | .patterns = &.{ | 42383 | .patterns = &.{ |
| 21901 | .{ .src = .{ .to_sse, .none } }, | 42384 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 21902 | }, | 42385 | }, |
| 21903 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 42386 | .extra_temps = .{ |
| | 42387 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 42388 | .unused, |
| | 42389 | .unused, |
| | 42390 | .unused, |
| | 42391 | .unused, |
| | 42392 | .unused, |
| | 42393 | .unused, |
| | 42394 | .unused, |
| | 42395 | .unused, |
| | 42396 | }, |
| | 42397 | .dst_temps = .{.{ .ref = .src0 }}, |
| 21904 | .each = .{ .once = &.{ | 42398 | .each = .{ .once = &.{ |
| 21905 | .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ }, | 42399 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 42400 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, |
| 21906 | } }, | 42401 | } }, |
| 21907 | }, .{ | 42402 | }, .{ |
| 21908 | .required_features = .{ .f16c, null, null, null }, | 42403 | .required_features = .{ .avx2, null, null, null }, |
| 21909 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any }, | 42404 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 21910 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }}, | 42405 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }}, |
| 21911 | .patterns = &.{ | 42406 | .patterns = &.{ |
| 21912 | .{ .src = .{ .to_sse, .none } }, | 42407 | .{ .src = .{ .mem, .none, .none } }, |
| | 42408 | .{ .src = .{ .to_sse, .none, .none } }, |
| 21913 | }, | 42409 | }, |
| 21914 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 42410 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 21915 | .each = .{ .once = &.{ | 42411 | .each = .{ .once = &.{ |
| 21916 | .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ }, | 42412 | .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ }, |
| 21917 | } }, | 42413 | } }, |
| 21918 | }, .{ | 42414 | }, .{ |
| 21919 | .required_features = .{ .f16c, null, null, null }, | 42415 | .required_features = .{ .avx2, null, null, null }, |
| 21920 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any }, | 42416 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 21921 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }}, | 42417 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }}, |
| 21922 | .patterns = &.{ | 42418 | .patterns = &.{ |
| 21923 | .{ .src = .{ .to_sse, .none } }, | 42419 | .{ .src = .{ .mem, .none, .none } }, |
| | 42420 | .{ .src = .{ .to_sse, .none, .none } }, |
| 21924 | }, | 42421 | }, |
| 21925 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 42422 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 21926 | .each = .{ .once = &.{ | 42423 | .each = .{ .once = &.{ |
| 21927 | .{ ._, .v_, .cvtps2ph, .dst0x, .src0y, .rm(.{}), ._ }, | 42424 | .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ }, |
| 21928 | } }, | 42425 | } }, |
| 21929 | }, .{ | 42426 | }, .{ |
| 21930 | .required_features = .{ .sse, null, null, null }, | 42427 | .required_features = .{ .avx2, null, null, null }, |
| 21931 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 42428 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 21932 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, | 42429 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }}, |
| 21933 | .patterns = &.{ | 42430 | .patterns = &.{ |
| 21934 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, | 42431 | .{ .src = .{ .to_mem, .none, .none } }, |
| 21935 | }, | 42432 | }, |
| 21936 | .call_frame = .{ .alignment = .@"16" }, | | |
| 21937 | .extra_temps = .{ | 42433 | .extra_temps = .{ |
| 21938 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, | 42434 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 21939 | .unused, | 42435 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| 21940 | .unused, | 42436 | .unused, |
| 21941 | .unused, | 42437 | .unused, |
| 21942 | .unused, | 42438 | .unused, |
| ... | @@ -21945,21 +42441,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21945,21 +42441,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21945 | .unused, | 42441 | .unused, |
| 21946 | .unused, | 42442 | .unused, |
| 21947 | }, | 42443 | }, |
| 21948 | .dst_temps = .{.{ .ref = .src0 }}, | 42444 | .dst_temps = .{.mem}, |
| 21949 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 42445 | .clobbers = .{ .eflags = true }, |
| 21950 | .each = .{ .once = &.{ | 42446 | .each = .{ .once = &.{ |
| 21951 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 42447 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 42448 | .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 42449 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 42450 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 42451 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 21952 | } }, | 42452 | } }, |
| 21953 | }, .{ | 42453 | }, .{ |
| 21954 | .required_features = .{ .f16c, null, null, null }, | 42454 | .required_features = .{ .avx2, null, null, null }, |
| 21955 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any }, | 42455 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 21956 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }}, | 42456 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }}, |
| 21957 | .patterns = &.{ | 42457 | .patterns = &.{ |
| 21958 | .{ .src = .{ .to_mem, .none } }, | 42458 | .{ .src = .{ .to_mem, .none, .none } }, |
| 21959 | }, | 42459 | }, |
| 21960 | .extra_temps = .{ | 42460 | .extra_temps = .{ |
| 21961 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 42461 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 21962 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, | 42462 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| 21963 | .unused, | 42463 | .unused, |
| 21964 | .unused, | 42464 | .unused, |
| 21965 | .unused, | 42465 | .unused, |
| ... | @@ -21971,24 +42471,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21971,24 +42471,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21971 | .dst_temps = .{.mem}, | 42471 | .dst_temps = .{.mem}, |
| 21972 | .clobbers = .{ .eflags = true }, | 42472 | .clobbers = .{ .eflags = true }, |
| 21973 | .each = .{ .once = &.{ | 42473 | .each = .{ .once = &.{ |
| 21974 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ }, | 42474 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 21975 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_size), ._, ._ }, | 42475 | .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 21976 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_size), .tmp1y, .rm(.{}), ._ }, | 42476 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| 21977 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 42477 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 21978 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 42478 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 21979 | } }, | 42479 | } }, |
| 21980 | }, .{ | 42480 | }, .{ |
| 21981 | .required_features = .{ .avx, null, null, null }, | 42481 | .required_features = .{ .avx, null, null, null }, |
| 21982 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 42482 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| 21983 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 42483 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| 21984 | .patterns = &.{ | 42484 | .patterns = &.{ |
| 21985 | .{ .src = .{ .to_mem, .none } }, | 42485 | .{ .src = .{ .to_mem, .none, .none } }, |
| 21986 | }, | 42486 | }, |
| 21987 | .call_frame = .{ .alignment = .@"16" }, | | |
| 21988 | .extra_temps = .{ | 42487 | .extra_temps = .{ |
| 21989 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 42488 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 21990 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, | 42489 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| 21991 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, | 42490 | .unused, |
| 21992 | .unused, | 42491 | .unused, |
| 21993 | .unused, | 42492 | .unused, |
| 21994 | .unused, | 42493 | .unused, |
| ... | @@ -21997,27 +42496,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21997,27 +42496,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21997 | .unused, | 42496 | .unused, |
| 21998 | }, | 42497 | }, |
| 21999 | .dst_temps = .{.mem}, | 42498 | .dst_temps = .{.mem}, |
| 22000 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 42499 | .clobbers = .{ .eflags = true }, |
| 22001 | .each = .{ .once = &.{ | 42500 | .each = .{ .once = &.{ |
| 22002 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 42501 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 22003 | .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, | 42502 | .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 22004 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 42503 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 22005 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, | 42504 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 22006 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 22007 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 42505 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22008 | } }, | 42506 | } }, |
| 22009 | }, .{ | 42507 | }, .{ |
| 22010 | .required_features = .{ .sse4_1, null, null, null }, | 42508 | .required_features = .{ .avx, null, null, null }, |
| 22011 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 42509 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any }, |
| 22012 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 42510 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, |
| 22013 | .patterns = &.{ | 42511 | .patterns = &.{ |
| 22014 | .{ .src = .{ .to_mem, .none } }, | 42512 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22015 | }, | 42513 | }, |
| 22016 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22017 | .extra_temps = .{ | 42514 | .extra_temps = .{ |
| 22018 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 42515 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 22019 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, | 42516 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 22020 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, | 42517 | .unused, |
| 22021 | .unused, | 42518 | .unused, |
| 22022 | .unused, | 42519 | .unused, |
| 22023 | .unused, | 42520 | .unused, |
| ... | @@ -22026,28 +42523,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22026,28 +42523,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22026 | .unused, | 42523 | .unused, |
| 22027 | }, | 42524 | }, |
| 22028 | .dst_temps = .{.mem}, | 42525 | .dst_temps = .{.mem}, |
| 22029 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 42526 | .clobbers = .{ .eflags = true }, |
| 22030 | .each = .{ .once = &.{ | 42527 | .each = .{ .once = &.{ |
| 22031 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 42528 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 22032 | .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, | 42529 | .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 22033 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 42530 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 22034 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, | 42531 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 22035 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 22036 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 42532 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22037 | } }, | 42533 | } }, |
| 22038 | }, .{ | 42534 | }, .{ |
| 22039 | .required_features = .{ .sse2, null, null, null }, | 42535 | .required_features = .{ .sse4_1, null, null, null }, |
| 22040 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 42536 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| 22041 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 42537 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| 22042 | .patterns = &.{ | 42538 | .patterns = &.{ |
| 22043 | .{ .src = .{ .to_mem, .none } }, | 42539 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22044 | }, | 42540 | }, |
| 22045 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22046 | .extra_temps = .{ | 42541 | .extra_temps = .{ |
| 22047 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 42542 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 22048 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, | 42543 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| 22049 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, | 42544 | .unused, |
| 22050 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 42545 | .unused, |
| 22051 | .unused, | 42546 | .unused, |
| 22052 | .unused, | 42547 | .unused, |
| 22053 | .unused, | 42548 | .unused, |
| ... | @@ -22055,58 +42550,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22055,58 +42550,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22055 | .unused, | 42550 | .unused, |
| 22056 | }, | 42551 | }, |
| 22057 | .dst_temps = .{.mem}, | 42552 | .dst_temps = .{.mem}, |
| 22058 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 42553 | .clobbers = .{ .eflags = true }, |
| 22059 | .each = .{ .once = &.{ | 42554 | .each = .{ .once = &.{ |
| 22060 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 42555 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 22061 | .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, | 42556 | .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 22062 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 42557 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 22063 | .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, | 42558 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 22064 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, | | |
| 22065 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 22066 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 42559 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22067 | } }, | 42560 | } }, |
| 22068 | }, .{ | 42561 | }, .{ |
| 22069 | .required_features = .{ .sse, null, null, null }, | 42562 | .required_features = .{ .sse4_1, null, null, null }, |
| 22070 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 42563 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| 22071 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 42564 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, |
| 22072 | .patterns = &.{ | 42565 | .patterns = &.{ |
| 22073 | .{ .src = .{ .to_mem, .none } }, | 42566 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22074 | }, | 42567 | }, |
| 22075 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22076 | .extra_temps = .{ | 42568 | .extra_temps = .{ |
| 22077 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 42569 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 22078 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 42570 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 22079 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, | 42571 | .unused, |
| 22080 | .{ .type = .f32, .kind = .mem }, | 42572 | .unused, |
| 22081 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 42573 | .unused, |
| 22082 | .unused, | 42574 | .unused, |
| 22083 | .unused, | 42575 | .unused, |
| 22084 | .unused, | 42576 | .unused, |
| 22085 | .unused, | 42577 | .unused, |
| 22086 | }, | 42578 | }, |
| 22087 | .dst_temps = .{.mem}, | 42579 | .dst_temps = .{.mem}, |
| 22088 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 42580 | .clobbers = .{ .eflags = true }, |
| 22089 | .each = .{ .once = &.{ | 42581 | .each = .{ .once = &.{ |
| 22090 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 42582 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 22091 | .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, | 42583 | .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 22092 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 42584 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 22093 | .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ }, | 42585 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 22094 | .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ }, | | |
| 22095 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, | | |
| 22096 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 22097 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 42586 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22098 | } }, | 42587 | } }, |
| 22099 | }, .{ | 42588 | }, .{ |
| 22100 | .required_features = .{ .sse, null, null, null }, | 42589 | .required_features = .{ .@"64bit", null, null, null }, |
| 22101 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 42590 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 22102 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, | 42591 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, |
| 22103 | .patterns = &.{ | 42592 | .patterns = &.{ |
| 22104 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, | 42593 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22105 | }, | 42594 | }, |
| 22106 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22107 | .extra_temps = .{ | 42595 | .extra_temps = .{ |
| 22108 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, | 42596 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 22109 | .unused, | 42597 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 22110 | .unused, | 42598 | .unused, |
| 22111 | .unused, | 42599 | .unused, |
| 22112 | .unused, | 42600 | .unused, |
| ... | @@ -22115,23 +42603,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22115,23 +42603,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22115 | .unused, | 42603 | .unused, |
| 22116 | .unused, | 42604 | .unused, |
| 22117 | }, | 42605 | }, |
| 22118 | .dst_temps = .{.{ .ref = .src0 }}, | 42606 | .dst_temps = .{.mem}, |
| 22119 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 42607 | .clobbers = .{ .eflags = true }, |
| 22120 | .each = .{ .once = &.{ | 42608 | .each = .{ .once = &.{ |
| 22121 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 42609 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 42610 | .{ .@"0:", ._, .movsxd, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 42611 | .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 42612 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 42613 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22122 | } }, | 42614 | } }, |
| 22123 | }, .{ | 42615 | }, .{ |
| 22124 | .required_features = .{ .avx, null, null, null }, | 42616 | .required_features = .{ .@"64bit", null, null, null }, |
| 22125 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 42617 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 22126 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 42618 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, |
| 22127 | .patterns = &.{ | 42619 | .patterns = &.{ |
| 22128 | .{ .src = .{ .to_mem, .none } }, | 42620 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22129 | }, | 42621 | }, |
| 22130 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22131 | .extra_temps = .{ | 42622 | .extra_temps = .{ |
| 22132 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 42623 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 22133 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, | 42624 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 22134 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, | 42625 | .unused, |
| 22135 | .unused, | 42626 | .unused, |
| 22136 | .unused, | 42627 | .unused, |
| 22137 | .unused, | 42628 | .unused, |
| ... | @@ -22140,27 +42631,77 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22140,27 +42631,77 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22140 | .unused, | 42631 | .unused, |
| 22141 | }, | 42632 | }, |
| 22142 | .dst_temps = .{.mem}, | 42633 | .dst_temps = .{.mem}, |
| 22143 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 42634 | .clobbers = .{ .eflags = true }, |
| 22144 | .each = .{ .once = &.{ | 42635 | .each = .{ .once = &.{ |
| 22145 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 42636 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 22146 | .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, | 42637 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| 22147 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 42638 | .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| 22148 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, | 42639 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 22149 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 22150 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 42640 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22151 | } }, | 42641 | } }, |
| | 42642 | }, .{ |
| | 42643 | .required_features = .{ .avx, null, null, null }, |
| | 42644 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 42645 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, |
| | 42646 | .patterns = &.{ |
| | 42647 | .{ .src = .{ .mem, .none, .none } }, |
| | 42648 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 42649 | }, |
| | 42650 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 42651 | .each = .{ .once = &.{ |
| | 42652 | .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ }, |
| | 42653 | .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ }, |
| | 42654 | } }, |
| | 42655 | }, .{ |
| | 42656 | .required_features = .{ .avx, null, null, null }, |
| | 42657 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 42658 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, |
| | 42659 | .patterns = &.{ |
| | 42660 | .{ .src = .{ .mem, .none, .none } }, |
| | 42661 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 42662 | }, |
| | 42663 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 42664 | .each = .{ .once = &.{ |
| | 42665 | .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ }, |
| | 42666 | .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ }, |
| | 42667 | } }, |
| 22152 | }, .{ | 42668 | }, .{ |
| 22153 | .required_features = .{ .sse4_1, null, null, null }, | 42669 | .required_features = .{ .sse4_1, null, null, null }, |
| 22154 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 42670 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 22155 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 42671 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, |
| 22156 | .patterns = &.{ | 42672 | .patterns = &.{ |
| 22157 | .{ .src = .{ .to_mem, .none } }, | 42673 | .{ .src = .{ .mem, .none, .none } }, |
| | 42674 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 42675 | }, |
| | 42676 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 42677 | .each = .{ .once = &.{ |
| | 42678 | .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ }, |
| | 42679 | .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ }, |
| | 42680 | } }, |
| | 42681 | }, .{ |
| | 42682 | .required_features = .{ .sse4_1, null, null, null }, |
| | 42683 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 42684 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, |
| | 42685 | .patterns = &.{ |
| | 42686 | .{ .src = .{ .mem, .none, .none } }, |
| | 42687 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 42688 | }, |
| | 42689 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 42690 | .each = .{ .once = &.{ |
| | 42691 | .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ }, |
| | 42692 | .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ }, |
| | 42693 | } }, |
| | 42694 | }, .{ |
| | 42695 | .required_features = .{ .sse2, null, null, null }, |
| | 42696 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 42697 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, |
| | 42698 | .patterns = &.{ |
| | 42699 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 22158 | }, | 42700 | }, |
| 22159 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22160 | .extra_temps = .{ | 42701 | .extra_temps = .{ |
| 22161 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 42702 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| 22162 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, | 42703 | .unused, |
| 22163 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, | 42704 | .unused, |
| 22164 | .unused, | 42705 | .unused, |
| 22165 | .unused, | 42706 | .unused, |
| 22166 | .unused, | 42707 | .unused, |
| ... | @@ -22168,29 +42709,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22168,29 +42709,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22168 | .unused, | 42709 | .unused, |
| 22169 | .unused, | 42710 | .unused, |
| 22170 | }, | 42711 | }, |
| 22171 | .dst_temps = .{.mem}, | 42712 | .dst_temps = .{.{ .ref = .src0 }}, |
| 22172 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 22173 | .each = .{ .once = &.{ | 42713 | .each = .{ .once = &.{ |
| 22174 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 42714 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| 22175 | .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, | 42715 | .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ }, |
| 22176 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 42716 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, |
| 22177 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, | 42717 | .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ }, |
| 22178 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 42718 | .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ }, |
| 22179 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 22180 | } }, | 42719 | } }, |
| 22181 | }, .{ | 42720 | }, .{ |
| 22182 | .required_features = .{ .sse2, null, null, null }, | 42721 | .required_features = .{ .sse2, null, null, null }, |
| 22183 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 42722 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 22184 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 42723 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, |
| 22185 | .patterns = &.{ | 42724 | .patterns = &.{ |
| 22186 | .{ .src = .{ .to_mem, .none } }, | 42725 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 42726 | }, |
| | 42727 | .extra_temps = .{ |
| | 42728 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 42729 | .unused, |
| | 42730 | .unused, |
| | 42731 | .unused, |
| | 42732 | .unused, |
| | 42733 | .unused, |
| | 42734 | .unused, |
| | 42735 | .unused, |
| | 42736 | .unused, |
| | 42737 | }, |
| | 42738 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 42739 | .each = .{ .once = &.{ |
| | 42740 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, |
| | 42741 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, |
| | 42742 | .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ }, |
| | 42743 | } }, |
| | 42744 | }, .{ |
| | 42745 | .required_features = .{ .@"64bit", null, null, null }, |
| | 42746 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 42747 | .dst_constraints = .{.any_scalar_signed_int}, |
| | 42748 | .patterns = &.{ |
| | 42749 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22187 | }, | 42750 | }, |
| 22188 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22189 | .extra_temps = .{ | 42751 | .extra_temps = .{ |
| 22190 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 42752 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 22191 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, | 42753 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 22192 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, | 42754 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| 22193 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 42755 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 22194 | .unused, | 42756 | .unused, |
| 22195 | .unused, | 42757 | .unused, |
| 22196 | .unused, | 42758 | .unused, |
| ... | @@ -22198,288 +42760,506 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22198,288 +42760,506 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22198 | .unused, | 42760 | .unused, |
| 22199 | }, | 42761 | }, |
| 22200 | .dst_temps = .{.mem}, | 42762 | .dst_temps = .{.mem}, |
| 22201 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 42763 | .clobbers = .{ .eflags = true }, |
| 22202 | .each = .{ .once = &.{ | 42764 | .each = .{ .once = &.{ |
| 22203 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 42765 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 22204 | .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, | 42766 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, |
| 22205 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 42767 | .{ .@"0:", ._, .movsxd, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| 22206 | .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, | 42768 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| 22207 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, | 42769 | .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ }, |
| 22208 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 42770 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 42771 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 42772 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 22209 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 42773 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22210 | } }, | 42774 | } }, |
| 22211 | }, .{ | 42775 | }, .{ |
| 22212 | .required_features = .{ .sse, null, null, null }, | 42776 | .required_features = .{ .@"64bit", null, null, null }, |
| 22213 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 42777 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 22214 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 42778 | .dst_constraints = .{.any_scalar_int}, |
| 22215 | .patterns = &.{ | 42779 | .patterns = &.{ |
| 22216 | .{ .src = .{ .to_mem, .none } }, | 42780 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22217 | }, | 42781 | }, |
| 22218 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22219 | .extra_temps = .{ | 42782 | .extra_temps = .{ |
| 22220 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 42783 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 22221 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, | 42784 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 22222 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, | 42785 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| 22223 | .{ .type = .f32, .kind = .mem }, | 42786 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 22224 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 42787 | .unused, |
| | 42788 | .unused, |
| | 42789 | .unused, |
| | 42790 | .unused, |
| | 42791 | .unused, |
| | 42792 | }, |
| | 42793 | .dst_temps = .{.mem}, |
| | 42794 | .clobbers = .{ .eflags = true }, |
| | 42795 | .each = .{ .once = &.{ |
| | 42796 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 42797 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, |
| | 42798 | .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 42799 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 42800 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| | 42801 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 42802 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 42803 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 42804 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 42805 | } }, |
| | 42806 | }, .{ |
| | 42807 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| | 42808 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| | 42809 | .dst_constraints = .{.any_scalar_signed_int}, |
| | 42810 | .patterns = &.{ |
| | 42811 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 42812 | }, |
| | 42813 | .extra_temps = .{ |
| | 42814 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 42815 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| | 42816 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 42817 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 42818 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| | 42819 | .unused, |
| | 42820 | .unused, |
| | 42821 | .unused, |
| | 42822 | .unused, |
| | 42823 | }, |
| | 42824 | .dst_temps = .{.mem}, |
| | 42825 | .clobbers = .{ .eflags = true }, |
| | 42826 | .each = .{ .once = &.{ |
| | 42827 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 42828 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| | 42829 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| | 42830 | .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, |
| | 42831 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 42832 | .{ ._, ._sq, .lod, ._, ._, ._, ._ }, |
| | 42833 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 42834 | .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ }, |
| | 42835 | .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ }, |
| | 42836 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 42837 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| | 42838 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| | 42839 | } }, |
| | 42840 | }, .{ |
| | 42841 | .required_features = .{ .@"64bit", null, null, null }, |
| | 42842 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| | 42843 | .dst_constraints = .{.any_scalar_signed_int}, |
| | 42844 | .patterns = &.{ |
| | 42845 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 42846 | }, |
| | 42847 | .extra_temps = .{ |
| | 42848 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 42849 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| | 42850 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 42851 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 42852 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| | 42853 | .unused, |
| | 42854 | .unused, |
| | 42855 | .unused, |
| | 42856 | .unused, |
| | 42857 | }, |
| | 42858 | .dst_temps = .{.mem}, |
| | 42859 | .clobbers = .{ .eflags = true }, |
| | 42860 | .each = .{ .once = &.{ |
| | 42861 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 42862 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| | 42863 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| | 42864 | .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, |
| | 42865 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 42866 | .{ ._, ._sq, .lod, ._, ._, ._, ._ }, |
| | 42867 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 42868 | .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ }, |
| | 42869 | .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ }, |
| | 42870 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 42871 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| | 42872 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 42873 | } }, |
| | 42874 | }, .{ |
| | 42875 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| | 42876 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| | 42877 | .dst_constraints = .{.any_scalar_int}, |
| | 42878 | .patterns = &.{ |
| | 42879 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 42880 | }, |
| | 42881 | .extra_temps = .{ |
| | 42882 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 42883 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| | 42884 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 42885 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 42886 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| | 42887 | .unused, |
| | 42888 | .unused, |
| | 42889 | .unused, |
| | 42890 | .unused, |
| | 42891 | }, |
| | 42892 | .dst_temps = .{.mem}, |
| | 42893 | .clobbers = .{ .eflags = true }, |
| | 42894 | .each = .{ .once = &.{ |
| | 42895 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 42896 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| | 42897 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| | 42898 | .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ }, |
| | 42899 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 42900 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| | 42901 | .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ }, |
| | 42902 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 42903 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| | 42904 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| | 42905 | } }, |
| | 42906 | }, .{ |
| | 42907 | .required_features = .{ .@"64bit", null, null, null }, |
| | 42908 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| | 42909 | .dst_constraints = .{.any_scalar_int}, |
| | 42910 | .patterns = &.{ |
| | 42911 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 42912 | }, |
| | 42913 | .extra_temps = .{ |
| | 42914 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 42915 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| | 42916 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 42917 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| | 42918 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| 22225 | .unused, | 42919 | .unused, |
| 22226 | .unused, | 42920 | .unused, |
| 22227 | .unused, | 42921 | .unused, |
| 22228 | .unused, | 42922 | .unused, |
| 22229 | }, | 42923 | }, |
| 22230 | .dst_temps = .{.mem}, | 42924 | .dst_temps = .{.mem}, |
| 22231 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 42925 | .clobbers = .{ .eflags = true }, |
| | 42926 | .each = .{ .once = &.{ |
| | 42927 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 42928 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| | 42929 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| | 42930 | .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ }, |
| | 42931 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 42932 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| | 42933 | .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ }, |
| | 42934 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| | 42935 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| | 42936 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 42937 | } }, |
| | 42938 | } }) catch |err| switch (err) { |
| | 42939 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| | 42940 | @tagName(air_tag), |
| | 42941 | dst_ty.fmt(pt), |
| | 42942 | src_ty.fmt(pt), |
| | 42943 | ops[0].tracking(cg), |
| | 42944 | }), |
| | 42945 | else => |e| return e, |
| | 42946 | }; |
| | 42947 | try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 42948 | }, |
| | 42949 | .trunc => |air_tag| if (use_old) try cg.airTrunc(inst) else { |
| | 42950 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 42951 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 42952 | var res: [1]Temp = undefined; |
| | 42953 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ |
| | 42954 | .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any }, |
| | 42955 | .dst_constraints = .{.{ .exact_signed_int = 1 }}, |
| | 42956 | .patterns = &.{ |
| | 42957 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| | 42958 | }, |
| | 42959 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 42960 | .clobbers = .{ .eflags = true }, |
| | 42961 | .each = .{ .once = &.{ |
| | 42962 | .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ }, |
| | 42963 | .{ ._, ._, .neg, .dst0d, ._, ._, ._ }, |
| | 42964 | } }, |
| | 42965 | }, .{ |
| | 42966 | .src_constraints = .{ .any_signed_int, .any, .any }, |
| | 42967 | .dst_constraints = .{.{ .exact_signed_int = 1 }}, |
| | 42968 | .patterns = &.{ |
| | 42969 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 42970 | }, |
| | 42971 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 42972 | .clobbers = .{ .eflags = true }, |
| | 42973 | .each = .{ .once = &.{ |
| | 42974 | .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ }, |
| | 42975 | .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ }, |
| | 42976 | .{ ._, ._, .neg, .dst0d, ._, ._, ._ }, |
| | 42977 | } }, |
| | 42978 | }, .{ |
| | 42979 | .src_constraints = .{ .{ .int = .gpr }, .any, .any }, |
| | 42980 | .dst_constraints = .{.{ .exact_int = 8 }}, |
| | 42981 | .patterns = &.{ |
| | 42982 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| | 42983 | }, |
| | 42984 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 42985 | .each = .{ .once = &.{} }, |
| | 42986 | }, .{ |
| | 42987 | .src_constraints = .{ .any_signed_int, .any, .any }, |
| | 42988 | .dst_constraints = .{.{ .exact_signed_int = 8 }}, |
| | 42989 | .patterns = &.{ |
| | 42990 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 42991 | }, |
| | 42992 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 42993 | .each = .{ .once = &.{ |
| | 42994 | .{ ._, ._, .movsx, .dst0d, .mem(.src0b), ._, ._ }, |
| | 42995 | } }, |
| | 42996 | }, .{ |
| | 42997 | .src_constraints = .{ .any_unsigned_int, .any, .any }, |
| | 42998 | .dst_constraints = .{.{ .exact_unsigned_int = 8 }}, |
| | 42999 | .patterns = &.{ |
| | 43000 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 43001 | }, |
| | 43002 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 43003 | .each = .{ .once = &.{ |
| | 43004 | .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ }, |
| | 43005 | } }, |
| | 43006 | }, .{ |
| | 43007 | .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any }, |
| | 43008 | .dst_constraints = .{.{ .signed_int = .byte }}, |
| | 43009 | .patterns = &.{ |
| | 43010 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| | 43011 | }, |
| | 43012 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 43013 | .clobbers = .{ .eflags = true }, |
| | 43014 | .each = .{ .once = &.{ |
| | 43015 | .{ ._, ._l, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 43016 | .{ ._, ._r, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 43017 | } }, |
| | 43018 | }, .{ |
| | 43019 | .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any }, |
| | 43020 | .dst_constraints = .{.{ .unsigned_int = .byte }}, |
| | 43021 | .patterns = &.{ |
| | 43022 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| | 43023 | }, |
| | 43024 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 43025 | .clobbers = .{ .eflags = true }, |
| | 43026 | .each = .{ .once = &.{ |
| | 43027 | .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ }, |
| | 43028 | } }, |
| | 43029 | }, .{ |
| | 43030 | .src_constraints = .{ .any_int, .any, .any }, |
| | 43031 | .dst_constraints = .{.{ .unsigned_int = .byte }}, |
| | 43032 | .patterns = &.{ |
| | 43033 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 43034 | }, |
| | 43035 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 43036 | .clobbers = .{ .eflags = true }, |
| | 43037 | .each = .{ .once = &.{ |
| | 43038 | .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ }, |
| | 43039 | .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ }, |
| | 43040 | } }, |
| | 43041 | }, .{ |
| | 43042 | .src_constraints = .{ .{ .int = .gpr }, .any, .any }, |
| | 43043 | .dst_constraints = .{.{ .exact_int = 16 }}, |
| | 43044 | .patterns = &.{ |
| | 43045 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| | 43046 | }, |
| | 43047 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 43048 | .each = .{ .once = &.{} }, |
| | 43049 | }, .{ |
| | 43050 | .src_constraints = .{ .any_signed_int, .any, .any }, |
| | 43051 | .dst_constraints = .{.{ .exact_signed_int = 16 }}, |
| | 43052 | .patterns = &.{ |
| | 43053 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 43054 | }, |
| | 43055 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 22232 | .each = .{ .once = &.{ | 43056 | .each = .{ .once = &.{ |
| 22233 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43057 | .{ ._, ._, .movsx, .dst0d, .mem(.src0w), ._, ._ }, |
| 22234 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, | | |
| 22235 | .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, | | |
| 22236 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | | |
| 22237 | .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ }, | | |
| 22238 | .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ }, | | |
| 22239 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, | | |
| 22240 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 22241 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 22242 | } }, | 43058 | } }, |
| 22243 | }, .{ | 43059 | }, .{ |
| 22244 | .required_features = .{ .avx, null, null, null }, | 43060 | .src_constraints = .{ .any_unsigned_int, .any, .any }, |
| 22245 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 43061 | .dst_constraints = .{.{ .exact_unsigned_int = 16 }}, |
| 22246 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | | |
| 22247 | .patterns = &.{ | 43062 | .patterns = &.{ |
| 22248 | .{ .src = .{ .mem, .none } }, | 43063 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22249 | }, | 43064 | }, |
| 22250 | .dst_temps = .{.{ .rc = .sse }}, | 43065 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 22251 | .each = .{ .once = &.{ | 43066 | .each = .{ .once = &.{ |
| 22252 | .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, | 43067 | .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ }, |
| 22253 | .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ }, | | |
| 22254 | } }, | 43068 | } }, |
| 22255 | }, .{ | 43069 | }, .{ |
| 22256 | .required_features = .{ .avx, null, null, null }, | 43070 | .required_features = .{ .fast_imm16, null, null, null }, |
| 22257 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 43071 | .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any }, |
| 22258 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | 43072 | .dst_constraints = .{.{ .unsigned_int = .word }}, |
| 22259 | .patterns = &.{ | 43073 | .patterns = &.{ |
| 22260 | .{ .src = .{ .to_sse, .none } }, | 43074 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 22261 | }, | 43075 | }, |
| 22262 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 43076 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 43077 | .clobbers = .{ .eflags = true }, |
| 22263 | .each = .{ .once = &.{ | 43078 | .each = .{ .once = &.{ |
| 22264 | .{ ._, .v_ss, .cvtsd2, .dst0x, .src0x, .src0q, ._ }, | 43079 | .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ }, |
| 22265 | } }, | 43080 | } }, |
| 22266 | }, .{ | 43081 | }, .{ |
| 22267 | .required_features = .{ .sse2, null, null, null }, | 43082 | .required_features = .{ .fast_imm16, null, null, null }, |
| 22268 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 43083 | .src_constraints = .{ .any_unsigned_int, .any, .any }, |
| 22269 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | 43084 | .dst_constraints = .{.{ .unsigned_int = .word }}, |
| 22270 | .patterns = &.{ | 43085 | .patterns = &.{ |
| 22271 | .{ .src = .{ .mem, .none } }, | 43086 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22272 | .{ .src = .{ .to_sse, .none } }, | | |
| 22273 | }, | 43087 | }, |
| 22274 | .dst_temps = .{.{ .rc = .sse }}, | 43088 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 43089 | .clobbers = .{ .eflags = true }, |
| 22275 | .each = .{ .once = &.{ | 43090 | .each = .{ .once = &.{ |
| 22276 | .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, | 43091 | .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ }, |
| 22277 | .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ }, | 43092 | .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ }, |
| 22278 | } }, | 43093 | } }, |
| 22279 | }, .{ | 43094 | }, .{ |
| 22280 | .required_features = .{ .x87, null, null, null }, | 43095 | .src_constraints = .{ .{ .int = .gpr }, .any, .any }, |
| 22281 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 43096 | .dst_constraints = .{.{ .exact_int = 32 }}, |
| 22282 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | | |
| 22283 | .patterns = &.{ | 43097 | .patterns = &.{ |
| 22284 | .{ .src = .{ .to_mem, .none } }, | 43098 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 22285 | }, | 43099 | }, |
| 22286 | .extra_temps = .{ | 43100 | .dst_temps = .{.{ .ref = .src0 }}, |
| 22287 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 43101 | .each = .{ .once = &.{} }, |
| 22288 | .unused, | 43102 | }, .{ |
| 22289 | .unused, | 43103 | .src_constraints = .{ .any_int, .any, .any }, |
| 22290 | .unused, | 43104 | .dst_constraints = .{.{ .exact_int = 32 }}, |
| 22291 | .unused, | 43105 | .patterns = &.{ |
| 22292 | .unused, | 43106 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22293 | .unused, | | |
| 22294 | .unused, | | |
| 22295 | .unused, | | |
| 22296 | }, | 43107 | }, |
| 22297 | .dst_temps = .{.mem}, | 43108 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 22298 | .each = .{ .once = &.{ | 43109 | .each = .{ .once = &.{ |
| 22299 | .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, | 43110 | .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ }, |
| 22300 | .{ ._, .f_p, .st, .dst0d, ._, ._, ._ }, | | |
| 22301 | } }, | 43111 | } }, |
| 22302 | }, .{ | 43112 | }, .{ |
| 22303 | .required_features = .{ .avx, null, null, null }, | 43113 | .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any }, |
| 22304 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any }, | 43114 | .dst_constraints = .{.{ .signed_int = .dword }}, |
| 22305 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }}, | | |
| 22306 | .patterns = &.{ | 43115 | .patterns = &.{ |
| 22307 | .{ .src = .{ .mem, .none } }, | 43116 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 22308 | .{ .src = .{ .to_sse, .none } }, | | |
| 22309 | }, | 43117 | }, |
| 22310 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 43118 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 43119 | .clobbers = .{ .eflags = true }, |
| 22311 | .each = .{ .once = &.{ | 43120 | .each = .{ .once = &.{ |
| 22312 | .{ ._, .v_ps, .cvtpd2, .dst0x, .src0x, ._, ._ }, | 43121 | .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 43122 | .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 22313 | } }, | 43123 | } }, |
| 22314 | }, .{ | 43124 | }, .{ |
| 22315 | .required_features = .{ .sse2, null, null, null }, | 43125 | .src_constraints = .{ .any_signed_int, .any, .any }, |
| 22316 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any }, | 43126 | .dst_constraints = .{.{ .signed_int = .dword }}, |
| 22317 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }}, | | |
| 22318 | .patterns = &.{ | 43127 | .patterns = &.{ |
| 22319 | .{ .src = .{ .mem, .none } }, | 43128 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22320 | .{ .src = .{ .to_sse, .none } }, | | |
| 22321 | }, | 43129 | }, |
| 22322 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 43130 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| | 43131 | .clobbers = .{ .eflags = true }, |
| 22323 | .each = .{ .once = &.{ | 43132 | .each = .{ .once = &.{ |
| 22324 | .{ ._, ._ps, .cvtpd2, .dst0x, .src0x, ._, ._ }, | 43133 | .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ }, |
| | 43134 | .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 43135 | .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 22325 | } }, | 43136 | } }, |
| 22326 | }, .{ | 43137 | }, .{ |
| 22327 | .required_features = .{ .avx, null, null, null }, | 43138 | .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any }, |
| 22328 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any }, | 43139 | .dst_constraints = .{.{ .unsigned_int = .dword }}, |
| 22329 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, | | |
| 22330 | .patterns = &.{ | 43140 | .patterns = &.{ |
| 22331 | .{ .src = .{ .mem, .none } }, | 43141 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 22332 | .{ .src = .{ .to_sse, .none } }, | | |
| 22333 | }, | 43142 | }, |
| 22334 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 43143 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 43144 | .clobbers = .{ .eflags = true }, |
| 22335 | .each = .{ .once = &.{ | 43145 | .each = .{ .once = &.{ |
| 22336 | .{ ._, .v_ps, .cvtpd2, .dst0x, .src0y, ._, ._ }, | 43146 | .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ }, |
| 22337 | } }, | 43147 | } }, |
| 22338 | }, .{ | 43148 | }, .{ |
| 22339 | .required_features = .{ .avx, null, null, null }, | 43149 | .src_constraints = .{ .any_unsigned_int, .any, .any }, |
| 22340 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any }, | 43150 | .dst_constraints = .{.{ .unsigned_int = .dword }}, |
| 22341 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, | | |
| 22342 | .patterns = &.{ | 43151 | .patterns = &.{ |
| 22343 | .{ .src = .{ .to_mem, .none } }, | 43152 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22344 | }, | 43153 | }, |
| 22345 | .extra_temps = .{ | 43154 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 22346 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 22347 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, | | |
| 22348 | .unused, | | |
| 22349 | .unused, | | |
| 22350 | .unused, | | |
| 22351 | .unused, | | |
| 22352 | .unused, | | |
| 22353 | .unused, | | |
| 22354 | .unused, | | |
| 22355 | }, | | |
| 22356 | .dst_temps = .{.mem}, | | |
| 22357 | .clobbers = .{ .eflags = true }, | 43155 | .clobbers = .{ .eflags = true }, |
| 22358 | .each = .{ .once = &.{ | 43156 | .each = .{ .once = &.{ |
| 22359 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ }, | 43157 | .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ }, |
| 22360 | .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_size), ._, ._ }, | 43158 | .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ }, |
| 22361 | .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 22362 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 22363 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 22364 | } }, | 43159 | } }, |
| 22365 | }, .{ | 43160 | }, .{ |
| 22366 | .required_features = .{ .sse2, null, null, null }, | 43161 | .required_features = .{ .@"64bit", null, null, null }, |
| 22367 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any }, | 43162 | .src_constraints = .{ .any_int, .any, .any }, |
| 22368 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, | 43163 | .dst_constraints = .{.{ .exact_int = 64 }}, |
| 22369 | .patterns = &.{ | 43164 | .patterns = &.{ |
| 22370 | .{ .src = .{ .to_mem, .none } }, | 43165 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22371 | }, | 43166 | }, |
| 22372 | .extra_temps = .{ | 43167 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 22373 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43168 | .each = .{ .once = &.{ |
| 22374 | .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } }, | 43169 | .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ }, |
| 22375 | .unused, | 43170 | } }, |
| 22376 | .unused, | 43171 | }, .{ |
| 22377 | .unused, | 43172 | .required_features = .{ .@"64bit", null, null, null }, |
| 22378 | .unused, | 43173 | .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any }, |
| 22379 | .unused, | 43174 | .dst_constraints = .{.{ .signed_int = .qword }}, |
| 22380 | .unused, | 43175 | .patterns = &.{ |
| 22381 | .unused, | 43176 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 22382 | }, | 43177 | }, |
| 22383 | .dst_temps = .{.mem}, | 43178 | .dst_temps = .{.{ .ref = .src0 }}, |
| 22384 | .clobbers = .{ .eflags = true }, | 43179 | .clobbers = .{ .eflags = true }, |
| 22385 | .each = .{ .once = &.{ | 43180 | .each = .{ .once = &.{ |
| 22386 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ }, | 43181 | .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| 22387 | .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_size), ._, ._ }, | 43182 | .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| 22388 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 22389 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 22390 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 22391 | } }, | 43183 | } }, |
| 22392 | }, .{ | 43184 | }, .{ |
| 22393 | .required_features = .{ .x87, null, null, null }, | 43185 | .required_features = .{ .@"64bit", null, null, null }, |
| 22394 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 43186 | .src_constraints = .{ .any_signed_int, .any, .any }, |
| 22395 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, | 43187 | .dst_constraints = .{.{ .signed_int = .qword }}, |
| 22396 | .patterns = &.{ | 43188 | .patterns = &.{ |
| 22397 | .{ .src = .{ .to_mem, .none } }, | 43189 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22398 | }, | | |
| 22399 | .extra_temps = .{ | | |
| 22400 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 22401 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | | |
| 22402 | .unused, | | |
| 22403 | .unused, | | |
| 22404 | .unused, | | |
| 22405 | .unused, | | |
| 22406 | .unused, | | |
| 22407 | .unused, | | |
| 22408 | .unused, | | |
| 22409 | }, | 43190 | }, |
| 22410 | .dst_temps = .{.mem}, | 43191 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 22411 | .clobbers = .{ .eflags = true }, | 43192 | .clobbers = .{ .eflags = true }, |
| 22412 | .each = .{ .once = &.{ | 43193 | .each = .{ .once = &.{ |
| 22413 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43194 | .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ }, |
| 22414 | .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, | 43195 | .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| 22415 | .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 43196 | .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| 22416 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 22417 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 22418 | } }, | 43197 | } }, |
| 22419 | }, .{ | 43198 | }, .{ |
| 22420 | .required_features = .{ .avx, null, null, null }, | 43199 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 22421 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 43200 | .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any }, |
| 22422 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, | 43201 | .dst_constraints = .{.{ .unsigned_int = .qword }}, |
| 22423 | .patterns = &.{ | 43202 | .patterns = &.{ |
| 22424 | .{ .src = .{ .to_mem, .none } }, | 43203 | .{ .src = .{ .mem, .none, .none } }, |
| | 43204 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 22425 | }, | 43205 | }, |
| 22426 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | 43206 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 22427 | .extra_temps = .{ | 43207 | .clobbers = .{ .eflags = true }, |
| 22428 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 43208 | .each = .{ .once = &.{ |
| 22429 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, | 43209 | .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 22430 | .unused, | 43210 | .{ ._, ._, .bzhi, .dst0q, .src0q, .dst0q, ._ }, |
| 22431 | .unused, | 43211 | } }, |
| 22432 | .unused, | 43212 | }, .{ |
| 22433 | .unused, | 43213 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 22434 | .unused, | 43214 | .src_constraints = .{ .any_unsigned_int, .any, .any }, |
| 22435 | .unused, | 43215 | .dst_constraints = .{.{ .unsigned_int = .qword }}, |
| 22436 | .unused, | 43216 | .patterns = &.{ |
| | 43217 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22437 | }, | 43218 | }, |
| 22438 | .dst_temps = .{.{ .reg = .xmm0 }}, | 43219 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 22439 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43220 | .clobbers = .{ .eflags = true }, |
| 22440 | .each = .{ .once = &.{ | 43221 | .each = .{ .once = &.{ |
| 22441 | .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ }, | 43222 | .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 22442 | .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ }, | 43223 | .{ ._, ._, .bzhi, .dst0q, .mem(.src0q), .dst0q, ._ }, |
| 22443 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, | | |
| 22444 | } }, | 43224 | } }, |
| 22445 | }, .{ | 43225 | }, .{ |
| 22446 | .required_features = .{ .sse2, null, null, null }, | 43226 | .required_features = .{ .@"64bit", null, null, null }, |
| 22447 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 43227 | .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any }, |
| 22448 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, | 43228 | .dst_constraints = .{.{ .unsigned_int = .qword }}, |
| 22449 | .patterns = &.{ | 43229 | .patterns = &.{ |
| 22450 | .{ .src = .{ .to_mem, .none } }, | 43230 | .{ .src = .{ .mem, .none, .none } }, |
| | 43231 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 22451 | }, | 43232 | }, |
| 22452 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | 43233 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 22453 | .extra_temps = .{ | 43234 | .clobbers = .{ .eflags = true }, |
| 22454 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 43235 | .each = .{ .once = &.{ |
| 22455 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, | 43236 | .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ }, |
| 22456 | .unused, | 43237 | .{ ._, ._, .@"and", .dst0q, .src0q, ._, ._ }, |
| 22457 | .unused, | 43238 | } }, |
| 22458 | .unused, | 43239 | }, .{ |
| 22459 | .unused, | 43240 | .required_features = .{ .@"64bit", null, null, null }, |
| 22460 | .unused, | 43241 | .src_constraints = .{ .any_unsigned_int, .any, .any }, |
| 22461 | .unused, | 43242 | .dst_constraints = .{.{ .unsigned_int = .qword }}, |
| 22462 | .unused, | 43243 | .patterns = &.{ |
| | 43244 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22463 | }, | 43245 | }, |
| 22464 | .dst_temps = .{.{ .reg = .xmm0 }}, | 43246 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 22465 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43247 | .clobbers = .{ .eflags = true }, |
| 22466 | .each = .{ .once = &.{ | 43248 | .each = .{ .once = &.{ |
| 22467 | .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ }, | 43249 | .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ }, |
| 22468 | .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ }, | 43250 | .{ ._, ._, .@"and", .dst0q, .mem(.src0q), ._, ._ }, |
| 22469 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, | | |
| 22470 | } }, | 43251 | } }, |
| 22471 | }, .{ | 43252 | }, .{ |
| 22472 | .required_features = .{ .sse, null, null, null }, | 43253 | .required_features = .{ .@"64bit", null, null, null }, |
| 22473 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 43254 | .src_constraints = .{ .any_int, .any, .any }, |
| 22474 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, | 43255 | .dst_constraints = .{.{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }}, |
| 22475 | .patterns = &.{ | 43256 | .patterns = &.{ |
| 22476 | .{ .src = .{ .to_mem, .none } }, | 43257 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22477 | }, | 43258 | }, |
| 22478 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | | |
| 22479 | .extra_temps = .{ | 43259 | .extra_temps = .{ |
| 22480 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 43260 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 22481 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, | 43261 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 22482 | .unused, | 43262 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 22483 | .unused, | 43263 | .unused, |
| 22484 | .unused, | 43264 | .unused, |
| 22485 | .unused, | 43265 | .unused, |
| ... | @@ -22487,26 +43267,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22487,26 +43267,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22487 | .unused, | 43267 | .unused, |
| 22488 | .unused, | 43268 | .unused, |
| 22489 | }, | 43269 | }, |
| 22490 | .dst_temps = .{.{ .reg = .xmm0 }}, | 43270 | .dst_temps = .{.mem}, |
| 22491 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 22492 | .each = .{ .once = &.{ | 43271 | .each = .{ .once = &.{ |
| 22493 | .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ }, | 43272 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| 22494 | .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ }, | 43273 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 22495 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, | 43274 | .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ }, |
| | 43275 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 22496 | } }, | 43276 | } }, |
| 22497 | }, .{ | 43277 | }, .{ |
| 22498 | .required_features = .{ .avx, null, null, null }, | 43278 | .required_features = .{ .@"64bit", null, null, null }, |
| 22499 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 43279 | .src_constraints = .{ .any_signed_int, .any, .any }, |
| 22500 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 43280 | .dst_constraints = .{.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }}, |
| 22501 | .patterns = &.{ | 43281 | .patterns = &.{ |
| 22502 | .{ .src = .{ .to_mem, .none } }, | 43282 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22503 | }, | 43283 | }, |
| 22504 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | | |
| 22505 | .extra_temps = .{ | 43284 | .extra_temps = .{ |
| 22506 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43285 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 22507 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, | 43286 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 22508 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 43287 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 22509 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, | 43288 | .unused, |
| 22510 | .unused, | 43289 | .unused, |
| 22511 | .unused, | 43290 | .unused, |
| 22512 | .unused, | 43291 | .unused, |
| ... | @@ -22514,29 +43293,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22514,29 +43293,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22514 | .unused, | 43293 | .unused, |
| 22515 | }, | 43294 | }, |
| 22516 | .dst_temps = .{.mem}, | 43295 | .dst_temps = .{.mem}, |
| 22517 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43296 | .clobbers = .{ .eflags = true }, |
| 22518 | .each = .{ .once = &.{ | 43297 | .each = .{ .once = &.{ |
| 22519 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43298 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| 22520 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, | 43299 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 22521 | .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, | 43300 | .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, |
| 22522 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 43301 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 22523 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, | 43302 | .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ }, |
| 22524 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 43303 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ }, |
| 22525 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43304 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| | 43305 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, |
| 22526 | } }, | 43306 | } }, |
| 22527 | }, .{ | 43307 | }, .{ |
| 22528 | .required_features = .{ .sse4_1, null, null, null }, | 43308 | .required_features = .{ .@"64bit", null, null, null }, |
| 22529 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 43309 | .src_constraints = .{ .any_signed_int, .any, .any }, |
| 22530 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 43310 | .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }}, |
| 22531 | .patterns = &.{ | 43311 | .patterns = &.{ |
| 22532 | .{ .src = .{ .to_mem, .none } }, | 43312 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22533 | }, | 43313 | }, |
| 22534 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | | |
| 22535 | .extra_temps = .{ | 43314 | .extra_temps = .{ |
| 22536 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43315 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 22537 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, | 43316 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 22538 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 43317 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 22539 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, | 43318 | .unused, |
| 22540 | .unused, | 43319 | .unused, |
| 22541 | .unused, | 43320 | .unused, |
| 22542 | .unused, | 43321 | .unused, |
| ... | @@ -22544,91 +43323,86 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22544,91 +43323,86 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22544 | .unused, | 43323 | .unused, |
| 22545 | }, | 43324 | }, |
| 22546 | .dst_temps = .{.mem}, | 43325 | .dst_temps = .{.mem}, |
| 22547 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43326 | .clobbers = .{ .eflags = true }, |
| 22548 | .each = .{ .once = &.{ | 43327 | .each = .{ .once = &.{ |
| 22549 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43328 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| 22550 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, | 43329 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 22551 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, | 43330 | .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, |
| 22552 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 43331 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 22553 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, | 43332 | .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ }, |
| 22554 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 43333 | .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, |
| 22555 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43334 | .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, |
| | 43335 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ }, |
| | 43336 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| | 43337 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, |
| 22556 | } }, | 43338 | } }, |
| 22557 | }, .{ | 43339 | }, .{ |
| 22558 | .required_features = .{ .sse2, null, null, null }, | 43340 | .required_features = .{ .@"64bit", null, null, null }, |
| 22559 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 43341 | .src_constraints = .{ .any_signed_int, .any, .any }, |
| 22560 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 43342 | .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }}, |
| 22561 | .patterns = &.{ | 43343 | .patterns = &.{ |
| 22562 | .{ .src = .{ .to_mem, .none } }, | 43344 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22563 | }, | 43345 | }, |
| 22564 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | | |
| 22565 | .extra_temps = .{ | 43346 | .extra_temps = .{ |
| 22566 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43347 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 22567 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, | 43348 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 22568 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 43349 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 22569 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, | 43350 | .unused, |
| 22570 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 43351 | .unused, |
| 22571 | .unused, | 43352 | .unused, |
| 22572 | .unused, | 43353 | .unused, |
| 22573 | .unused, | 43354 | .unused, |
| 22574 | .unused, | 43355 | .unused, |
| 22575 | }, | 43356 | }, |
| 22576 | .dst_temps = .{.mem}, | 43357 | .dst_temps = .{.mem}, |
| 22577 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43358 | .clobbers = .{ .eflags = true }, |
| 22578 | .each = .{ .once = &.{ | 43359 | .each = .{ .once = &.{ |
| 22579 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43360 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| 22580 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, | 43361 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 22581 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, | 43362 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 22582 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 43363 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 22583 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, | 43364 | .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 22584 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, | 43365 | .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, |
| 22585 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 43366 | .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, |
| 22586 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43367 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, |
| 22587 | } }, | 43368 | } }, |
| 22588 | }, .{ | 43369 | }, .{ |
| 22589 | .required_features = .{ .sse, null, null, null }, | 43370 | .required_features = .{ .@"64bit", null, null, null }, |
| 22590 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 43371 | .src_constraints = .{ .any_unsigned_int, .any, .any }, |
| 22591 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 43372 | .dst_constraints = .{.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 22592 | .patterns = &.{ | 43373 | .patterns = &.{ |
| 22593 | .{ .src = .{ .to_mem, .none } }, | 43374 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22594 | }, | 43375 | }, |
| 22595 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | | |
| 22596 | .extra_temps = .{ | 43376 | .extra_temps = .{ |
| 22597 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43377 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 22598 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, | 43378 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 22599 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 43379 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 22600 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, | 43380 | .unused, |
| 22601 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 43381 | .unused, |
| 22602 | .unused, | 43382 | .unused, |
| 22603 | .unused, | 43383 | .unused, |
| 22604 | .unused, | 43384 | .unused, |
| 22605 | .unused, | 43385 | .unused, |
| 22606 | }, | 43386 | }, |
| 22607 | .dst_temps = .{.mem}, | 43387 | .dst_temps = .{.mem}, |
| 22608 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 22609 | .each = .{ .once = &.{ | 43388 | .each = .{ .once = &.{ |
| 22610 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43389 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| 22611 | .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, | 43390 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 22612 | .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, | 43391 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 22613 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 43392 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 22614 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ }, | 43393 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, |
| 22615 | .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ }, | | |
| 22616 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, | | |
| 22617 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 22618 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 22619 | } }, | 43394 | } }, |
| 22620 | }, .{ | 43395 | }, .{ |
| 22621 | .required_features = .{ .x87, null, null, null }, | 43396 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 22622 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 43397 | .src_constraints = .{ .any_unsigned_int, .any, .any }, |
| 22623 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | 43398 | .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 22624 | .patterns = &.{ | 43399 | .patterns = &.{ |
| 22625 | .{ .src = .{ .mem, .none } }, | 43400 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22626 | .{ .src = .{ .to_x87, .none } }, | | |
| 22627 | }, | 43401 | }, |
| 22628 | .extra_temps = .{ | 43402 | .extra_temps = .{ |
| 22629 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 43403 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 22630 | .unused, | 43404 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 22631 | .unused, | 43405 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 22632 | .unused, | 43406 | .unused, |
| 22633 | .unused, | 43407 | .unused, |
| 22634 | .unused, | 43408 | .unused, |
| ... | @@ -22637,21 +43411,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22637,21 +43411,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22637 | .unused, | 43411 | .unused, |
| 22638 | }, | 43412 | }, |
| 22639 | .dst_temps = .{.mem}, | 43413 | .dst_temps = .{.mem}, |
| | 43414 | .clobbers = .{ .eflags = true }, |
| 22640 | .each = .{ .once = &.{ | 43415 | .each = .{ .once = &.{ |
| 22641 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, | 43416 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| 22642 | .{ ._, .f_p, .st, .dst0d, ._, ._, ._ }, | 43417 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 43418 | .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, |
| | 43419 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 43420 | .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ }, |
| | 43421 | .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -16), .tmp2q, ._ }, |
| | 43422 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp2q, ._, ._ }, |
| | 43423 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, |
| 22643 | } }, | 43424 | } }, |
| 22644 | }, .{ | 43425 | }, .{ |
| 22645 | .required_features = .{ .x87, null, null, null }, | 43426 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 22646 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 43427 | .src_constraints = .{ .any_unsigned_int, .any, .any }, |
| 22647 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, | 43428 | .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }}, |
| 22648 | .patterns = &.{ | 43429 | .patterns = &.{ |
| 22649 | .{ .src = .{ .to_mem, .none } }, | 43430 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22650 | }, | 43431 | }, |
| 22651 | .extra_temps = .{ | 43432 | .extra_temps = .{ |
| 22652 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43433 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 22653 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 43434 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 22654 | .unused, | 43435 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 22655 | .unused, | 43436 | .unused, |
| 22656 | .unused, | 43437 | .unused, |
| 22657 | .unused, | 43438 | .unused, |
| ... | @@ -22662,24 +43443,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22662,24 +43443,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22662 | .dst_temps = .{.mem}, | 43443 | .dst_temps = .{.mem}, |
| 22663 | .clobbers = .{ .eflags = true }, | 43444 | .clobbers = .{ .eflags = true }, |
| 22664 | .each = .{ .once = &.{ | 43445 | .each = .{ .once = &.{ |
| 22665 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43446 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| 22666 | .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, | 43447 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 22667 | .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 43448 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 22668 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 43449 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 22669 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43450 | .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ }, |
| | 43451 | .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -8), .tmp2q, ._ }, |
| | 43452 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ }, |
| 22670 | } }, | 43453 | } }, |
| 22671 | }, .{ | 43454 | }, .{ |
| 22672 | .required_features = .{ .x87, null, null, null }, | 43455 | .required_features = .{ .@"64bit", null, null, null }, |
| 22673 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 43456 | .src_constraints = .{ .any_unsigned_int, .any, .any }, |
| 22674 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | 43457 | .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 22675 | .patterns = &.{ | 43458 | .patterns = &.{ |
| 22676 | .{ .src = .{ .mem, .none } }, | 43459 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22677 | .{ .src = .{ .to_x87, .none } }, | | |
| 22678 | }, | 43460 | }, |
| 22679 | .extra_temps = .{ | 43461 | .extra_temps = .{ |
| 22680 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 43462 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 22681 | .unused, | 43463 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 22682 | .unused, | 43464 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 22683 | .unused, | 43465 | .unused, |
| 22684 | .unused, | 43466 | .unused, |
| 22685 | .unused, | 43467 | .unused, |
| ... | @@ -22688,21 +43470,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22688,21 +43470,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22688 | .unused, | 43470 | .unused, |
| 22689 | }, | 43471 | }, |
| 22690 | .dst_temps = .{.mem}, | 43472 | .dst_temps = .{.mem}, |
| | 43473 | .clobbers = .{ .eflags = true }, |
| 22691 | .each = .{ .once = &.{ | 43474 | .each = .{ .once = &.{ |
| 22692 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, | 43475 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| 22693 | .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, | 43476 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| | 43477 | .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, |
| | 43478 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 43479 | .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ }, |
| | 43480 | .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ }, |
| | 43481 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ }, |
| | 43482 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, |
| 22694 | } }, | 43483 | } }, |
| 22695 | }, .{ | 43484 | }, .{ |
| 22696 | .required_features = .{ .x87, null, null, null }, | 43485 | .required_features = .{ .@"64bit", null, null, null }, |
| 22697 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 43486 | .src_constraints = .{ .any_unsigned_int, .any, .any }, |
| 22698 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, | 43487 | .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }}, |
| 22699 | .patterns = &.{ | 43488 | .patterns = &.{ |
| 22700 | .{ .src = .{ .to_mem, .none } }, | 43489 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22701 | }, | 43490 | }, |
| 22702 | .extra_temps = .{ | 43491 | .extra_temps = .{ |
| 22703 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43492 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 22704 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 43493 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 22705 | .unused, | 43494 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 22706 | .unused, | 43495 | .unused, |
| 22707 | .unused, | 43496 | .unused, |
| 22708 | .unused, | 43497 | .unused, |
| ... | @@ -22713,24 +43502,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22713,24 +43502,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22713 | .dst_temps = .{.mem}, | 43502 | .dst_temps = .{.mem}, |
| 22714 | .clobbers = .{ .eflags = true }, | 43503 | .clobbers = .{ .eflags = true }, |
| 22715 | .each = .{ .once = &.{ | 43504 | .each = .{ .once = &.{ |
| 22716 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43505 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, |
| 22717 | .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, | 43506 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 22718 | .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 43507 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 22719 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 43508 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 22720 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43509 | .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ }, |
| | 43510 | .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| | 43511 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, |
| 22721 | } }, | 43512 | } }, |
| 22722 | }, .{ | 43513 | }, .{ |
| 22723 | .required_features = .{ .sse, null, null, null }, | 43514 | .required_features = .{ .avx, null, null, null }, |
| 22724 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43515 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 22725 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, | 43516 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }}, |
| 22726 | .patterns = &.{ | 43517 | .patterns = &.{ |
| 22727 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, | 43518 | .{ .src = .{ .to_sse, .none, .none } }, |
| 22728 | }, | 43519 | }, |
| 22729 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22730 | .extra_temps = .{ | 43520 | .extra_temps = .{ |
| 22731 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, | 43521 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 22732 | .unused, | 43522 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 22733 | .unused, | 43523 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 22734 | .unused, | 43524 | .unused, |
| 22735 | .unused, | 43525 | .unused, |
| 22736 | .unused, | 43526 | .unused, |
| ... | @@ -22738,23 +43528,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22738,23 +43528,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22738 | .unused, | 43528 | .unused, |
| 22739 | .unused, | 43529 | .unused, |
| 22740 | }, | 43530 | }, |
| 22741 | .dst_temps = .{.{ .ref = .src0 }}, | 43531 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 22742 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 22743 | .each = .{ .once = &.{ | 43532 | .each = .{ .once = &.{ |
| 22744 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 43533 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 43534 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| | 43535 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| | 43536 | .{ ._, .vp_b, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ }, |
| | 43537 | .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ }, |
| 22745 | } }, | 43538 | } }, |
| 22746 | }, .{ | 43539 | }, .{ |
| 22747 | .required_features = .{ .avx, null, null, null }, | 43540 | .required_features = .{ .avx, null, null, null }, |
| 22748 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43541 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 22749 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 43542 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }}, |
| 22750 | .patterns = &.{ | 43543 | .patterns = &.{ |
| 22751 | .{ .src = .{ .to_mem, .none } }, | 43544 | .{ .src = .{ .to_sse, .none, .none } }, |
| 22752 | }, | 43545 | }, |
| 22753 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22754 | .extra_temps = .{ | 43546 | .extra_temps = .{ |
| 22755 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43547 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 22756 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 43548 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 22757 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, | 43549 | .unused, |
| 22758 | .unused, | 43550 | .unused, |
| 22759 | .unused, | 43551 | .unused, |
| 22760 | .unused, | 43552 | .unused, |
| ... | @@ -22762,28 +43554,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22762,28 +43554,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22762 | .unused, | 43554 | .unused, |
| 22763 | .unused, | 43555 | .unused, |
| 22764 | }, | 43556 | }, |
| 22765 | .dst_temps = .{.mem}, | 43557 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 22766 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 22767 | .each = .{ .once = &.{ | 43558 | .each = .{ .once = &.{ |
| 22768 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43559 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 22769 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, | 43560 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 22770 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | | |
| 22771 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, | | |
| 22772 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 22773 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 22774 | } }, | 43561 | } }, |
| 22775 | }, .{ | 43562 | }, .{ |
| 22776 | .required_features = .{ .sse4_1, null, null, null }, | 43563 | .required_features = .{ .sse2, null, null, null }, |
| 22777 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43564 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 22778 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 43565 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }}, |
| 22779 | .patterns = &.{ | 43566 | .patterns = &.{ |
| 22780 | .{ .src = .{ .to_mem, .none } }, | 43567 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 22781 | }, | 43568 | }, |
| 22782 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22783 | .extra_temps = .{ | 43569 | .extra_temps = .{ |
| 22784 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43570 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 22785 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 43571 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 22786 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, | 43572 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 22787 | .unused, | 43573 | .unused, |
| 22788 | .unused, | 43574 | .unused, |
| 22789 | .unused, | 43575 | .unused, |
| ... | @@ -22791,89 +43577,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22791,89 +43577,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22791 | .unused, | 43577 | .unused, |
| 22792 | .unused, | 43578 | .unused, |
| 22793 | }, | 43579 | }, |
| 22794 | .dst_temps = .{.mem}, | 43580 | .dst_temps = .{.{ .ref = .src0 }}, |
| 22795 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 22796 | .each = .{ .once = &.{ | 43581 | .each = .{ .once = &.{ |
| 22797 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43582 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 22798 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, | 43583 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 22799 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 43584 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| 22800 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, | 43585 | .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 22801 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 43586 | .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 22802 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 22803 | } }, | 43587 | } }, |
| 22804 | }, .{ | 43588 | }, .{ |
| 22805 | .required_features = .{ .sse2, null, null, null }, | 43589 | .required_features = .{ .sse2, null, null, null }, |
| 22806 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43590 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 22807 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 43591 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }}, |
| 22808 | .patterns = &.{ | 43592 | .patterns = &.{ |
| 22809 | .{ .src = .{ .to_mem, .none } }, | 43593 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 22810 | }, | 43594 | }, |
| 22811 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22812 | .extra_temps = .{ | 43595 | .extra_temps = .{ |
| 22813 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43596 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 22814 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 43597 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 22815 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, | 43598 | .unused, |
| 22816 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 43599 | .unused, |
| 22817 | .unused, | 43600 | .unused, |
| 22818 | .unused, | 43601 | .unused, |
| 22819 | .unused, | 43602 | .unused, |
| 22820 | .unused, | 43603 | .unused, |
| 22821 | .unused, | 43604 | .unused, |
| 22822 | }, | 43605 | }, |
| 22823 | .dst_temps = .{.mem}, | 43606 | .dst_temps = .{.{ .ref = .src0 }}, |
| 22824 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 22825 | .each = .{ .once = &.{ | 43607 | .each = .{ .once = &.{ |
| 22826 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43608 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 22827 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, | 43609 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 22828 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | | |
| 22829 | .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, | | |
| 22830 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, | | |
| 22831 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 22832 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 22833 | } }, | 43610 | } }, |
| 22834 | }, .{ | 43611 | }, .{ |
| 22835 | .required_features = .{ .sse, null, null, null }, | 43612 | .required_features = .{ .sse, null, null, null }, |
| 22836 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43613 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 22837 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, | 43614 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }}, |
| 22838 | .patterns = &.{ | 43615 | .patterns = &.{ |
| 22839 | .{ .src = .{ .to_mem, .none } }, | 43616 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 22840 | }, | 43617 | }, |
| 22841 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22842 | .extra_temps = .{ | 43618 | .extra_temps = .{ |
| 22843 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43619 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 22844 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, | 43620 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 22845 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, | 43621 | .unused, |
| 22846 | .{ .type = .f32, .kind = .mem }, | 43622 | .unused, |
| 22847 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 43623 | .unused, |
| 22848 | .unused, | 43624 | .unused, |
| 22849 | .unused, | 43625 | .unused, |
| 22850 | .unused, | 43626 | .unused, |
| 22851 | .unused, | 43627 | .unused, |
| 22852 | }, | 43628 | }, |
| 22853 | .dst_temps = .{.mem}, | 43629 | .dst_temps = .{.{ .ref = .src0 }}, |
| 22854 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 22855 | .each = .{ .once = &.{ | 43630 | .each = .{ .once = &.{ |
| 22856 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43631 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 22857 | .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, | 43632 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 22858 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | | |
| 22859 | .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ }, | | |
| 22860 | .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ }, | | |
| 22861 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, | | |
| 22862 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 22863 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 22864 | } }, | 43633 | } }, |
| 22865 | }, .{ | 43634 | }, .{ |
| 22866 | .required_features = .{ .sse, null, null, null }, | 43635 | .required_features = .{ .avx2, null, null, null }, |
| 22867 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43636 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| 22868 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | 43637 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }}, |
| 22869 | .patterns = &.{ | 43638 | .patterns = &.{ |
| 22870 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, | 43639 | .{ .src = .{ .to_sse, .none, .none } }, |
| 22871 | }, | 43640 | }, |
| 22872 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22873 | .extra_temps = .{ | 43641 | .extra_temps = .{ |
| 22874 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } }, | 43642 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 22875 | .unused, | 43643 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 22876 | .unused, | 43644 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 22877 | .unused, | 43645 | .unused, |
| 22878 | .unused, | 43646 | .unused, |
| 22879 | .unused, | 43647 | .unused, |
| ... | @@ -22881,23 +43649,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22881,23 +43649,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22881 | .unused, | 43649 | .unused, |
| 22882 | .unused, | 43650 | .unused, |
| 22883 | }, | 43651 | }, |
| 22884 | .dst_temps = .{.{ .ref = .src0 }}, | 43652 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 22885 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 22886 | .each = .{ .once = &.{ | 43653 | .each = .{ .once = &.{ |
| 22887 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 43654 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 43655 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| | 43656 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| | 43657 | .{ ._, .vp_b, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ }, |
| | 43658 | .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ }, |
| 22888 | } }, | 43659 | } }, |
| 22889 | }, .{ | 43660 | }, .{ |
| 22890 | .required_features = .{ .avx, null, null, null }, | 43661 | .required_features = .{ .avx2, null, null, null }, |
| 22891 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43662 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| 22892 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, | 43663 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }}, |
| 22893 | .patterns = &.{ | 43664 | .patterns = &.{ |
| 22894 | .{ .src = .{ .to_mem, .none } }, | 43665 | .{ .src = .{ .to_sse, .none, .none } }, |
| 22895 | }, | 43666 | }, |
| 22896 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22897 | .extra_temps = .{ | 43667 | .extra_temps = .{ |
| 22898 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43668 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 22899 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 43669 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 22900 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } }, | 43670 | .unused, |
| 22901 | .unused, | 43671 | .unused, |
| 22902 | .unused, | 43672 | .unused, |
| 22903 | .unused, | 43673 | .unused, |
| ... | @@ -22905,58 +43675,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22905,58 +43675,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22905 | .unused, | 43675 | .unused, |
| 22906 | .unused, | 43676 | .unused, |
| 22907 | }, | 43677 | }, |
| 22908 | .dst_temps = .{.mem}, | 43678 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 22909 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 22910 | .each = .{ .once = &.{ | 43679 | .each = .{ .once = &.{ |
| 22911 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43680 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 22912 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, | 43681 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 22913 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | | |
| 22914 | .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | | |
| 22915 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 22916 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 22917 | } }, | 43682 | } }, |
| 22918 | }, .{ | 43683 | }, .{ |
| 22919 | .required_features = .{ .sse2, null, null, null }, | 43684 | .required_features = .{ .avx2, null, null, null }, |
| 22920 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43685 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| 22921 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, | 43686 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }}, |
| 22922 | .patterns = &.{ | 43687 | .patterns = &.{ |
| 22923 | .{ .src = .{ .to_mem, .none } }, | 43688 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22924 | }, | 43689 | }, |
| 22925 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22926 | .extra_temps = .{ | 43690 | .extra_temps = .{ |
| 22927 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43691 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 22928 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 43692 | .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, |
| 22929 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } }, | 43693 | .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, |
| 22930 | .unused, | 43694 | .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, |
| 22931 | .unused, | 43695 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 22932 | .unused, | 43696 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 22933 | .unused, | 43697 | .unused, |
| 22934 | .unused, | 43698 | .unused, |
| 22935 | .unused, | 43699 | .unused, |
| 22936 | }, | 43700 | }, |
| 22937 | .dst_temps = .{.mem}, | 43701 | .dst_temps = .{.mem}, |
| 22938 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43702 | .clobbers = .{ .eflags = true }, |
| 22939 | .each = .{ .once = &.{ | 43703 | .each = .{ .once = &.{ |
| | 43704 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| | 43705 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| | 43706 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| | 43707 | .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| 22940 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43708 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 22941 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, | 43709 | .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| 22942 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 43710 | .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ }, |
| 22943 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 43711 | .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ }, |
| 22944 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 43712 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ }, |
| | 43713 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 22945 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43714 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22946 | } }, | 43715 | } }, |
| 22947 | }, .{ | 43716 | }, .{ |
| 22948 | .required_features = .{ .sse, null, null, null }, | 43717 | .required_features = .{ .avx2, null, null, null }, |
| 22949 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43718 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| 22950 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, | 43719 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }}, |
| 22951 | .patterns = &.{ | 43720 | .patterns = &.{ |
| 22952 | .{ .src = .{ .to_mem, .none } }, | 43721 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22953 | }, | 43722 | }, |
| 22954 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22955 | .extra_temps = .{ | 43723 | .extra_temps = .{ |
| 22956 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43724 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 22957 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 43725 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| 22958 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } }, | 43726 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| 22959 | .unused, | 43727 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 22960 | .unused, | 43728 | .unused, |
| 22961 | .unused, | 43729 | .unused, |
| 22962 | .unused, | 43730 | .unused, |
| ... | @@ -22964,52 +43732,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22964,52 +43732,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22964 | .unused, | 43732 | .unused, |
| 22965 | }, | 43733 | }, |
| 22966 | .dst_temps = .{.mem}, | 43734 | .dst_temps = .{.mem}, |
| 22967 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43735 | .clobbers = .{ .eflags = true }, |
| 22968 | .each = .{ .once = &.{ | 43736 | .each = .{ .once = &.{ |
| | 43737 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 43738 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| 22969 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43739 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 22970 | .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, | 43740 | .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| 22971 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 43741 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| 22972 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 43742 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 22973 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 22974 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43743 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22975 | } }, | 43744 | } }, |
| 22976 | }, .{ | 43745 | }, .{ |
| 22977 | .required_features = .{ .sse, null, null, null }, | 43746 | .required_features = .{ .avx, null, null, null }, |
| 22978 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43747 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 22979 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | 43748 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }}, |
| 22980 | .patterns = &.{ | 43749 | .patterns = &.{ |
| 22981 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, | 43750 | .{ .src = .{ .to_mem, .none, .none } }, |
| 22982 | }, | 43751 | }, |
| 22983 | .call_frame = .{ .alignment = .@"16" }, | | |
| 22984 | .extra_temps = .{ | 43752 | .extra_temps = .{ |
| 22985 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } }, | 43753 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 22986 | .unused, | 43754 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| 22987 | .unused, | 43755 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| 22988 | .unused, | 43756 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| 22989 | .unused, | 43757 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 22990 | .unused, | 43758 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 22991 | .unused, | 43759 | .unused, |
| 22992 | .unused, | 43760 | .unused, |
| 22993 | .unused, | 43761 | .unused, |
| 22994 | }, | 43762 | }, |
| 22995 | .dst_temps = .{.{ .ref = .src0 }}, | 43763 | .dst_temps = .{.mem}, |
| 22996 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43764 | .clobbers = .{ .eflags = true }, |
| 22997 | .each = .{ .once = &.{ | 43765 | .each = .{ .once = &.{ |
| 22998 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 43766 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| | 43767 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 43768 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| | 43769 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| | 43770 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 43771 | .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| | 43772 | .{ ._, .vp_b, .add, .tmp3x, .tmp3x, .tmp2x, ._ }, |
| | 43773 | .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ }, |
| | 43774 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 43775 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 43776 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22999 | } }, | 43777 | } }, |
| 23000 | }, .{ | 43778 | }, .{ |
| 23001 | .required_features = .{ .avx, null, null, null }, | 43779 | .required_features = .{ .avx, null, null, null }, |
| 23002 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43780 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 23003 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, | 43781 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }}, |
| 23004 | .patterns = &.{ | 43782 | .patterns = &.{ |
| 23005 | .{ .src = .{ .to_mem, .none } }, | 43783 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23006 | }, | 43784 | }, |
| 23007 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23008 | .extra_temps = .{ | 43785 | .extra_temps = .{ |
| 23009 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43786 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23010 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 43787 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 23011 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } }, | 43788 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 23012 | .unused, | 43789 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 23013 | .unused, | 43790 | .unused, |
| 23014 | .unused, | 43791 | .unused, |
| 23015 | .unused, | 43792 | .unused, |
| ... | @@ -23017,57 +43794,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23017,57 +43794,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23017 | .unused, | 43794 | .unused, |
| 23018 | }, | 43795 | }, |
| 23019 | .dst_temps = .{.mem}, | 43796 | .dst_temps = .{.mem}, |
| 23020 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43797 | .clobbers = .{ .eflags = true }, |
| 23021 | .each = .{ .once = &.{ | 43798 | .each = .{ .once = &.{ |
| | 43799 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 43800 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 23022 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43801 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23023 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, | 43802 | .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| 23024 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 43803 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 23025 | .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 43804 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 23026 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 23027 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43805 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23028 | } }, | 43806 | } }, |
| 23029 | }, .{ | 43807 | }, .{ |
| 23030 | .required_features = .{ .sse2, null, null, null }, | 43808 | .required_features = .{ .sse2, null, null, null }, |
| 23031 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43809 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 23032 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, | 43810 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }}, |
| 23033 | .patterns = &.{ | 43811 | .patterns = &.{ |
| 23034 | .{ .src = .{ .to_mem, .none } }, | 43812 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23035 | }, | 43813 | }, |
| 23036 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23037 | .extra_temps = .{ | 43814 | .extra_temps = .{ |
| 23038 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43815 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23039 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 43816 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| 23040 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } }, | 43817 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| 23041 | .unused, | 43818 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| 23042 | .unused, | 43819 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 23043 | .unused, | 43820 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 23044 | .unused, | 43821 | .unused, |
| 23045 | .unused, | 43822 | .unused, |
| 23046 | .unused, | 43823 | .unused, |
| 23047 | }, | 43824 | }, |
| 23048 | .dst_temps = .{.mem}, | 43825 | .dst_temps = .{.mem}, |
| 23049 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43826 | .clobbers = .{ .eflags = true }, |
| 23050 | .each = .{ .once = &.{ | 43827 | .each = .{ .once = &.{ |
| | 43828 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| | 43829 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 43830 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| | 43831 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 23051 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43832 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23052 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, | 43833 | .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ }, |
| 23053 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 43834 | .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23054 | .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 43835 | .{ ._, .p_b, .add, .tmp3x, .tmp2x, ._, ._ }, |
| 23055 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 43836 | .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ }, |
| | 43837 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 43838 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 23056 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43839 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23057 | } }, | 43840 | } }, |
| 23058 | }, .{ | 43841 | }, .{ |
| 23059 | .required_features = .{ .sse, null, null, null }, | 43842 | .required_features = .{ .sse2, null, null, null }, |
| 23060 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43843 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 23061 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, | 43844 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }}, |
| 23062 | .patterns = &.{ | 43845 | .patterns = &.{ |
| 23063 | .{ .src = .{ .to_mem, .none } }, | 43846 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23064 | }, | 43847 | }, |
| 23065 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23066 | .extra_temps = .{ | 43848 | .extra_temps = .{ |
| 23067 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43849 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23068 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 43850 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 23069 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } }, | 43851 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 23070 | .unused, | 43852 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 23071 | .unused, | 43853 | .unused, |
| 23072 | .unused, | 43854 | .unused, |
| 23073 | .unused, | 43855 | .unused, |
| ... | @@ -23075,51 +43857,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23075,51 +43857,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23075 | .unused, | 43857 | .unused, |
| 23076 | }, | 43858 | }, |
| 23077 | .dst_temps = .{.mem}, | 43859 | .dst_temps = .{.mem}, |
| 23078 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43860 | .clobbers = .{ .eflags = true }, |
| 23079 | .each = .{ .once = &.{ | 43861 | .each = .{ .once = &.{ |
| | 43862 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 43863 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 23080 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43864 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23081 | .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, | 43865 | .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| 23082 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 43866 | .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23083 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 43867 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 23084 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 43868 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 23085 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43869 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23086 | } }, | 43870 | } }, |
| 23087 | }, .{ | 43871 | }, .{ |
| 23088 | .required_features = .{ .sse, null, null, null }, | 43872 | .required_features = .{ .sse, null, null, null }, |
| 23089 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43873 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 23090 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, | 43874 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }}, |
| 23091 | .patterns = &.{ | 43875 | .patterns = &.{ |
| 23092 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, | 43876 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23093 | }, | 43877 | }, |
| 23094 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23095 | .extra_temps = .{ | 43878 | .extra_temps = .{ |
| 23096 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } }, | 43879 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23097 | .unused, | 43880 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 23098 | .unused, | 43881 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 23099 | .unused, | 43882 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 23100 | .unused, | 43883 | .unused, |
| 23101 | .unused, | 43884 | .unused, |
| 23102 | .unused, | 43885 | .unused, |
| 23103 | .unused, | 43886 | .unused, |
| 23104 | .unused, | 43887 | .unused, |
| 23105 | }, | 43888 | }, |
| 23106 | .dst_temps = .{.{ .reg = .st0 }}, | 43889 | .dst_temps = .{.mem}, |
| 23107 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43890 | .clobbers = .{ .eflags = true }, |
| 23108 | .each = .{ .once = &.{ | 43891 | .each = .{ .once = &.{ |
| 23109 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 43892 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 43893 | .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 43894 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 43895 | .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, |
| | 43896 | .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 43897 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 43898 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 43899 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23110 | } }, | 43900 | } }, |
| 23111 | }, .{ | 43901 | }, .{ |
| 23112 | .required_features = .{ .avx, null, null, null }, | 43902 | .required_features = .{ .slow_incdec, null, null, null }, |
| 23113 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43903 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| 23114 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, | 43904 | .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }}, |
| 23115 | .patterns = &.{ | 43905 | .patterns = &.{ |
| 23116 | .{ .src = .{ .to_mem, .none } }, | 43906 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23117 | }, | 43907 | }, |
| 23118 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23119 | .extra_temps = .{ | 43908 | .extra_temps = .{ |
| 23120 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43909 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23121 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 43910 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 23122 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } }, | 43911 | .unused, |
| 23123 | .unused, | 43912 | .unused, |
| 23124 | .unused, | 43913 | .unused, |
| 23125 | .unused, | 43914 | .unused, |
| ... | @@ -23128,28 +43917,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23128,28 +43917,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23128 | .unused, | 43917 | .unused, |
| 23129 | }, | 43918 | }, |
| 23130 | .dst_temps = .{.mem}, | 43919 | .dst_temps = .{.mem}, |
| 23131 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43920 | .clobbers = .{ .eflags = true }, |
| 23132 | .each = .{ .once = &.{ | 43921 | .each = .{ .once = &.{ |
| 23133 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43922 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23134 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, | 43923 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23135 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 43924 | .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ }, |
| 23136 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, | 43925 | .{ ._, ._, .neg, .tmp1b, ._, ._, ._ }, |
| 23137 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 43926 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23138 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 43927 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 23139 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43928 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23140 | } }, | 43929 | } }, |
| 23141 | }, .{ | 43930 | }, .{ |
| 23142 | .required_features = .{ .sse2, null, null, null }, | 43931 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| 23143 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43932 | .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }}, |
| 23144 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, | | |
| 23145 | .patterns = &.{ | 43933 | .patterns = &.{ |
| 23146 | .{ .src = .{ .to_mem, .none } }, | 43934 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23147 | }, | 43935 | }, |
| 23148 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23149 | .extra_temps = .{ | 43936 | .extra_temps = .{ |
| 23150 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43937 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23151 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 43938 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 23152 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } }, | 43939 | .unused, |
| 23153 | .unused, | 43940 | .unused, |
| 23154 | .unused, | 43941 | .unused, |
| 23155 | .unused, | 43942 | .unused, |
| ... | @@ -23158,28 +43945,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23158,28 +43945,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23158 | .unused, | 43945 | .unused, |
| 23159 | }, | 43946 | }, |
| 23160 | .dst_temps = .{.mem}, | 43947 | .dst_temps = .{.mem}, |
| 23161 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43948 | .clobbers = .{ .eflags = true }, |
| 23162 | .each = .{ .once = &.{ | 43949 | .each = .{ .once = &.{ |
| 23163 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43950 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23164 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, | 43951 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23165 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 43952 | .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ }, |
| 23166 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, | 43953 | .{ ._, ._, .neg, .tmp1b, ._, ._, ._ }, |
| 23167 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 43954 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23168 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 43955 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 23169 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43956 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 23170 | } }, | 43957 | } }, |
| 23171 | }, .{ | 43958 | }, .{ |
| 23172 | .required_features = .{ .sse, null, null, null }, | 43959 | .required_features = .{ .slow_incdec, null, null, null }, |
| 23173 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 43960 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| 23174 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, | 43961 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, |
| 23175 | .patterns = &.{ | 43962 | .patterns = &.{ |
| 23176 | .{ .src = .{ .to_mem, .none } }, | 43963 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23177 | }, | 43964 | }, |
| 23178 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23179 | .extra_temps = .{ | 43965 | .extra_temps = .{ |
| 23180 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 43966 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23181 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, | 43967 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 23182 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } }, | 43968 | .unused, |
| 23183 | .unused, | 43969 | .unused, |
| 23184 | .unused, | 43970 | .unused, |
| 23185 | .unused, | 43971 | .unused, |
| ... | @@ -23188,77 +43974,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23188,77 +43974,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23188 | .unused, | 43974 | .unused, |
| 23189 | }, | 43975 | }, |
| 23190 | .dst_temps = .{.mem}, | 43976 | .dst_temps = .{.mem}, |
| 23191 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 43977 | .clobbers = .{ .eflags = true }, |
| 23192 | .each = .{ .once = &.{ | 43978 | .each = .{ .once = &.{ |
| 23193 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 43979 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23194 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, | 43980 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23195 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 43981 | .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 23196 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, | 43982 | .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 23197 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 43983 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23198 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 43984 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 23199 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 43985 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23200 | } }, | 43986 | } }, |
| 23201 | } }) catch |err| switch (err) { | | |
| 23202 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ | | |
| 23203 | @tagName(air_tag), | | |
| 23204 | ty_op.ty.toType().fmt(pt), | | |
| 23205 | cg.typeOf(ty_op.operand).fmt(pt), | | |
| 23206 | ops[0].tracking(cg), | | |
| 23207 | }), | | |
| 23208 | else => |e| return e, | | |
| 23209 | }; | | |
| 23210 | try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 23211 | }, | | |
| 23212 | .fpext => |air_tag| if (use_old) try cg.airFpext(inst) else { | | |
| 23213 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 23214 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 23215 | var res: [1]Temp = undefined; | | |
| 23216 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ | | |
| 23217 | .required_features = .{ .f16c, null, null, null }, | | |
| 23218 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, | | |
| 23219 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | | |
| 23220 | .patterns = &.{ | | |
| 23221 | .{ .src = .{ .to_sse, .none } }, | | |
| 23222 | }, | | |
| 23223 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 23224 | .each = .{ .once = &.{ | | |
| 23225 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | | |
| 23226 | } }, | | |
| 23227 | }, .{ | 43987 | }, .{ |
| 23228 | .required_features = .{ .f16c, null, null, null }, | 43988 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| 23229 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any }, | 43989 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, |
| 23230 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, | | |
| 23231 | .patterns = &.{ | | |
| 23232 | .{ .src = .{ .mem, .none } }, | | |
| 23233 | .{ .src = .{ .to_sse, .none } }, | | |
| 23234 | }, | | |
| 23235 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 23236 | .each = .{ .once = &.{ | | |
| 23237 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | | |
| 23238 | } }, | | |
| 23239 | }, .{ | | |
| 23240 | .required_features = .{ .f16c, null, null, null }, | | |
| 23241 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any }, | | |
| 23242 | .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }}, | | |
| 23243 | .patterns = &.{ | | |
| 23244 | .{ .src = .{ .mem, .none } }, | | |
| 23245 | .{ .src = .{ .to_sse, .none } }, | | |
| 23246 | }, | | |
| 23247 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 23248 | .each = .{ .once = &.{ | | |
| 23249 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, | | |
| 23250 | } }, | | |
| 23251 | }, .{ | | |
| 23252 | .required_features = .{ .sse, null, null, null }, | | |
| 23253 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, | | |
| 23254 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | | |
| 23255 | .patterns = &.{ | 43990 | .patterns = &.{ |
| 23256 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, | 43991 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23257 | }, | 43992 | }, |
| 23258 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23259 | .extra_temps = .{ | 43993 | .extra_temps = .{ |
| 23260 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } }, | 43994 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23261 | .unused, | 43995 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 23262 | .unused, | 43996 | .unused, |
| 23263 | .unused, | 43997 | .unused, |
| 23264 | .unused, | 43998 | .unused, |
| ... | @@ -23267,21 +44001,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23267,21 +44001,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23267 | .unused, | 44001 | .unused, |
| 23268 | .unused, | 44002 | .unused, |
| 23269 | }, | 44003 | }, |
| 23270 | .dst_temps = .{.{ .ref = .src0 }}, | 44004 | .dst_temps = .{.mem}, |
| 23271 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44005 | .clobbers = .{ .eflags = true }, |
| 23272 | .each = .{ .once = &.{ | 44006 | .each = .{ .once = &.{ |
| 23273 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 44007 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 44008 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 44009 | .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 44010 | .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 44011 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 44012 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 44013 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 23274 | } }, | 44014 | } }, |
| 23275 | }, .{ | 44015 | }, .{ |
| 23276 | .required_features = .{ .f16c, null, null, null }, | 44016 | .required_features = .{ .slow_incdec, null, null, null }, |
| 23277 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any }, | 44017 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| 23278 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }}, | 44018 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 23279 | .patterns = &.{ | 44019 | .patterns = &.{ |
| 23280 | .{ .src = .{ .to_mem, .none } }, | 44020 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23281 | }, | 44021 | }, |
| 23282 | .extra_temps = .{ | 44022 | .extra_temps = .{ |
| 23283 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44023 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23284 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, | 44024 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23285 | .unused, | 44025 | .unused, |
| 23286 | .unused, | 44026 | .unused, |
| 23287 | .unused, | 44027 | .unused, |
| ... | @@ -23293,24 +44033,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23293,24 +44033,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23293 | .dst_temps = .{.mem}, | 44033 | .dst_temps = .{.mem}, |
| 23294 | .clobbers = .{ .eflags = true }, | 44034 | .clobbers = .{ .eflags = true }, |
| 23295 | .each = .{ .once = &.{ | 44035 | .each = .{ .once = &.{ |
| 23296 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 44036 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23297 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 44037 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23298 | .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, | 44038 | .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, |
| 23299 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 44039 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 44040 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 23300 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44041 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23301 | } }, | 44042 | } }, |
| 23302 | }, .{ | 44043 | }, .{ |
| 23303 | .required_features = .{ .avx, null, null, null }, | 44044 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| 23304 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44045 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 23305 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, | | |
| 23306 | .patterns = &.{ | 44046 | .patterns = &.{ |
| 23307 | .{ .src = .{ .to_mem, .none } }, | 44047 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23308 | }, | 44048 | }, |
| 23309 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23310 | .extra_temps = .{ | 44049 | .extra_temps = .{ |
| 23311 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44050 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23312 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 44051 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23313 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } }, | 44052 | .unused, |
| 23314 | .unused, | 44053 | .unused, |
| 23315 | .unused, | 44054 | .unused, |
| 23316 | .unused, | 44055 | .unused, |
| ... | @@ -23319,28 +44058,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23319,28 +44058,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23319 | .unused, | 44058 | .unused, |
| 23320 | }, | 44059 | }, |
| 23321 | .dst_temps = .{.mem}, | 44060 | .dst_temps = .{.mem}, |
| 23322 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44061 | .clobbers = .{ .eflags = true }, |
| 23323 | .each = .{ .once = &.{ | 44062 | .each = .{ .once = &.{ |
| 23324 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44063 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23325 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, | 44064 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23326 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, | 44065 | .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, |
| 23327 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 44066 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23328 | .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 44067 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 23329 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 44068 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 23330 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 23331 | } }, | 44069 | } }, |
| 23332 | }, .{ | 44070 | }, .{ |
| 23333 | .required_features = .{ .sse2, null, null, null }, | 44071 | .required_features = .{ .slow_incdec, null, null, null }, |
| 23334 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44072 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 23335 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, | 44073 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, |
| 23336 | .patterns = &.{ | 44074 | .patterns = &.{ |
| 23337 | .{ .src = .{ .to_mem, .none } }, | 44075 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23338 | }, | 44076 | }, |
| 23339 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23340 | .extra_temps = .{ | 44077 | .extra_temps = .{ |
| 23341 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44078 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23342 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 44079 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23343 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } }, | 44080 | .unused, |
| 23344 | .unused, | 44081 | .unused, |
| 23345 | .unused, | 44082 | .unused, |
| 23346 | .unused, | 44083 | .unused, |
| ... | @@ -23349,96 +44086,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23349,96 +44086,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23349 | .unused, | 44086 | .unused, |
| 23350 | }, | 44087 | }, |
| 23351 | .dst_temps = .{.mem}, | 44088 | .dst_temps = .{.mem}, |
| 23352 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44089 | .clobbers = .{ .eflags = true }, |
| 23353 | .each = .{ .once = &.{ | 44090 | .each = .{ .once = &.{ |
| 23354 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44091 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23355 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, | 44092 | .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 23356 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, | 44093 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23357 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 44094 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 23358 | .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | | |
| 23359 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 23360 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44095 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23361 | } }, | 44096 | } }, |
| 23362 | }, .{ | 44097 | }, .{ |
| 23363 | .required_features = .{ .sse, null, null, null }, | 44098 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 23364 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44099 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, |
| 23365 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, | | |
| 23366 | .patterns = &.{ | 44100 | .patterns = &.{ |
| 23367 | .{ .src = .{ .to_mem, .none } }, | 44101 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23368 | }, | 44102 | }, |
| 23369 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23370 | .extra_temps = .{ | 44103 | .extra_temps = .{ |
| 23371 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44104 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23372 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 44105 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23373 | .{ .type = .f32, .kind = .mem }, | 44106 | .unused, |
| 23374 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 44107 | .unused, |
| 23375 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } }, | 44108 | .unused, |
| 23376 | .unused, | 44109 | .unused, |
| 23377 | .unused, | 44110 | .unused, |
| 23378 | .unused, | 44111 | .unused, |
| 23379 | .unused, | 44112 | .unused, |
| 23380 | }, | 44113 | }, |
| 23381 | .dst_temps = .{.mem}, | 44114 | .dst_temps = .{.mem}, |
| 23382 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44115 | .clobbers = .{ .eflags = true }, |
| 23383 | .each = .{ .once = &.{ | | |
| 23384 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | | |
| 23385 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, | | |
| 23386 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, | | |
| 23387 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, | | |
| 23388 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, | | |
| 23389 | .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, | | |
| 23390 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 23391 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 23392 | } }, | | |
| 23393 | }, .{ | | |
| 23394 | .required_features = .{ .f16c, null, null, null }, | | |
| 23395 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, | | |
| 23396 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | | |
| 23397 | .patterns = &.{ | | |
| 23398 | .{ .src = .{ .to_sse, .none } }, | | |
| 23399 | }, | | |
| 23400 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 23401 | .each = .{ .once = &.{ | | |
| 23402 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | | |
| 23403 | .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ }, | | |
| 23404 | } }, | | |
| 23405 | }, .{ | | |
| 23406 | .required_features = .{ .f16c, null, null, null }, | | |
| 23407 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .word } }, .any }, | | |
| 23408 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, | | |
| 23409 | .patterns = &.{ | | |
| 23410 | .{ .src = .{ .mem, .none } }, | | |
| 23411 | .{ .src = .{ .to_sse, .none } }, | | |
| 23412 | }, | | |
| 23413 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 23414 | .each = .{ .once = &.{ | | |
| 23415 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | | |
| 23416 | .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ }, | | |
| 23417 | } }, | | |
| 23418 | }, .{ | | |
| 23419 | .required_features = .{ .f16c, null, null, null }, | | |
| 23420 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any }, | | |
| 23421 | .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }}, | | |
| 23422 | .patterns = &.{ | | |
| 23423 | .{ .src = .{ .mem, .none } }, | | |
| 23424 | .{ .src = .{ .to_sse, .none } }, | | |
| 23425 | }, | | |
| 23426 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 23427 | .each = .{ .once = &.{ | 44116 | .each = .{ .once = &.{ |
| 23428 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 44117 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23429 | .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ }, | 44118 | .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 44119 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 44120 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 44121 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 23430 | } }, | 44122 | } }, |
| 23431 | }, .{ | 44123 | }, .{ |
| 23432 | .required_features = .{ .f16c, null, null, null }, | 44124 | .required_features = .{ .slow_incdec, null, null, null }, |
| 23433 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any }, | 44125 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 23434 | .dst_constraints = .{.{ .scalar_float = .{ .of = .zword, .is = .qword } }}, | 44126 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, |
| 23435 | .patterns = &.{ | 44127 | .patterns = &.{ |
| 23436 | .{ .src = .{ .mem, .none } }, | 44128 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23437 | .{ .src = .{ .to_sse, .none } }, | | |
| 23438 | }, | 44129 | }, |
| 23439 | .extra_temps = .{ | 44130 | .extra_temps = .{ |
| 23440 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, | 44131 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23441 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, | 44132 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 23442 | .unused, | 44133 | .unused, |
| 23443 | .unused, | 44134 | .unused, |
| 23444 | .unused, | 44135 | .unused, |
| ... | @@ -23448,25 +44139,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23448,25 +44139,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23448 | .unused, | 44139 | .unused, |
| 23449 | }, | 44140 | }, |
| 23450 | .dst_temps = .{.mem}, | 44141 | .dst_temps = .{.mem}, |
| | 44142 | .clobbers = .{ .eflags = true }, |
| 23451 | .each = .{ .once = &.{ | 44143 | .each = .{ .once = &.{ |
| 23452 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src0x, ._, ._ }, | 44144 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23453 | .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ }, | 44145 | .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 23454 | .{ ._, .v_f128, .extract, .tmp0x, .tmp0y, .ui(1), ._ }, | 44146 | .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 23455 | .{ ._, .v_pd, .mova, .mem(.dst0y), .tmp1y, ._, ._ }, | 44147 | .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 23456 | .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ }, | 44148 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23457 | .{ ._, .v_pd, .mova, .memd(.dst0y, 32), .tmp1y, ._, ._ }, | 44149 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 44150 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23458 | } }, | 44151 | } }, |
| 23459 | }, .{ | 44152 | }, .{ |
| 23460 | .required_features = .{ .sse, null, null, null }, | 44153 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 23461 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44154 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, |
| 23462 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | | |
| 23463 | .patterns = &.{ | 44155 | .patterns = &.{ |
| 23464 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, | 44156 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23465 | }, | 44157 | }, |
| 23466 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23467 | .extra_temps = .{ | 44158 | .extra_temps = .{ |
| 23468 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } }, | 44159 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23469 | .unused, | 44160 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 23470 | .unused, | 44161 | .unused, |
| 23471 | .unused, | 44162 | .unused, |
| 23472 | .unused, | 44163 | .unused, |
| ... | @@ -23475,22 +44166,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23475,22 +44166,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23475 | .unused, | 44166 | .unused, |
| 23476 | .unused, | 44167 | .unused, |
| 23477 | }, | 44168 | }, |
| 23478 | .dst_temps = .{.{ .ref = .src0 }}, | 44169 | .dst_temps = .{.mem}, |
| 23479 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44170 | .clobbers = .{ .eflags = true }, |
| 23480 | .each = .{ .once = &.{ | 44171 | .each = .{ .once = &.{ |
| 23481 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 44172 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 44173 | .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 44174 | .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 44175 | .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 44176 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 44177 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 44178 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 23482 | } }, | 44179 | } }, |
| 23483 | }, .{ | 44180 | }, .{ |
| 23484 | .required_features = .{ .f16c, null, null, null }, | 44181 | .required_features = .{ .slow_incdec, null, null, null }, |
| 23485 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any }, | 44182 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 23486 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }}, | 44183 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 23487 | .patterns = &.{ | 44184 | .patterns = &.{ |
| 23488 | .{ .src = .{ .to_mem, .none } }, | 44185 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23489 | }, | 44186 | }, |
| 23490 | .extra_temps = .{ | 44187 | .extra_temps = .{ |
| 23491 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44188 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23492 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, | 44189 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23493 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, | 44190 | .unused, |
| 23494 | .unused, | 44191 | .unused, |
| 23495 | .unused, | 44192 | .unused, |
| 23496 | .unused, | 44193 | .unused, |
| ... | @@ -23501,28 +44198,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23501,28 +44198,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23501 | .dst_temps = .{.mem}, | 44198 | .dst_temps = .{.mem}, |
| 23502 | .clobbers = .{ .eflags = true }, | 44199 | .clobbers = .{ .eflags = true }, |
| 23503 | .each = .{ .once = &.{ | 44200 | .each = .{ .once = &.{ |
| 23504 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 44201 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23505 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 44202 | .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 23506 | .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ }, | 44203 | .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, |
| 23507 | .{ ._, .v_f128, .extract, .tmp1x, .tmp1y, .ui(1), ._ }, | 44204 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23508 | .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp2y, ._, ._ }, | 44205 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 23509 | .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ }, | | |
| 23510 | .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_size, 32), .tmp2y, ._, ._ }, | | |
| 23511 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 23512 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44206 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23513 | } }, | 44207 | } }, |
| 23514 | }, .{ | 44208 | }, .{ |
| 23515 | .required_features = .{ .avx, null, null, null }, | 44209 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 23516 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44210 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 23517 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, | | |
| 23518 | .patterns = &.{ | 44211 | .patterns = &.{ |
| 23519 | .{ .src = .{ .to_mem, .none } }, | 44212 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23520 | }, | 44213 | }, |
| 23521 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23522 | .extra_temps = .{ | 44214 | .extra_temps = .{ |
| 23523 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44215 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23524 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 44216 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23525 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } }, | 44217 | .unused, |
| 23526 | .unused, | 44218 | .unused, |
| 23527 | .unused, | 44219 | .unused, |
| 23528 | .unused, | 44220 | .unused, |
| ... | @@ -23531,28 +44223,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23531,28 +44223,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23531 | .unused, | 44223 | .unused, |
| 23532 | }, | 44224 | }, |
| 23533 | .dst_temps = .{.mem}, | 44225 | .dst_temps = .{.mem}, |
| 23534 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44226 | .clobbers = .{ .eflags = true }, |
| 23535 | .each = .{ .once = &.{ | 44227 | .each = .{ .once = &.{ |
| 23536 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44228 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23537 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, | 44229 | .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 23538 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, | 44230 | .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, |
| 23539 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 44231 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23540 | .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 44232 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 23541 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 44233 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 23542 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 23543 | } }, | 44234 | } }, |
| 23544 | }, .{ | 44235 | }, .{ |
| 23545 | .required_features = .{ .sse2, null, null, null }, | 44236 | .required_features = .{ .slow_incdec, null, null, null }, |
| 23546 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44237 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 23547 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, | 44238 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, |
| 23548 | .patterns = &.{ | 44239 | .patterns = &.{ |
| 23549 | .{ .src = .{ .to_mem, .none } }, | 44240 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23550 | }, | 44241 | }, |
| 23551 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23552 | .extra_temps = .{ | 44242 | .extra_temps = .{ |
| 23553 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44243 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23554 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 44244 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23555 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } }, | 44245 | .unused, |
| 23556 | .unused, | 44246 | .unused, |
| 23557 | .unused, | 44247 | .unused, |
| 23558 | .unused, | 44248 | .unused, |
| ... | @@ -23561,58 +44251,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23561,58 +44251,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23561 | .unused, | 44251 | .unused, |
| 23562 | }, | 44252 | }, |
| 23563 | .dst_temps = .{.mem}, | 44253 | .dst_temps = .{.mem}, |
| 23564 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44254 | .clobbers = .{ .eflags = true }, |
| 23565 | .each = .{ .once = &.{ | 44255 | .each = .{ .once = &.{ |
| 23566 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44256 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23567 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, | 44257 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| 23568 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, | 44258 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23569 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 44259 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 23570 | .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | | |
| 23571 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 23572 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44260 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23573 | } }, | 44261 | } }, |
| 23574 | }, .{ | 44262 | }, .{ |
| 23575 | .required_features = .{ .sse, null, null, null }, | 44263 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 23576 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44264 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, |
| 23577 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, | | |
| 23578 | .patterns = &.{ | 44265 | .patterns = &.{ |
| 23579 | .{ .src = .{ .to_mem, .none } }, | 44266 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23580 | }, | 44267 | }, |
| 23581 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23582 | .extra_temps = .{ | 44268 | .extra_temps = .{ |
| 23583 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44269 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23584 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 44270 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23585 | .{ .type = .f32, .kind = .mem }, | 44271 | .unused, |
| 23586 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 44272 | .unused, |
| 23587 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } }, | 44273 | .unused, |
| 23588 | .unused, | 44274 | .unused, |
| 23589 | .unused, | 44275 | .unused, |
| 23590 | .unused, | 44276 | .unused, |
| 23591 | .unused, | 44277 | .unused, |
| 23592 | }, | 44278 | }, |
| 23593 | .dst_temps = .{.mem}, | 44279 | .dst_temps = .{.mem}, |
| 23594 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44280 | .clobbers = .{ .eflags = true }, |
| 23595 | .each = .{ .once = &.{ | 44281 | .each = .{ .once = &.{ |
| 23596 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44282 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23597 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, | 44283 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| 23598 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, | 44284 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23599 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, | 44285 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 23600 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, | 44286 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 23601 | .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, | | |
| 23602 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 23603 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 23604 | } }, | 44287 | } }, |
| 23605 | }, .{ | 44288 | }, .{ |
| 23606 | .required_features = .{ .f16c, .x87, null, null }, | 44289 | .required_features = .{ .slow_incdec, null, null, null }, |
| 23607 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44290 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 23608 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, | 44291 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, |
| 23609 | .patterns = &.{ | 44292 | .patterns = &.{ |
| 23610 | .{ .src = .{ .to_sse, .none } }, | 44293 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23611 | }, | 44294 | }, |
| 23612 | .extra_temps = .{ | 44295 | .extra_temps = .{ |
| 23613 | .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 44296 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23614 | .{ .type = .f32, .kind = .mem }, | 44297 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 23615 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 44298 | .unused, |
| 23616 | .unused, | 44299 | .unused, |
| 23617 | .unused, | 44300 | .unused, |
| 23618 | .unused, | 44301 | .unused, |
| ... | @@ -23620,24 +44303,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23620,24 +44303,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23620 | .unused, | 44303 | .unused, |
| 23621 | .unused, | 44304 | .unused, |
| 23622 | }, | 44305 | }, |
| 23623 | .dst_temps = .{.{ .rc = .x87 }}, | 44306 | .dst_temps = .{.mem}, |
| | 44307 | .clobbers = .{ .eflags = true }, |
| 23624 | .each = .{ .once = &.{ | 44308 | .each = .{ .once = &.{ |
| 23625 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ }, | 44309 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23626 | .{ ._, .v_ss, .mov, .mem(.tmp1d), .tmp0x, ._, ._ }, | 44310 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| 23627 | .{ ._, .f_, .ld, .mem(.tmp1d), ._, ._, ._ }, | 44311 | .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 23628 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, | 44312 | .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 44313 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 44314 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 44315 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23629 | } }, | 44316 | } }, |
| 23630 | }, .{ | 44317 | }, .{ |
| 23631 | .required_features = .{ .sse, null, null, null }, | 44318 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 23632 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44319 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, |
| 23633 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, | | |
| 23634 | .patterns = &.{ | 44320 | .patterns = &.{ |
| 23635 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, | 44321 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23636 | }, | 44322 | }, |
| 23637 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23638 | .extra_temps = .{ | 44323 | .extra_temps = .{ |
| 23639 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } }, | 44324 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23640 | .unused, | 44325 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 23641 | .unused, | 44326 | .unused, |
| 23642 | .unused, | 44327 | .unused, |
| 23643 | .unused, | 44328 | .unused, |
| ... | @@ -23646,23 +44331,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23646,23 +44331,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23646 | .unused, | 44331 | .unused, |
| 23647 | .unused, | 44332 | .unused, |
| 23648 | }, | 44333 | }, |
| 23649 | .dst_temps = .{.{ .reg = .st0 }}, | 44334 | .dst_temps = .{.mem}, |
| 23650 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44335 | .clobbers = .{ .eflags = true }, |
| 23651 | .each = .{ .once = &.{ | 44336 | .each = .{ .once = &.{ |
| 23652 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 44337 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 44338 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 44339 | .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 44340 | .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 44341 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 44342 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 44343 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 23653 | } }, | 44344 | } }, |
| 23654 | }, .{ | 44345 | }, .{ |
| 23655 | .required_features = .{ .avx, null, null, null }, | 44346 | .required_features = .{ .bmi2, .slow_incdec, null, null }, |
| 23656 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44347 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 23657 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, | 44348 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 23658 | .patterns = &.{ | 44349 | .patterns = &.{ |
| 23659 | .{ .src = .{ .to_mem, .none } }, | 44350 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23660 | }, | 44351 | }, |
| 23661 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23662 | .extra_temps = .{ | 44352 | .extra_temps = .{ |
| 23663 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44353 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23664 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 44354 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23665 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } }, | 44355 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23666 | .unused, | 44356 | .unused, |
| 23667 | .unused, | 44357 | .unused, |
| 23668 | .unused, | 44358 | .unused, |
| ... | @@ -23671,29 +44361,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23671,29 +44361,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23671 | .unused, | 44361 | .unused, |
| 23672 | }, | 44362 | }, |
| 23673 | .dst_temps = .{.mem}, | 44363 | .dst_temps = .{.mem}, |
| 23674 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44364 | .clobbers = .{ .eflags = true }, |
| 23675 | .each = .{ .once = &.{ | 44365 | .each = .{ .once = &.{ |
| 23676 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44366 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23677 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, | 44367 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 23678 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, | 44368 | .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| 23679 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 44369 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, |
| 23680 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, | 44370 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 23681 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, | | |
| 23682 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 23683 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44371 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23684 | } }, | 44372 | } }, |
| 23685 | }, .{ | 44373 | }, .{ |
| 23686 | .required_features = .{ .sse2, null, null, null }, | 44374 | .required_features = .{ .bmi2, null, null, null }, |
| 23687 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44375 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 23688 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, | 44376 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 23689 | .patterns = &.{ | 44377 | .patterns = &.{ |
| 23690 | .{ .src = .{ .to_mem, .none } }, | 44378 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23691 | }, | 44379 | }, |
| 23692 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23693 | .extra_temps = .{ | 44380 | .extra_temps = .{ |
| 23694 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44381 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23695 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 44382 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23696 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } }, | 44383 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23697 | .unused, | 44384 | .unused, |
| 23698 | .unused, | 44385 | .unused, |
| 23699 | .unused, | 44386 | .unused, |
| ... | @@ -23702,60 +44389,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23702,60 +44389,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23702 | .unused, | 44389 | .unused, |
| 23703 | }, | 44390 | }, |
| 23704 | .dst_temps = .{.mem}, | 44391 | .dst_temps = .{.mem}, |
| 23705 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44392 | .clobbers = .{ .eflags = true }, |
| 23706 | .each = .{ .once = &.{ | 44393 | .each = .{ .once = &.{ |
| 23707 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44394 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23708 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, | 44395 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 23709 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, | 44396 | .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| 23710 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 44397 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, |
| 23711 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, | 44398 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 23712 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, | 44399 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 23713 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 23714 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 23715 | } }, | 44400 | } }, |
| 23716 | }, .{ | 44401 | }, .{ |
| 23717 | .required_features = .{ .sse, null, null, null }, | 44402 | .required_features = .{ .slow_incdec, null, null, null }, |
| 23718 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44403 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 23719 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, | 44404 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 23720 | .patterns = &.{ | 44405 | .patterns = &.{ |
| 23721 | .{ .src = .{ .to_mem, .none } }, | 44406 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23722 | }, | 44407 | }, |
| 23723 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23724 | .extra_temps = .{ | 44408 | .extra_temps = .{ |
| 23725 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44409 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23726 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 44410 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23727 | .{ .type = .f32, .kind = .mem }, | 44411 | .unused, |
| 23728 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 44412 | .unused, |
| 23729 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } }, | 44413 | .unused, |
| 23730 | .unused, | 44414 | .unused, |
| 23731 | .unused, | 44415 | .unused, |
| 23732 | .unused, | 44416 | .unused, |
| 23733 | .unused, | 44417 | .unused, |
| 23734 | }, | 44418 | }, |
| 23735 | .dst_temps = .{.mem}, | 44419 | .dst_temps = .{.mem}, |
| 23736 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44420 | .clobbers = .{ .eflags = true }, |
| 23737 | .each = .{ .once = &.{ | 44421 | .each = .{ .once = &.{ |
| 23738 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44422 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23739 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, | 44423 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| 23740 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, | 44424 | .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, |
| 23741 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, | 44425 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23742 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, | 44426 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 23743 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, | | |
| 23744 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, | | |
| 23745 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 23746 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44427 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23747 | } }, | 44428 | } }, |
| 23748 | }, .{ | 44429 | }, .{ |
| 23749 | .required_features = .{ .sse, null, null, null }, | 44430 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 23750 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44431 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 23751 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, | | |
| 23752 | .patterns = &.{ | 44432 | .patterns = &.{ |
| 23753 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, | 44433 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23754 | }, | 44434 | }, |
| 23755 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23756 | .extra_temps = .{ | 44435 | .extra_temps = .{ |
| 23757 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } }, | 44436 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23758 | .unused, | 44437 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23759 | .unused, | 44438 | .unused, |
| 23760 | .unused, | 44439 | .unused, |
| 23761 | .unused, | 44440 | .unused, |
| ... | @@ -23764,23 +44443,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23764,23 +44443,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23764 | .unused, | 44443 | .unused, |
| 23765 | .unused, | 44444 | .unused, |
| 23766 | }, | 44445 | }, |
| 23767 | .dst_temps = .{.{ .ref = .src0 }}, | 44446 | .dst_temps = .{.mem}, |
| 23768 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44447 | .clobbers = .{ .eflags = true }, |
| 23769 | .each = .{ .once = &.{ | 44448 | .each = .{ .once = &.{ |
| 23770 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 44449 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 44450 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 44451 | .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, |
| | 44452 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 44453 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 44454 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 23771 | } }, | 44455 | } }, |
| 23772 | }, .{ | 44456 | }, .{ |
| 23773 | .required_features = .{ .avx, null, null, null }, | 44457 | .required_features = .{ .slow_incdec, null, null, null }, |
| 23774 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44458 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 23775 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, | 44459 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, |
| 23776 | .patterns = &.{ | 44460 | .patterns = &.{ |
| 23777 | .{ .src = .{ .to_mem, .none } }, | 44461 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23778 | }, | 44462 | }, |
| 23779 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23780 | .extra_temps = .{ | 44463 | .extra_temps = .{ |
| 23781 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44464 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23782 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 44465 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23783 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } }, | 44466 | .unused, |
| 23784 | .unused, | 44467 | .unused, |
| 23785 | .unused, | 44468 | .unused, |
| 23786 | .unused, | 44469 | .unused, |
| ... | @@ -23789,28 +44472,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23789,28 +44472,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23789 | .unused, | 44472 | .unused, |
| 23790 | }, | 44473 | }, |
| 23791 | .dst_temps = .{.mem}, | 44474 | .dst_temps = .{.mem}, |
| 23792 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44475 | .clobbers = .{ .eflags = true }, |
| 23793 | .each = .{ .once = &.{ | 44476 | .each = .{ .once = &.{ |
| 23794 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44477 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23795 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, | 44478 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| 23796 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, | 44479 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23797 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 44480 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 23798 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | | |
| 23799 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 23800 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44481 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23801 | } }, | 44482 | } }, |
| 23802 | }, .{ | 44483 | }, .{ |
| 23803 | .required_features = .{ .sse2, null, null, null }, | 44484 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 23804 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44485 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, |
| 23805 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, | | |
| 23806 | .patterns = &.{ | 44486 | .patterns = &.{ |
| 23807 | .{ .src = .{ .to_mem, .none } }, | 44487 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23808 | }, | 44488 | }, |
| 23809 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23810 | .extra_temps = .{ | 44489 | .extra_temps = .{ |
| 23811 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44490 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23812 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 44491 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23813 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } }, | 44492 | .unused, |
| 23814 | .unused, | 44493 | .unused, |
| 23815 | .unused, | 44494 | .unused, |
| 23816 | .unused, | 44495 | .unused, |
| ... | @@ -23819,93 +44498,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23819,93 +44498,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23819 | .unused, | 44498 | .unused, |
| 23820 | }, | 44499 | }, |
| 23821 | .dst_temps = .{.mem}, | 44500 | .dst_temps = .{.mem}, |
| 23822 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44501 | .clobbers = .{ .eflags = true }, |
| 23823 | .each = .{ .once = &.{ | 44502 | .each = .{ .once = &.{ |
| 23824 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44503 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23825 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, | 44504 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| 23826 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, | 44505 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23827 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 44506 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 23828 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 44507 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 23829 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 23830 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 23831 | } }, | 44508 | } }, |
| 23832 | }, .{ | 44509 | }, .{ |
| 23833 | .required_features = .{ .sse, null, null, null }, | 44510 | .required_features = .{ .slow_incdec, null, null, null }, |
| 23834 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, | 44511 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 23835 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, | 44512 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, |
| 23836 | .patterns = &.{ | 44513 | .patterns = &.{ |
| 23837 | .{ .src = .{ .to_mem, .none } }, | 44514 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23838 | }, | 44515 | }, |
| 23839 | .call_frame = .{ .alignment = .@"16" }, | | |
| 23840 | .extra_temps = .{ | 44516 | .extra_temps = .{ |
| 23841 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44517 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23842 | .{ .type = .f16, .kind = .{ .reg = .ax } }, | 44518 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 23843 | .{ .type = .f32, .kind = .mem }, | 44519 | .unused, |
| 23844 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 44520 | .unused, |
| 23845 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } }, | 44521 | .unused, |
| 23846 | .unused, | 44522 | .unused, |
| 23847 | .unused, | 44523 | .unused, |
| 23848 | .unused, | 44524 | .unused, |
| 23849 | .unused, | 44525 | .unused, |
| 23850 | }, | 44526 | }, |
| 23851 | .dst_temps = .{.mem}, | 44527 | .dst_temps = .{.mem}, |
| 23852 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44528 | .clobbers = .{ .eflags = true }, |
| 23853 | .each = .{ .once = &.{ | 44529 | .each = .{ .once = &.{ |
| 23854 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44530 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23855 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, | 44531 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| 23856 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, | 44532 | .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 23857 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, | 44533 | .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 23858 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, | 44534 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23859 | .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, | 44535 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 23860 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | | |
| 23861 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44536 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23862 | } }, | 44537 | } }, |
| 23863 | }, .{ | 44538 | }, .{ |
| 23864 | .required_features = .{ .avx, null, null, null }, | 44539 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 23865 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 44540 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, |
| 23866 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | | |
| 23867 | .patterns = &.{ | | |
| 23868 | .{ .src = .{ .mem, .none } }, | | |
| 23869 | }, | | |
| 23870 | .dst_temps = .{.{ .rc = .sse }}, | | |
| 23871 | .each = .{ .once = &.{ | | |
| 23872 | .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, | | |
| 23873 | .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .src0d, ._ }, | | |
| 23874 | } }, | | |
| 23875 | }, .{ | | |
| 23876 | .required_features = .{ .avx, null, null, null }, | | |
| 23877 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | | |
| 23878 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | | |
| 23879 | .patterns = &.{ | | |
| 23880 | .{ .src = .{ .to_sse, .none } }, | | |
| 23881 | }, | | |
| 23882 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 23883 | .each = .{ .once = &.{ | | |
| 23884 | .{ ._, .v_sd, .cvtss2, .dst0x, .src0x, .src0d, ._ }, | | |
| 23885 | } }, | | |
| 23886 | }, .{ | | |
| 23887 | .required_features = .{ .sse2, null, null, null }, | | |
| 23888 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | | |
| 23889 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | | |
| 23890 | .patterns = &.{ | | |
| 23891 | .{ .src = .{ .mem, .none } }, | | |
| 23892 | .{ .src = .{ .to_sse, .none } }, | | |
| 23893 | }, | | |
| 23894 | .dst_temps = .{.{ .rc = .sse }}, | | |
| 23895 | .each = .{ .once = &.{ | | |
| 23896 | .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, | | |
| 23897 | .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ }, | | |
| 23898 | } }, | | |
| 23899 | }, .{ | | |
| 23900 | .required_features = .{ .x87, null, null, null }, | | |
| 23901 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | | |
| 23902 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | | |
| 23903 | .patterns = &.{ | 44541 | .patterns = &.{ |
| 23904 | .{ .src = .{ .to_mem, .none } }, | 44542 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23905 | }, | 44543 | }, |
| 23906 | .extra_temps = .{ | 44544 | .extra_temps = .{ |
| 23907 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 44545 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23908 | .unused, | 44546 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 23909 | .unused, | 44547 | .unused, |
| 23910 | .unused, | 44548 | .unused, |
| 23911 | .unused, | 44549 | .unused, |
| ... | @@ -23915,57 +44553,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23915,57 +44553,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23915 | .unused, | 44553 | .unused, |
| 23916 | }, | 44554 | }, |
| 23917 | .dst_temps = .{.mem}, | 44555 | .dst_temps = .{.mem}, |
| | 44556 | .clobbers = .{ .eflags = true }, |
| 23918 | .each = .{ .once = &.{ | 44557 | .each = .{ .once = &.{ |
| 23919 | .{ ._, .f_, .ld, .src0d, ._, ._, ._ }, | 44558 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23920 | .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, | 44559 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| 23921 | } }, | 44560 | .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 23922 | }, .{ | 44561 | .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 23923 | .required_features = .{ .avx, null, null, null }, | 44562 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 23924 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any }, | 44563 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 23925 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, | 44564 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 23926 | .patterns = &.{ | | |
| 23927 | .{ .src = .{ .mem, .none } }, | | |
| 23928 | .{ .src = .{ .to_sse, .none } }, | | |
| 23929 | }, | | |
| 23930 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 23931 | .each = .{ .once = &.{ | | |
| 23932 | .{ ._, .v_pd, .cvtps2, .dst0x, .src0q, ._, ._ }, | | |
| 23933 | } }, | | |
| 23934 | }, .{ | | |
| 23935 | .required_features = .{ .sse2, null, null, null }, | | |
| 23936 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any }, | | |
| 23937 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, | | |
| 23938 | .patterns = &.{ | | |
| 23939 | .{ .src = .{ .mem, .none } }, | | |
| 23940 | .{ .src = .{ .to_sse, .none } }, | | |
| 23941 | }, | | |
| 23942 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 23943 | .each = .{ .once = &.{ | | |
| 23944 | .{ ._, ._pd, .cvtps2, .dst0x, .src0q, ._, ._ }, | | |
| 23945 | } }, | | |
| 23946 | }, .{ | | |
| 23947 | .required_features = .{ .avx, null, null, null }, | | |
| 23948 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any }, | | |
| 23949 | .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }}, | | |
| 23950 | .patterns = &.{ | | |
| 23951 | .{ .src = .{ .mem, .none } }, | | |
| 23952 | .{ .src = .{ .to_sse, .none } }, | | |
| 23953 | }, | | |
| 23954 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 23955 | .each = .{ .once = &.{ | | |
| 23956 | .{ ._, .v_pd, .cvtps2, .dst0y, .src0x, ._, ._ }, | | |
| 23957 | } }, | 44565 | } }, |
| 23958 | }, .{ | 44566 | }, .{ |
| 23959 | .required_features = .{ .avx, null, null, null }, | 44567 | .required_features = .{ .bmi2, .slow_incdec, null, null }, |
| 23960 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any }, | 44568 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 23961 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }}, | 44569 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 23962 | .patterns = &.{ | 44570 | .patterns = &.{ |
| 23963 | .{ .src = .{ .to_mem, .none } }, | 44571 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23964 | }, | 44572 | }, |
| 23965 | .extra_temps = .{ | 44573 | .extra_temps = .{ |
| 23966 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44574 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23967 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, | 44575 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23968 | .unused, | 44576 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23969 | .unused, | 44577 | .unused, |
| 23970 | .unused, | 44578 | .unused, |
| 23971 | .unused, | 44579 | .unused, |
| ... | @@ -23976,23 +44584,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23976,23 +44584,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23976 | .dst_temps = .{.mem}, | 44584 | .dst_temps = .{.mem}, |
| 23977 | .clobbers = .{ .eflags = true }, | 44585 | .clobbers = .{ .eflags = true }, |
| 23978 | .each = .{ .once = &.{ | 44586 | .each = .{ .once = &.{ |
| 23979 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 44587 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 23980 | .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 44588 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 23981 | .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, | 44589 | .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| 23982 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 44590 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, |
| | 44591 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 23983 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44592 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 23984 | } }, | 44593 | } }, |
| 23985 | }, .{ | 44594 | }, .{ |
| 23986 | .required_features = .{ .sse2, null, null, null }, | 44595 | .required_features = .{ .bmi2, null, null, null }, |
| 23987 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any }, | 44596 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 23988 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, | 44597 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 23989 | .patterns = &.{ | 44598 | .patterns = &.{ |
| 23990 | .{ .src = .{ .to_mem, .none } }, | 44599 | .{ .src = .{ .to_mem, .none, .none } }, |
| 23991 | }, | 44600 | }, |
| 23992 | .extra_temps = .{ | 44601 | .extra_temps = .{ |
| 23993 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44602 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 23994 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, | 44603 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23995 | .unused, | 44604 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 23996 | .unused, | 44605 | .unused, |
| 23997 | .unused, | 44606 | .unused, |
| 23998 | .unused, | 44607 | .unused, |
| ... | @@ -24003,22 +44612,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24003,22 +44612,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24003 | .dst_temps = .{.mem}, | 44612 | .dst_temps = .{.mem}, |
| 24004 | .clobbers = .{ .eflags = true }, | 44613 | .clobbers = .{ .eflags = true }, |
| 24005 | .each = .{ .once = &.{ | 44614 | .each = .{ .once = &.{ |
| 24006 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 44615 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24007 | .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 44616 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 24008 | .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | 44617 | .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| 24009 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 44618 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, |
| 24010 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44619 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 44620 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 24011 | } }, | 44621 | } }, |
| 24012 | }, .{ | 44622 | }, .{ |
| 24013 | .required_features = .{ .x87, null, null, null }, | 44623 | .required_features = .{ .slow_incdec, null, null, null }, |
| 24014 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 44624 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 24015 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, | 44625 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 24016 | .patterns = &.{ | 44626 | .patterns = &.{ |
| 24017 | .{ .src = .{ .to_mem, .none } }, | 44627 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24018 | }, | 44628 | }, |
| 24019 | .extra_temps = .{ | 44629 | .extra_temps = .{ |
| 24020 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44630 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24021 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 44631 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 24022 | .unused, | 44632 | .unused, |
| 24023 | .unused, | 44633 | .unused, |
| 24024 | .unused, | 44634 | .unused, |
| ... | @@ -24030,22 +44640,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24030,22 +44640,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24030 | .dst_temps = .{.mem}, | 44640 | .dst_temps = .{.mem}, |
| 24031 | .clobbers = .{ .eflags = true }, | 44641 | .clobbers = .{ .eflags = true }, |
| 24032 | .each = .{ .once = &.{ | 44642 | .each = .{ .once = &.{ |
| 24033 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44643 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24034 | .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 44644 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| 24035 | .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, | 44645 | .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, |
| 24036 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 44646 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 44647 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 24037 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44648 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24038 | } }, | 44649 | } }, |
| 24039 | }, .{ | 44650 | }, .{ |
| 24040 | .required_features = .{ .x87, null, null, null }, | 44651 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 24041 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 44652 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 24042 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, | | |
| 24043 | .patterns = &.{ | 44653 | .patterns = &.{ |
| 24044 | .{ .src = .{ .to_mem, .none } }, | 44654 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24045 | }, | 44655 | }, |
| 24046 | .extra_temps = .{ | 44656 | .extra_temps = .{ |
| 24047 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 44657 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24048 | .unused, | 44658 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 24049 | .unused, | 44659 | .unused, |
| 24050 | .unused, | 44660 | .unused, |
| 24051 | .unused, | 44661 | .unused, |
| ... | @@ -24055,21 +44665,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24055,21 +44665,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24055 | .unused, | 44665 | .unused, |
| 24056 | }, | 44666 | }, |
| 24057 | .dst_temps = .{.mem}, | 44667 | .dst_temps = .{.mem}, |
| | 44668 | .clobbers = .{ .eflags = true }, |
| 24058 | .each = .{ .once = &.{ | 44669 | .each = .{ .once = &.{ |
| 24059 | .{ ._, .f_, .ld, .src0d, ._, ._, ._ }, | 44670 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24060 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, | 44671 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 44672 | .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, |
| | 44673 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 44674 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 44675 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 24061 | } }, | 44676 | } }, |
| 24062 | }, .{ | 44677 | }, .{ |
| 24063 | .required_features = .{ .x87, null, null, null }, | 44678 | .required_features = .{ .slow_incdec, null, null, null }, |
| 24064 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 44679 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| 24065 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, | 44680 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, |
| 24066 | .patterns = &.{ | 44681 | .patterns = &.{ |
| 24067 | .{ .src = .{ .to_mem, .none } }, | 44682 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24068 | }, | 44683 | }, |
| 24069 | .extra_temps = .{ | 44684 | .extra_temps = .{ |
| 24070 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44685 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24071 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 44686 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 24072 | .unused, | 44687 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 24073 | .unused, | 44688 | .unused, |
| 24074 | .unused, | 44689 | .unused, |
| 24075 | .unused, | 44690 | .unused, |
| ... | @@ -24078,25 +44693,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24078,25 +44693,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24078 | .unused, | 44693 | .unused, |
| 24079 | }, | 44694 | }, |
| 24080 | .dst_temps = .{.mem}, | 44695 | .dst_temps = .{.mem}, |
| | 44696 | .clobbers = .{ .eflags = true }, |
| 24081 | .each = .{ .once = &.{ | 44697 | .each = .{ .once = &.{ |
| 24082 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44698 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24083 | .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 44699 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 24084 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, | 44700 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| 24085 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 44701 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, |
| | 44702 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 44703 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 24086 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44704 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24087 | } }, | 44705 | } }, |
| 24088 | }, .{ | 44706 | }, .{ |
| 24089 | .required_features = .{ .sse, null, null, null }, | 44707 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| 24090 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 44708 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, |
| 24091 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, | | |
| 24092 | .patterns = &.{ | 44709 | .patterns = &.{ |
| 24093 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, | 44710 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24094 | }, | 44711 | }, |
| 24095 | .call_frame = .{ .alignment = .@"16" }, | | |
| 24096 | .extra_temps = .{ | 44712 | .extra_temps = .{ |
| 24097 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } }, | 44713 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24098 | .unused, | 44714 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 24099 | .unused, | 44715 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 24100 | .unused, | 44716 | .unused, |
| 24101 | .unused, | 44717 | .unused, |
| 24102 | .unused, | 44718 | .unused, |
| ... | @@ -24104,23 +44720,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24104,23 +44720,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24104 | .unused, | 44720 | .unused, |
| 24105 | .unused, | 44721 | .unused, |
| 24106 | }, | 44722 | }, |
| 24107 | .dst_temps = .{.{ .ref = .src0 }}, | 44723 | .dst_temps = .{.mem}, |
| 24108 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44724 | .clobbers = .{ .eflags = true }, |
| 24109 | .each = .{ .once = &.{ | 44725 | .each = .{ .once = &.{ |
| 24110 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 44726 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 44727 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 44728 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| | 44729 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, |
| | 44730 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 44731 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 44732 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 24111 | } }, | 44733 | } }, |
| 24112 | }, .{ | 44734 | }, .{ |
| 24113 | .required_features = .{ .avx, null, null, null }, | 44735 | .required_features = .{ .slow_incdec, null, null, null }, |
| 24114 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 44736 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| 24115 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, | 44737 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, |
| 24116 | .patterns = &.{ | 44738 | .patterns = &.{ |
| 24117 | .{ .src = .{ .to_mem, .none } }, | 44739 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24118 | }, | 44740 | }, |
| 24119 | .call_frame = .{ .alignment = .@"16" }, | | |
| 24120 | .extra_temps = .{ | 44741 | .extra_temps = .{ |
| 24121 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44742 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24122 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, | 44743 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 24123 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } }, | 44744 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 24124 | .unused, | 44745 | .unused, |
| 24125 | .unused, | 44746 | .unused, |
| 24126 | .unused, | 44747 | .unused, |
| ... | @@ -24129,27 +44750,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24129,27 +44750,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24129 | .unused, | 44750 | .unused, |
| 24130 | }, | 44751 | }, |
| 24131 | .dst_temps = .{.mem}, | 44752 | .dst_temps = .{.mem}, |
| 24132 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44753 | .clobbers = .{ .eflags = true }, |
| 24133 | .each = .{ .once = &.{ | 44754 | .each = .{ .once = &.{ |
| 24134 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44755 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24135 | .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, | 44756 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 24136 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 44757 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| 24137 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 44758 | .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 24138 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 44759 | .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 44760 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, |
| | 44761 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 44762 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 24139 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44763 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24140 | } }, | 44764 | } }, |
| 24141 | }, .{ | 44765 | }, .{ |
| 24142 | .required_features = .{ .sse2, null, null, null }, | 44766 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| 24143 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 44767 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, |
| 24144 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, | | |
| 24145 | .patterns = &.{ | 44768 | .patterns = &.{ |
| 24146 | .{ .src = .{ .to_mem, .none } }, | 44769 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24147 | }, | 44770 | }, |
| 24148 | .call_frame = .{ .alignment = .@"16" }, | | |
| 24149 | .extra_temps = .{ | 44771 | .extra_temps = .{ |
| 24150 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44772 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24151 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, | 44773 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 24152 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } }, | 44774 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 24153 | .unused, | 44775 | .unused, |
| 24154 | .unused, | 44776 | .unused, |
| 24155 | .unused, | 44777 | .unused, |
| ... | @@ -24158,28 +44780,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24158,28 +44780,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24158 | .unused, | 44780 | .unused, |
| 24159 | }, | 44781 | }, |
| 24160 | .dst_temps = .{.mem}, | 44782 | .dst_temps = .{.mem}, |
| 24161 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44783 | .clobbers = .{ .eflags = true }, |
| 24162 | .each = .{ .once = &.{ | 44784 | .each = .{ .once = &.{ |
| 24163 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44785 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24164 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, | 44786 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 24165 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 44787 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| 24166 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 44788 | .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 24167 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 44789 | .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 24168 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44790 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, |
| | 44791 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 44792 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 44793 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 24169 | } }, | 44794 | } }, |
| 24170 | }, .{ | 44795 | }, .{ |
| 24171 | .required_features = .{ .sse, null, null, null }, | 44796 | .required_features = .{ .bmi2, .slow_incdec, null, null }, |
| 24172 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 44797 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 24173 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, | 44798 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 24174 | .patterns = &.{ | 44799 | .patterns = &.{ |
| 24175 | .{ .src = .{ .to_mem, .none } }, | 44800 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24176 | }, | 44801 | }, |
| 24177 | .call_frame = .{ .alignment = .@"16" }, | | |
| 24178 | .extra_temps = .{ | 44802 | .extra_temps = .{ |
| 24179 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44803 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24180 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, | 44804 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 24181 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } }, | 44805 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 24182 | .unused, | 44806 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 24183 | .unused, | 44807 | .unused, |
| 24184 | .unused, | 44808 | .unused, |
| 24185 | .unused, | 44809 | .unused, |
| ... | @@ -24187,27 +44811,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24187,27 +44811,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24187 | .unused, | 44811 | .unused, |
| 24188 | }, | 44812 | }, |
| 24189 | .dst_temps = .{.mem}, | 44813 | .dst_temps = .{.mem}, |
| 24190 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44814 | .clobbers = .{ .eflags = true }, |
| 24191 | .each = .{ .once = &.{ | 44815 | .each = .{ .once = &.{ |
| 24192 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44816 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24193 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, | 44817 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 24194 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 44818 | .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 24195 | .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 44819 | .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ }, |
| 24196 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 44820 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, |
| | 44821 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 44822 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 24197 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44823 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24198 | } }, | 44824 | } }, |
| 24199 | }, .{ | 44825 | }, .{ |
| 24200 | .required_features = .{ .x87, null, null, null }, | 44826 | .required_features = .{ .bmi2, null, null, null }, |
| 24201 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 44827 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 24202 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, | 44828 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 24203 | .patterns = &.{ | 44829 | .patterns = &.{ |
| 24204 | .{ .src = .{ .to_mem, .none } }, | 44830 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24205 | }, | 44831 | }, |
| 24206 | .extra_temps = .{ | 44832 | .extra_temps = .{ |
| 24207 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 44833 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24208 | .unused, | 44834 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 24209 | .unused, | 44835 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 24210 | .unused, | 44836 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 24211 | .unused, | 44837 | .unused, |
| 24212 | .unused, | 44838 | .unused, |
| 24213 | .unused, | 44839 | .unused, |
| ... | @@ -24215,21 +44841,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24215,21 +44841,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24215 | .unused, | 44841 | .unused, |
| 24216 | }, | 44842 | }, |
| 24217 | .dst_temps = .{.mem}, | 44843 | .dst_temps = .{.mem}, |
| | 44844 | .clobbers = .{ .eflags = true }, |
| 24218 | .each = .{ .once = &.{ | 44845 | .each = .{ .once = &.{ |
| 24219 | .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, | 44846 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24220 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, | 44847 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 44848 | .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| | 44849 | .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ }, |
| | 44850 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, |
| | 44851 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 44852 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 44853 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 24221 | } }, | 44854 | } }, |
| 24222 | }, .{ | 44855 | }, .{ |
| 24223 | .required_features = .{ .x87, null, null, null }, | 44856 | .required_features = .{ .slow_incdec, null, null, null }, |
| 24224 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 44857 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 24225 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, | 44858 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 24226 | .patterns = &.{ | 44859 | .patterns = &.{ |
| 24227 | .{ .src = .{ .to_mem, .none } }, | 44860 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24228 | }, | 44861 | }, |
| 24229 | .extra_temps = .{ | 44862 | .extra_temps = .{ |
| 24230 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44863 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24231 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 44864 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 24232 | .unused, | 44865 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 24233 | .unused, | 44866 | .unused, |
| 24234 | .unused, | 44867 | .unused, |
| 24235 | .unused, | 44868 | .unused, |
| ... | @@ -24238,25 +44871,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24238,25 +44871,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24238 | .unused, | 44871 | .unused, |
| 24239 | }, | 44872 | }, |
| 24240 | .dst_temps = .{.mem}, | 44873 | .dst_temps = .{.mem}, |
| | 44874 | .clobbers = .{ .eflags = true }, |
| 24241 | .each = .{ .once = &.{ | 44875 | .each = .{ .once = &.{ |
| 24242 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44876 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24243 | .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 44877 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 24244 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, | 44878 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| 24245 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 44879 | .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ }, |
| | 44880 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, |
| | 44881 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 44882 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 24246 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 44883 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24247 | } }, | 44884 | } }, |
| 24248 | }, .{ | 44885 | }, .{ |
| 24249 | .required_features = .{ .sse, null, null, null }, | 44886 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 24250 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 44887 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, |
| 24251 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, | | |
| 24252 | .patterns = &.{ | 44888 | .patterns = &.{ |
| 24253 | .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, | 44889 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24254 | }, | 44890 | }, |
| 24255 | .call_frame = .{ .alignment = .@"16" }, | | |
| 24256 | .extra_temps = .{ | 44891 | .extra_temps = .{ |
| 24257 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } }, | 44892 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24258 | .unused, | 44893 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 24259 | .unused, | 44894 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 24260 | .unused, | 44895 | .unused, |
| 24261 | .unused, | 44896 | .unused, |
| 24262 | .unused, | 44897 | .unused, |
| ... | @@ -24264,23 +44899,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24264,23 +44899,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24264 | .unused, | 44899 | .unused, |
| 24265 | .unused, | 44900 | .unused, |
| 24266 | }, | 44901 | }, |
| 24267 | .dst_temps = .{.{ .ref = .src0 }}, | 44902 | .dst_temps = .{.mem}, |
| 24268 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 44903 | .clobbers = .{ .eflags = true }, |
| 24269 | .each = .{ .once = &.{ | 44904 | .each = .{ .once = &.{ |
| 24270 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 44905 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 44906 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| | 44907 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| | 44908 | .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ }, |
| | 44909 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, |
| | 44910 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 44911 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 44912 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 24271 | } }, | 44913 | } }, |
| 24272 | }, .{ | 44914 | }, .{ |
| 24273 | .required_features = .{ .avx, null, null, null }, | 44915 | .required_features = .{ .avx, null, null, null }, |
| 24274 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 44916 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 24275 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, | 44917 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, |
| 24276 | .patterns = &.{ | 44918 | .patterns = &.{ |
| 24277 | .{ .src = .{ .to_mem, .none } }, | 44919 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 44920 | }, |
| | 44921 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 44922 | .each = .{ .once = &.{ |
| | 44923 | .{ ._, .vp_w, .sll, .dst0x, .src0x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 44924 | .{ ._, .vp_w, .sra, .dst0x, .dst0x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 44925 | } }, |
| | 44926 | }, .{ |
| | 44927 | .required_features = .{ .avx, null, null, null }, |
| | 44928 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 44929 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }}, |
| | 44930 | .patterns = &.{ |
| | 44931 | .{ .src = .{ .to_sse, .none, .none } }, |
| 24278 | }, | 44932 | }, |
| 24279 | .call_frame = .{ .alignment = .@"16" }, | | |
| 24280 | .extra_temps = .{ | 44933 | .extra_temps = .{ |
| 24281 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44934 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 24282 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, | 44935 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 24283 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } }, | 44936 | .unused, |
| 24284 | .unused, | 44937 | .unused, |
| 24285 | .unused, | 44938 | .unused, |
| 24286 | .unused, | 44939 | .unused, |
| ... | @@ -24288,28 +44941,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24288,28 +44941,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24288 | .unused, | 44941 | .unused, |
| 24289 | .unused, | 44942 | .unused, |
| 24290 | }, | 44943 | }, |
| 24291 | .dst_temps = .{.mem}, | 44944 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 24292 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 24293 | .each = .{ .once = &.{ | 44945 | .each = .{ .once = &.{ |
| 24294 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44946 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 24295 | .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, | 44947 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 24296 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | | |
| 24297 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | | |
| 24298 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 24299 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 24300 | } }, | 44948 | } }, |
| 24301 | }, .{ | 44949 | }, .{ |
| 24302 | .required_features = .{ .sse2, null, null, null }, | 44950 | .required_features = .{ .sse2, null, null, null }, |
| 24303 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 44951 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 24304 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, | 44952 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, |
| 24305 | .patterns = &.{ | 44953 | .patterns = &.{ |
| 24306 | .{ .src = .{ .to_mem, .none } }, | 44954 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 44955 | }, |
| | 44956 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 44957 | .each = .{ .once = &.{ |
| | 44958 | .{ ._, .p_w, .sll, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| | 44959 | .{ ._, .p_w, .sra, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| | 44960 | } }, |
| | 44961 | }, .{ |
| | 44962 | .required_features = .{ .sse2, null, null, null }, |
| | 44963 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 44964 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }}, |
| | 44965 | .patterns = &.{ |
| | 44966 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 24307 | }, | 44967 | }, |
| 24308 | .call_frame = .{ .alignment = .@"16" }, | | |
| 24309 | .extra_temps = .{ | 44968 | .extra_temps = .{ |
| 24310 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44969 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 24311 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, | 44970 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 24312 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } }, | 44971 | .unused, |
| 24313 | .unused, | 44972 | .unused, |
| 24314 | .unused, | 44973 | .unused, |
| 24315 | .unused, | 44974 | .unused, |
| ... | @@ -24317,28 +44976,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24317,28 +44976,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24317 | .unused, | 44976 | .unused, |
| 24318 | .unused, | 44977 | .unused, |
| 24319 | }, | 44978 | }, |
| 24320 | .dst_temps = .{.mem}, | 44979 | .dst_temps = .{.{ .ref = .src0 }}, |
| 24321 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 24322 | .each = .{ .once = &.{ | 44980 | .each = .{ .once = &.{ |
| 24323 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 44981 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 24324 | .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, | 44982 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 24325 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | | |
| 24326 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | | |
| 24327 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 24328 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 24329 | } }, | 44983 | } }, |
| 24330 | }, .{ | 44984 | }, .{ |
| 24331 | .required_features = .{ .sse, null, null, null }, | 44985 | .required_features = .{ .sse, null, null, null }, |
| 24332 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 44986 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 24333 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, | 44987 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }}, |
| 24334 | .patterns = &.{ | 44988 | .patterns = &.{ |
| 24335 | .{ .src = .{ .to_mem, .none } }, | 44989 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 24336 | }, | 44990 | }, |
| 24337 | .call_frame = .{ .alignment = .@"16" }, | | |
| 24338 | .extra_temps = .{ | 44991 | .extra_temps = .{ |
| 24339 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 44992 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 24340 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, | 44993 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 24341 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } }, | 44994 | .unused, |
| 24342 | .unused, | 44995 | .unused, |
| 24343 | .unused, | 44996 | .unused, |
| 24344 | .unused, | 44997 | .unused, |
| ... | @@ -24346,28 +44999,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24346,28 +44999,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24346 | .unused, | 44999 | .unused, |
| 24347 | .unused, | 45000 | .unused, |
| 24348 | }, | 45001 | }, |
| 24349 | .dst_temps = .{.mem}, | 45002 | .dst_temps = .{.{ .ref = .src0 }}, |
| 24350 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 24351 | .each = .{ .once = &.{ | 45003 | .each = .{ .once = &.{ |
| 24352 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 45004 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 24353 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, | 45005 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 24354 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, | 45006 | } }, |
| 24355 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, | 45007 | }, .{ |
| 24356 | .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 45008 | .required_features = .{ .avx2, null, null, null }, |
| 24357 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 45009 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| 24358 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45010 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }}, |
| | 45011 | .patterns = &.{ |
| | 45012 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 45013 | }, |
| | 45014 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 45015 | .each = .{ .once = &.{ |
| | 45016 | .{ ._, .vp_w, .sll, .dst0y, .src0y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 45017 | .{ ._, .vp_w, .sra, .dst0y, .dst0y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 24359 | } }, | 45018 | } }, |
| 24360 | }, .{ | 45019 | }, .{ |
| 24361 | .required_features = .{ .avx, null, null, null }, | 45020 | .required_features = .{ .avx2, null, null, null }, |
| 24362 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 45021 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| 24363 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, | 45022 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }}, |
| 24364 | .patterns = &.{ | 45023 | .patterns = &.{ |
| 24365 | .{ .src = .{ .to_mem, .none } }, | 45024 | .{ .src = .{ .to_sse, .none, .none } }, |
| 24366 | }, | 45025 | }, |
| 24367 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | | |
| 24368 | .extra_temps = .{ | 45026 | .extra_temps = .{ |
| 24369 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 45027 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 24370 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, | 45028 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 24371 | .unused, | 45029 | .unused, |
| 24372 | .unused, | 45030 | .unused, |
| 24373 | .unused, | 45031 | .unused, |
| ... | @@ -24376,24 +45034,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24376,24 +45034,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24376 | .unused, | 45034 | .unused, |
| 24377 | .unused, | 45035 | .unused, |
| 24378 | }, | 45036 | }, |
| 24379 | .dst_temps = .{.{ .reg = .xmm0 }}, | 45037 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 24380 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | | |
| 24381 | .each = .{ .once = &.{ | 45038 | .each = .{ .once = &.{ |
| 24382 | .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ }, | 45039 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 24383 | .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ }, | 45040 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 24384 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, | | |
| 24385 | } }, | 45041 | } }, |
| 24386 | }, .{ | 45042 | }, .{ |
| 24387 | .required_features = .{ .sse2, null, null, null }, | 45043 | .required_features = .{ .avx2, null, null, null }, |
| 24388 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 45044 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| 24389 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, | 45045 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }}, |
| 24390 | .patterns = &.{ | 45046 | .patterns = &.{ |
| 24391 | .{ .src = .{ .to_mem, .none } }, | 45047 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24392 | }, | 45048 | }, |
| 24393 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | | |
| 24394 | .extra_temps = .{ | 45049 | .extra_temps = .{ |
| 24395 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 45050 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24396 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, | 45051 | .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, |
| 24397 | .unused, | 45052 | .unused, |
| 24398 | .unused, | 45053 | .unused, |
| 24399 | .unused, | 45054 | .unused, |
| ... | @@ -24402,52 +45057,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24402,52 +45057,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24402 | .unused, | 45057 | .unused, |
| 24403 | .unused, | 45058 | .unused, |
| 24404 | }, | 45059 | }, |
| 24405 | .dst_temps = .{.{ .reg = .xmm0 }}, | 45060 | .dst_temps = .{.mem}, |
| 24406 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 45061 | .clobbers = .{ .eflags = true }, |
| 24407 | .each = .{ .once = &.{ | 45062 | .each = .{ .once = &.{ |
| 24408 | .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ }, | 45063 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24409 | .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ }, | 45064 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 24410 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, | 45065 | .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 45066 | .{ ._, .vp_w, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 45067 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 45068 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 45069 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24411 | } }, | 45070 | } }, |
| 24412 | }, .{ | 45071 | }, .{ |
| 24413 | .required_features = .{ .sse, null, null, null }, | 45072 | .required_features = .{ .avx2, null, null, null }, |
| 24414 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 45073 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| 24415 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, | 45074 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }}, |
| 24416 | .patterns = &.{ | 45075 | .patterns = &.{ |
| 24417 | .{ .src = .{ .to_mem, .none } }, | 45076 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24418 | }, | 45077 | }, |
| 24419 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | | |
| 24420 | .extra_temps = .{ | 45078 | .extra_temps = .{ |
| 24421 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 45079 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24422 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, | 45080 | .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, |
| 24423 | .unused, | 45081 | .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, |
| 24424 | .unused, | 45082 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 24425 | .unused, | 45083 | .unused, |
| 24426 | .unused, | 45084 | .unused, |
| 24427 | .unused, | 45085 | .unused, |
| 24428 | .unused, | 45086 | .unused, |
| 24429 | .unused, | 45087 | .unused, |
| 24430 | }, | 45088 | }, |
| 24431 | .dst_temps = .{.{ .reg = .xmm0 }}, | 45089 | .dst_temps = .{.mem}, |
| 24432 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 45090 | .clobbers = .{ .eflags = true }, |
| 24433 | .each = .{ .once = &.{ | 45091 | .each = .{ .once = &.{ |
| 24434 | .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ }, | 45092 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 24435 | .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ }, | 45093 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| 24436 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, | 45094 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 45095 | .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| | 45096 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| | 45097 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 45098 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24437 | } }, | 45099 | } }, |
| 24438 | }, .{ | 45100 | }, .{ |
| 24439 | .required_features = .{ .avx, null, null, null }, | 45101 | .required_features = .{ .avx, null, null, null }, |
| 24440 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 45102 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 24441 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, | 45103 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }}, |
| 24442 | .patterns = &.{ | 45104 | .patterns = &.{ |
| 24443 | .{ .src = .{ .to_mem, .none } }, | 45105 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24444 | }, | 45106 | }, |
| 24445 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | | |
| 24446 | .extra_temps = .{ | 45107 | .extra_temps = .{ |
| 24447 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45108 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24448 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, | 45109 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, |
| 24449 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 45110 | .unused, |
| 24450 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, | 45111 | .unused, |
| 24451 | .unused, | 45112 | .unused, |
| 24452 | .unused, | 45113 | .unused, |
| 24453 | .unused, | 45114 | .unused, |
| ... | @@ -24455,29 +45116,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24455,29 +45116,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24455 | .unused, | 45116 | .unused, |
| 24456 | }, | 45117 | }, |
| 24457 | .dst_temps = .{.mem}, | 45118 | .dst_temps = .{.mem}, |
| 24458 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 45119 | .clobbers = .{ .eflags = true }, |
| 24459 | .each = .{ .once = &.{ | 45120 | .each = .{ .once = &.{ |
| 24460 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 45121 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24461 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, | 45122 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 24462 | .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, | 45123 | .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 24463 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 45124 | .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 24464 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 45125 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 24465 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 45126 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 24466 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45127 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24467 | } }, | 45128 | } }, |
| 24468 | }, .{ | 45129 | }, .{ |
| 24469 | .required_features = .{ .sse2, null, null, null }, | 45130 | .required_features = .{ .avx, null, null, null }, |
| 24470 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 45131 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 24471 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, | 45132 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }}, |
| 24472 | .patterns = &.{ | 45133 | .patterns = &.{ |
| 24473 | .{ .src = .{ .to_mem, .none } }, | 45134 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24474 | }, | 45135 | }, |
| 24475 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | | |
| 24476 | .extra_temps = .{ | 45136 | .extra_temps = .{ |
| 24477 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45137 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24478 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, | 45138 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| 24479 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 45139 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| 24480 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, | 45140 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 24481 | .unused, | 45141 | .unused, |
| 24482 | .unused, | 45142 | .unused, |
| 24483 | .unused, | 45143 | .unused, |
| ... | @@ -24485,29 +45145,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24485,29 +45145,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24485 | .unused, | 45145 | .unused, |
| 24486 | }, | 45146 | }, |
| 24487 | .dst_temps = .{.mem}, | 45147 | .dst_temps = .{.mem}, |
| 24488 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 45148 | .clobbers = .{ .eflags = true }, |
| 24489 | .each = .{ .once = &.{ | 45149 | .each = .{ .once = &.{ |
| 24490 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 45150 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 24491 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, | 45151 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 24492 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, | 45152 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24493 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 45153 | .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| 24494 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 45154 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 24495 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 45155 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 24496 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45156 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24497 | } }, | 45157 | } }, |
| 24498 | }, .{ | 45158 | }, .{ |
| 24499 | .required_features = .{ .sse, null, null, null }, | 45159 | .required_features = .{ .sse2, null, null, null }, |
| 24500 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 45160 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 24501 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, | 45161 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }}, |
| 24502 | .patterns = &.{ | 45162 | .patterns = &.{ |
| 24503 | .{ .src = .{ .to_mem, .none } }, | 45163 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24504 | }, | 45164 | }, |
| 24505 | .call_frame = .{ .size = 16, .alignment = .@"16" }, | | |
| 24506 | .extra_temps = .{ | 45165 | .extra_temps = .{ |
| 24507 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45166 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24508 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, | 45167 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, |
| 24509 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, | 45168 | .unused, |
| 24510 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, | 45169 | .unused, |
| 24511 | .unused, | 45170 | .unused, |
| 24512 | .unused, | 45171 | .unused, |
| 24513 | .unused, | 45172 | .unused, |
| ... | @@ -24515,98 +45174,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24515,98 +45174,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24515 | .unused, | 45174 | .unused, |
| 24516 | }, | 45175 | }, |
| 24517 | .dst_temps = .{.mem}, | 45176 | .dst_temps = .{.mem}, |
| 24518 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 45177 | .clobbers = .{ .eflags = true }, |
| 24519 | .each = .{ .once = &.{ | 45178 | .each = .{ .once = &.{ |
| 24520 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 45179 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24521 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, | 45180 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 24522 | .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, | 45181 | .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| 24523 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 45182 | .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| 24524 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 45183 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 24525 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 45184 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 24526 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45185 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24527 | } }, | 45186 | } }, |
| 24528 | } }) catch |err| switch (err) { | | |
| 24529 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ | | |
| 24530 | @tagName(air_tag), | | |
| 24531 | ty_op.ty.toType().fmt(pt), | | |
| 24532 | cg.typeOf(ty_op.operand).fmt(pt), | | |
| 24533 | ops[0].tracking(cg), | | |
| 24534 | }), | | |
| 24535 | else => |e| return e, | | |
| 24536 | }; | | |
| 24537 | try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 24538 | }, | | |
| 24539 | .intcast => |air_tag| if (use_old) try cg.airIntCast(inst) else { | | |
| 24540 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 24541 | const dst_ty = ty_op.ty.toType(); | | |
| 24542 | const src_ty = cg.typeOf(ty_op.operand); | | |
| 24543 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 24544 | var res: [1]Temp = undefined; | | |
| 24545 | cg.select(&res, &.{dst_ty}, &ops, if (dst_ty.scalarType(zcu).abiSize(zcu) <= src_ty.scalarType(zcu).abiSize(zcu)) comptime &.{ .{ | | |
| 24546 | .dst_constraints = .{.{ .int = .dword }}, | | |
| 24547 | .patterns = &.{ | | |
| 24548 | .{ .src = .{ .mut_mem, .none } }, | | |
| 24549 | .{ .src = .{ .to_mut_gpr, .none } }, | | |
| 24550 | }, | | |
| 24551 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 24552 | .each = .{ .once = &.{} }, | | |
| 24553 | }, .{ | | |
| 24554 | .required_features = .{ .@"64bit", null, null, null }, | | |
| 24555 | .dst_constraints = .{.{ .int = .qword }}, | | |
| 24556 | .patterns = &.{ | | |
| 24557 | .{ .src = .{ .mut_mem, .none } }, | | |
| 24558 | .{ .src = .{ .to_mut_gpr, .none } }, | | |
| 24559 | }, | | |
| 24560 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 24561 | .each = .{ .once = &.{} }, | | |
| 24562 | }, .{ | | |
| 24563 | .dst_constraints = .{.{ .int = .byte }}, | | |
| 24564 | .patterns = &.{ | | |
| 24565 | .{ .src = .{ .to_mem, .none } }, | | |
| 24566 | }, | | |
| 24567 | .dst_temps = .{.{ .rc = .general_purpose }}, | | |
| 24568 | .each = .{ .once = &.{ | | |
| 24569 | .{ ._, ._, .mov, .dst0b, .mem(.src0b), ._, ._ }, | | |
| 24570 | } }, | | |
| 24571 | }, .{ | | |
| 24572 | .dst_constraints = .{.{ .int = .word }}, | | |
| 24573 | .patterns = &.{ | | |
| 24574 | .{ .src = .{ .to_mem, .none } }, | | |
| 24575 | }, | | |
| 24576 | .dst_temps = .{.{ .rc = .general_purpose }}, | | |
| 24577 | .each = .{ .once = &.{ | | |
| 24578 | .{ ._, ._, .mov, .dst0w, .mem(.src0w), ._, ._ }, | | |
| 24579 | } }, | | |
| 24580 | }, .{ | | |
| 24581 | .dst_constraints = .{.{ .int = .dword }}, | | |
| 24582 | .patterns = &.{ | | |
| 24583 | .{ .src = .{ .to_mem, .none } }, | | |
| 24584 | }, | | |
| 24585 | .dst_temps = .{.{ .rc = .general_purpose }}, | | |
| 24586 | .each = .{ .once = &.{ | | |
| 24587 | .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ }, | | |
| 24588 | } }, | | |
| 24589 | }, .{ | | |
| 24590 | .required_features = .{ .@"64bit", null, null, null }, | | |
| 24591 | .dst_constraints = .{.{ .int = .qword }}, | | |
| 24592 | .patterns = &.{ | | |
| 24593 | .{ .src = .{ .to_mem, .none } }, | | |
| 24594 | }, | | |
| 24595 | .dst_temps = .{.{ .rc = .general_purpose }}, | | |
| 24596 | .each = .{ .once = &.{ | | |
| 24597 | .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ }, | | |
| 24598 | } }, | | |
| 24599 | }, .{ | 45187 | }, .{ |
| 24600 | .required_features = .{ .@"64bit", null, null, null }, | 45188 | .required_features = .{ .sse2, null, null, null }, |
| 24601 | .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, | 45189 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 45190 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }}, |
| 24602 | .patterns = &.{ | 45191 | .patterns = &.{ |
| 24603 | .{ .src = .{ .to_mem, .none } }, | 45192 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24604 | }, | 45193 | }, |
| 24605 | .extra_temps = .{ | 45194 | .extra_temps = .{ |
| 24606 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, | 45195 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24607 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 45196 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| 24608 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 45197 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| 24609 | .unused, | 45198 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 24610 | .unused, | 45199 | .unused, |
| 24611 | .unused, | 45200 | .unused, |
| 24612 | .unused, | 45201 | .unused, |
| ... | @@ -24614,108 +45203,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24614,108 +45203,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24614 | .unused, | 45203 | .unused, |
| 24615 | }, | 45204 | }, |
| 24616 | .dst_temps = .{.mem}, | 45205 | .dst_temps = .{.mem}, |
| | 45206 | .clobbers = .{ .eflags = true }, |
| 24617 | .each = .{ .once = &.{ | 45207 | .each = .{ .once = &.{ |
| 24618 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, | 45208 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 24619 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 45209 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 24620 | .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ }, | 45210 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24621 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 45211 | .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| | 45212 | .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 45213 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 45214 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 45215 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24622 | } }, | 45216 | } }, |
| 24623 | }, .{ | 45217 | }, .{ |
| 24624 | .required_features = .{ .sse, null, null, null }, | 45218 | .required_features = .{ .sse, null, null, null }, |
| 24625 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any }, | 45219 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 24626 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }}, | 45220 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }}, |
| 24627 | .patterns = &.{ | | |
| 24628 | .{ .src = .{ .mut_mem, .none } }, | | |
| 24629 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 24630 | }, | | |
| 24631 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 24632 | .each = .{ .once = &.{} }, | | |
| 24633 | }, .{ | | |
| 24634 | .required_features = .{ .avx, null, null, null }, | | |
| 24635 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any }, | | |
| 24636 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .byte } }}, | | |
| 24637 | .patterns = &.{ | | |
| 24638 | .{ .src = .{ .mut_mem, .none } }, | | |
| 24639 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 24640 | }, | | |
| 24641 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 24642 | .each = .{ .once = &.{} }, | | |
| 24643 | }, .{ | | |
| 24644 | .required_features = .{ .avx, null, null, null }, | | |
| 24645 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, | | |
| 24646 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }}, | | |
| 24647 | .patterns = &.{ | | |
| 24648 | .{ .src = .{ .to_sse, .none } }, | | |
| 24649 | }, | | |
| 24650 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 24651 | .each = .{ .once = &.{ | | |
| 24652 | .{ ._, .vp_b, .ackssw, .dst0x, .src0x, .dst0x, ._ }, | | |
| 24653 | } }, | | |
| 24654 | }, .{ | | |
| 24655 | .required_features = .{ .avx, null, null, null }, | | |
| 24656 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, | | |
| 24657 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }}, | | |
| 24658 | .patterns = &.{ | | |
| 24659 | .{ .src = .{ .to_sse, .none } }, | | |
| 24660 | }, | | |
| 24661 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 24662 | .each = .{ .once = &.{ | | |
| 24663 | .{ ._, .vp_b, .ackusw, .dst0x, .src0x, .dst0x, ._ }, | | |
| 24664 | } }, | | |
| 24665 | }, .{ | | |
| 24666 | .required_features = .{ .sse2, null, null, null }, | | |
| 24667 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, | | |
| 24668 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }}, | | |
| 24669 | .patterns = &.{ | | |
| 24670 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 24671 | }, | | |
| 24672 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 24673 | .each = .{ .once = &.{ | | |
| 24674 | .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ }, | | |
| 24675 | } }, | | |
| 24676 | }, .{ | | |
| 24677 | .required_features = .{ .sse2, null, null, null }, | | |
| 24678 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, | | |
| 24679 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }}, | | |
| 24680 | .patterns = &.{ | | |
| 24681 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 24682 | }, | | |
| 24683 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 24684 | .each = .{ .once = &.{ | | |
| 24685 | .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ }, | | |
| 24686 | } }, | | |
| 24687 | }, .{ | | |
| 24688 | .required_features = .{ .avx2, null, null, null }, | | |
| 24689 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any }, | | |
| 24690 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }}, | | |
| 24691 | .patterns = &.{ | 45221 | .patterns = &.{ |
| 24692 | .{ .src = .{ .to_sse, .none } }, | 45222 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24693 | }, | 45223 | }, |
| 24694 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 45224 | .extra_temps = .{ |
| 24695 | .each = .{ .once = &.{ | 45225 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24696 | .{ ._, .vp_b, .ackssw, .dst0y, .src0y, .dst0y, ._ }, | 45226 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| 24697 | } }, | 45227 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| 24698 | }, .{ | 45228 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 24699 | .required_features = .{ .avx2, null, null, null }, | 45229 | .unused, |
| 24700 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any }, | 45230 | .unused, |
| 24701 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }}, | 45231 | .unused, |
| 24702 | .patterns = &.{ | 45232 | .unused, |
| 24703 | .{ .src = .{ .to_sse, .none } }, | 45233 | .unused, |
| 24704 | }, | 45234 | }, |
| 24705 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 45235 | .dst_temps = .{.mem}, |
| | 45236 | .clobbers = .{ .eflags = true }, |
| 24706 | .each = .{ .once = &.{ | 45237 | .each = .{ .once = &.{ |
| 24707 | .{ ._, .vp_b, .ackusw, .dst0y, .src0y, .dst0y, ._ }, | 45238 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 45239 | .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 45240 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 45241 | .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, |
| | 45242 | .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 45243 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 45244 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 45245 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24708 | } }, | 45246 | } }, |
| 24709 | }, .{ | 45247 | }, .{ |
| 24710 | .required_features = .{ .slow_incdec, null, null, null }, | 45248 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 24711 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, | 45249 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }}, |
| 24712 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, | | |
| 24713 | .patterns = &.{ | 45250 | .patterns = &.{ |
| 24714 | .{ .src = .{ .to_mem, .none } }, | 45251 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24715 | }, | 45252 | }, |
| 24716 | .extra_temps = .{ | 45253 | .extra_temps = .{ |
| 24717 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45254 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24718 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 45255 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 24719 | .unused, | 45256 | .unused, |
| 24720 | .unused, | 45257 | .unused, |
| 24721 | .unused, | 45258 | .unused, |
| ... | @@ -24725,22 +45262,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24725,22 +45262,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24725 | .unused, | 45262 | .unused, |
| 24726 | }, | 45263 | }, |
| 24727 | .dst_temps = .{.mem}, | 45264 | .dst_temps = .{.mem}, |
| | 45265 | .clobbers = .{ .eflags = true }, |
| 24728 | .each = .{ .once = &.{ | 45266 | .each = .{ .once = &.{ |
| 24729 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45267 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24730 | .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, | 45268 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 24731 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, | 45269 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 24732 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 45270 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 24733 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45271 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24734 | } }, | 45272 | } }, |
| 24735 | }, .{ | 45273 | }, .{ |
| 24736 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, | 45274 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 24737 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, | 45275 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, |
| 24738 | .patterns = &.{ | 45276 | .patterns = &.{ |
| 24739 | .{ .src = .{ .to_mem, .none } }, | 45277 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24740 | }, | 45278 | }, |
| 24741 | .extra_temps = .{ | 45279 | .extra_temps = .{ |
| 24742 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45280 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24743 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 45281 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 24744 | .unused, | 45282 | .unused, |
| 24745 | .unused, | 45283 | .unused, |
| 24746 | .unused, | 45284 | .unused, |
| ... | @@ -24750,95 +45288,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24750,95 +45288,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24750 | .unused, | 45288 | .unused, |
| 24751 | }, | 45289 | }, |
| 24752 | .dst_temps = .{.mem}, | 45290 | .dst_temps = .{.mem}, |
| | 45291 | .clobbers = .{ .eflags = true }, |
| 24753 | .each = .{ .once = &.{ | 45292 | .each = .{ .once = &.{ |
| 24754 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45293 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24755 | .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, | 45294 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 24756 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, | 45295 | .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 24757 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 45296 | .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 24758 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 45297 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 24759 | } }, | 45298 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 24760 | }, .{ | 45299 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24761 | .required_features = .{ .avx, null, null, null }, | | |
| 24762 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | | |
| 24763 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }}, | | |
| 24764 | .patterns = &.{ | | |
| 24765 | .{ .src = .{ .to_sse, .none } }, | | |
| 24766 | }, | | |
| 24767 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 24768 | .each = .{ .once = &.{ | | |
| 24769 | .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ }, | | |
| 24770 | .{ ._, .vp_b, .ackssw, .dst0x, .dst0x, .dst0x, ._ }, | | |
| 24771 | } }, | | |
| 24772 | }, .{ | | |
| 24773 | .required_features = .{ .avx, null, null, null }, | | |
| 24774 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | | |
| 24775 | .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }}, | | |
| 24776 | .patterns = &.{ | | |
| 24777 | .{ .src = .{ .to_sse, .none } }, | | |
| 24778 | }, | | |
| 24779 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 24780 | .each = .{ .once = &.{ | | |
| 24781 | .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ }, | | |
| 24782 | .{ ._, .vp_b, .ackusw, .dst0x, .dst0x, .dst0x, ._ }, | | |
| 24783 | } }, | | |
| 24784 | }, .{ | | |
| 24785 | .required_features = .{ .sse2, null, null, null }, | | |
| 24786 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | | |
| 24787 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }}, | | |
| 24788 | .patterns = &.{ | | |
| 24789 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 24790 | }, | | |
| 24791 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 24792 | .each = .{ .once = &.{ | | |
| 24793 | .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ }, | | |
| 24794 | .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ }, | | |
| 24795 | } }, | | |
| 24796 | }, .{ | | |
| 24797 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 24798 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | | |
| 24799 | .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }}, | | |
| 24800 | .patterns = &.{ | | |
| 24801 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 24802 | }, | | |
| 24803 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 24804 | .each = .{ .once = &.{ | | |
| 24805 | .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ }, | | |
| 24806 | .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ }, | | |
| 24807 | } }, | | |
| 24808 | }, .{ | | |
| 24809 | .required_features = .{ .avx2, null, null, null }, | | |
| 24810 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any }, | | |
| 24811 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }}, | | |
| 24812 | .patterns = &.{ | | |
| 24813 | .{ .src = .{ .to_sse, .none } }, | | |
| 24814 | }, | | |
| 24815 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 24816 | .each = .{ .once = &.{ | | |
| 24817 | .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ }, | | |
| 24818 | .{ ._, .vp_b, .ackssw, .dst0y, .dst0y, .dst0y, ._ }, | | |
| 24819 | } }, | | |
| 24820 | }, .{ | | |
| 24821 | .required_features = .{ .avx2, null, null, null }, | | |
| 24822 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any }, | | |
| 24823 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }}, | | |
| 24824 | .patterns = &.{ | | |
| 24825 | .{ .src = .{ .to_sse, .none } }, | | |
| 24826 | }, | | |
| 24827 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 24828 | .each = .{ .once = &.{ | | |
| 24829 | .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ }, | | |
| 24830 | .{ ._, .vp_b, .ackusw, .dst0y, .dst0y, .dst0y, ._ }, | | |
| 24831 | } }, | 45300 | } }, |
| 24832 | }, .{ | 45301 | }, .{ |
| 24833 | .required_features = .{ .slow_incdec, null, null, null }, | 45302 | .required_features = .{ .fast_imm16, null, null, null }, |
| 24834 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, | 45303 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 24835 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, | 45304 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 24836 | .patterns = &.{ | 45305 | .patterns = &.{ |
| 24837 | .{ .src = .{ .to_mem, .none } }, | 45306 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24838 | }, | 45307 | }, |
| 24839 | .extra_temps = .{ | 45308 | .extra_temps = .{ |
| 24840 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45309 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24841 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 45310 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 24842 | .unused, | 45311 | .unused, |
| 24843 | .unused, | 45312 | .unused, |
| 24844 | .unused, | 45313 | .unused, |
| ... | @@ -24848,22 +45317,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24848,22 +45317,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24848 | .unused, | 45317 | .unused, |
| 24849 | }, | 45318 | }, |
| 24850 | .dst_temps = .{.mem}, | 45319 | .dst_temps = .{.mem}, |
| | 45320 | .clobbers = .{ .eflags = true }, |
| 24851 | .each = .{ .once = &.{ | 45321 | .each = .{ .once = &.{ |
| 24852 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45322 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24853 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, | 45323 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 24854 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, | 45324 | .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ }, |
| 24855 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 45325 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 45326 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 24856 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45327 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24857 | } }, | 45328 | } }, |
| 24858 | }, .{ | 45329 | }, .{ |
| 24859 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, | 45330 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 24860 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, | 45331 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 24861 | .patterns = &.{ | 45332 | .patterns = &.{ |
| 24862 | .{ .src = .{ .to_mem, .none } }, | 45333 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24863 | }, | 45334 | }, |
| 24864 | .extra_temps = .{ | 45335 | .extra_temps = .{ |
| 24865 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45336 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24866 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 45337 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 24867 | .unused, | 45338 | .unused, |
| 24868 | .unused, | 45339 | .unused, |
| 24869 | .unused, | 45340 | .unused, |
| ... | @@ -24873,23 +45344,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24873,23 +45344,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24873 | .unused, | 45344 | .unused, |
| 24874 | }, | 45345 | }, |
| 24875 | .dst_temps = .{.mem}, | 45346 | .dst_temps = .{.mem}, |
| | 45347 | .clobbers = .{ .eflags = true }, |
| 24876 | .each = .{ .once = &.{ | 45348 | .each = .{ .once = &.{ |
| 24877 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45349 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24878 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, | 45350 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 24879 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, | 45351 | .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, |
| 24880 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 45352 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 24881 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 45353 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 45354 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24882 | } }, | 45355 | } }, |
| 24883 | }, .{ | 45356 | }, .{ |
| 24884 | .required_features = .{ .slow_incdec, null, null, null }, | 45357 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 24885 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any }, | 45358 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }}, |
| 24886 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, | | |
| 24887 | .patterns = &.{ | 45359 | .patterns = &.{ |
| 24888 | .{ .src = .{ .to_mem, .none } }, | 45360 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24889 | }, | 45361 | }, |
| 24890 | .extra_temps = .{ | 45362 | .extra_temps = .{ |
| 24891 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45363 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24892 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 45364 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 24893 | .unused, | 45365 | .unused, |
| 24894 | .unused, | 45366 | .unused, |
| 24895 | .unused, | 45367 | .unused, |
| ... | @@ -24899,22 +45371,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24899,22 +45371,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24899 | .unused, | 45371 | .unused, |
| 24900 | }, | 45372 | }, |
| 24901 | .dst_temps = .{.mem}, | 45373 | .dst_temps = .{.mem}, |
| | 45374 | .clobbers = .{ .eflags = true }, |
| 24902 | .each = .{ .once = &.{ | 45375 | .each = .{ .once = &.{ |
| 24903 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45376 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24904 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, | 45377 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 24905 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, | 45378 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 24906 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 45379 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 24907 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45380 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24908 | } }, | 45381 | } }, |
| 24909 | }, .{ | 45382 | }, .{ |
| 24910 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any }, | 45383 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 24911 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, | 45384 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, |
| 24912 | .patterns = &.{ | 45385 | .patterns = &.{ |
| 24913 | .{ .src = .{ .to_mem, .none } }, | 45386 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24914 | }, | 45387 | }, |
| 24915 | .extra_temps = .{ | 45388 | .extra_temps = .{ |
| 24916 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45389 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24917 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 45390 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 24918 | .unused, | 45391 | .unused, |
| 24919 | .unused, | 45392 | .unused, |
| 24920 | .unused, | 45393 | .unused, |
| ... | @@ -24924,24 +45397,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24924,24 +45397,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24924 | .unused, | 45397 | .unused, |
| 24925 | }, | 45398 | }, |
| 24926 | .dst_temps = .{.mem}, | 45399 | .dst_temps = .{.mem}, |
| | 45400 | .clobbers = .{ .eflags = true }, |
| 24927 | .each = .{ .once = &.{ | 45401 | .each = .{ .once = &.{ |
| 24928 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45402 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24929 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, | 45403 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 24930 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, | 45404 | .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 24931 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 45405 | .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 24932 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 45406 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 45407 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 45408 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24933 | } }, | 45409 | } }, |
| 24934 | }, .{ | 45410 | }, .{ |
| 24935 | .required_features = .{ .slow_incdec, null, null, null }, | 45411 | .required_features = .{ .bmi2, null, null, null }, |
| 24936 | .src_constraints = .{ .any_scalar_int, .any }, | 45412 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 24937 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, | 45413 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 24938 | .patterns = &.{ | 45414 | .patterns = &.{ |
| 24939 | .{ .src = .{ .to_mem, .none } }, | 45415 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24940 | }, | 45416 | }, |
| 24941 | .extra_temps = .{ | 45417 | .extra_temps = .{ |
| 24942 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45418 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24943 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | | |
| 24944 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 45419 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 45420 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 24945 | .unused, | 45421 | .unused, |
| 24946 | .unused, | 45422 | .unused, |
| 24947 | .unused, | 45423 | .unused, |
| ... | @@ -24950,25 +45426,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24950,25 +45426,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24950 | .unused, | 45426 | .unused, |
| 24951 | }, | 45427 | }, |
| 24952 | .dst_temps = .{.mem}, | 45428 | .dst_temps = .{.mem}, |
| | 45429 | .clobbers = .{ .eflags = true }, |
| 24953 | .each = .{ .once = &.{ | 45430 | .each = .{ .once = &.{ |
| 24954 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45431 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24955 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, | 45432 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 24956 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, | 45433 | .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| 24957 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, | 45434 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, |
| 24958 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, | 45435 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 24959 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | | |
| 24960 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45436 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24961 | } }, | 45437 | } }, |
| 24962 | }, .{ | 45438 | }, .{ |
| 24963 | .src_constraints = .{ .any_scalar_int, .any }, | 45439 | .required_features = .{ .fast_imm16, null, null, null }, |
| 24964 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, | 45440 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 45441 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 24965 | .patterns = &.{ | 45442 | .patterns = &.{ |
| 24966 | .{ .src = .{ .to_mem, .none } }, | 45443 | .{ .src = .{ .to_mem, .none, .none } }, |
| 24967 | }, | 45444 | }, |
| 24968 | .extra_temps = .{ | 45445 | .extra_temps = .{ |
| 24969 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45446 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 24970 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 45447 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 24971 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 45448 | .unused, |
| 24972 | .unused, | 45449 | .unused, |
| 24973 | .unused, | 45450 | .unused, |
| 24974 | .unused, | 45451 | .unused, |
| ... | @@ -24977,106 +45454,130 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -24977,106 +45454,130 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 24977 | .unused, | 45454 | .unused, |
| 24978 | }, | 45455 | }, |
| 24979 | .dst_temps = .{.mem}, | 45456 | .dst_temps = .{.mem}, |
| | 45457 | .clobbers = .{ .eflags = true }, |
| 24980 | .each = .{ .once = &.{ | 45458 | .each = .{ .once = &.{ |
| 24981 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45459 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 24982 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, | 45460 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 24983 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, | 45461 | .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ }, |
| 24984 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, | 45462 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 24985 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, | 45463 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 24986 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 45464 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 24987 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 24988 | } }, | 45465 | } }, |
| 24989 | }, .{ | 45466 | }, .{ |
| 24990 | .required_features = .{ .sse, null, null, null }, | 45467 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 24991 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, | 45468 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 24992 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, | | |
| 24993 | .patterns = &.{ | | |
| 24994 | .{ .src = .{ .mut_mem, .none } }, | | |
| 24995 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 24996 | }, | | |
| 24997 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 24998 | .each = .{ .once = &.{} }, | | |
| 24999 | }, .{ | | |
| 25000 | .required_features = .{ .avx, null, null, null }, | | |
| 25001 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any }, | | |
| 25002 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }}, | | |
| 25003 | .patterns = &.{ | 45469 | .patterns = &.{ |
| 25004 | .{ .src = .{ .mut_mem, .none } }, | 45470 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25005 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 25006 | }, | 45471 | }, |
| 25007 | .dst_temps = .{.{ .ref = .src0 }}, | 45472 | .extra_temps = .{ |
| 25008 | .each = .{ .once = &.{} }, | 45473 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25009 | }, .{ | 45474 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 25010 | .required_features = .{ .avx, null, null, null }, | 45475 | .unused, |
| 25011 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | 45476 | .unused, |
| 25012 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }}, | 45477 | .unused, |
| 25013 | .patterns = &.{ | 45478 | .unused, |
| 25014 | .{ .src = .{ .to_sse, .none } }, | 45479 | .unused, |
| | 45480 | .unused, |
| | 45481 | .unused, |
| 25015 | }, | 45482 | }, |
| 25016 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 45483 | .dst_temps = .{.mem}, |
| | 45484 | .clobbers = .{ .eflags = true }, |
| 25017 | .each = .{ .once = &.{ | 45485 | .each = .{ .once = &.{ |
| 25018 | .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ }, | 45486 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 45487 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 45488 | .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, |
| | 45489 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 45490 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 45491 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25019 | } }, | 45492 | } }, |
| 25020 | }, .{ | 45493 | }, .{ |
| 25021 | .required_features = .{ .avx, null, null, null }, | 45494 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 25022 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | 45495 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }}, |
| 25023 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }}, | | |
| 25024 | .patterns = &.{ | 45496 | .patterns = &.{ |
| 25025 | .{ .src = .{ .to_sse, .none } }, | 45497 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25026 | }, | 45498 | }, |
| 25027 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 45499 | .extra_temps = .{ |
| 25028 | .each = .{ .once = &.{ | 45500 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25029 | .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ }, | 45501 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 25030 | } }, | 45502 | .unused, |
| 25031 | }, .{ | 45503 | .unused, |
| 25032 | .required_features = .{ .sse2, null, null, null }, | 45504 | .unused, |
| 25033 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | 45505 | .unused, |
| 25034 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }}, | 45506 | .unused, |
| 25035 | .patterns = &.{ | 45507 | .unused, |
| 25036 | .{ .src = .{ .to_mut_sse, .none } }, | 45508 | .unused, |
| 25037 | }, | 45509 | }, |
| 25038 | .dst_temps = .{.{ .ref = .src0 }}, | 45510 | .dst_temps = .{.mem}, |
| | 45511 | .clobbers = .{ .eflags = true }, |
| 25039 | .each = .{ .once = &.{ | 45512 | .each = .{ .once = &.{ |
| 25040 | .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ }, | 45513 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 45514 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 45515 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 45516 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 45517 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25041 | } }, | 45518 | } }, |
| 25042 | }, .{ | 45519 | }, .{ |
| 25043 | .required_features = .{ .sse4_1, null, null, null }, | 45520 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 25044 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | 45521 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, |
| 25045 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }}, | | |
| 25046 | .patterns = &.{ | 45522 | .patterns = &.{ |
| 25047 | .{ .src = .{ .to_mut_sse, .none } }, | 45523 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25048 | }, | 45524 | }, |
| 25049 | .dst_temps = .{.{ .ref = .src0 }}, | 45525 | .extra_temps = .{ |
| 25050 | .each = .{ .once = &.{ | 45526 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25051 | .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ }, | 45527 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 25052 | } }, | 45528 | .unused, |
| 25053 | }, .{ | 45529 | .unused, |
| 25054 | .required_features = .{ .avx2, null, null, null }, | 45530 | .unused, |
| 25055 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any }, | 45531 | .unused, |
| 25056 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, | 45532 | .unused, |
| 25057 | .patterns = &.{ | 45533 | .unused, |
| 25058 | .{ .src = .{ .to_sse, .none } }, | 45534 | .unused, |
| 25059 | }, | 45535 | }, |
| 25060 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 45536 | .dst_temps = .{.mem}, |
| | 45537 | .clobbers = .{ .eflags = true }, |
| 25061 | .each = .{ .once = &.{ | 45538 | .each = .{ .once = &.{ |
| 25062 | .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ }, | 45539 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 45540 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 45541 | .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 45542 | .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 45543 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 45544 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 45545 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25063 | } }, | 45546 | } }, |
| 25064 | }, .{ | 45547 | }, .{ |
| 25065 | .required_features = .{ .avx2, null, null, null }, | 45548 | .required_features = .{ .bmi2, null, null, null }, |
| 25066 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any }, | 45549 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 25067 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, | 45550 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 25068 | .patterns = &.{ | 45551 | .patterns = &.{ |
| 25069 | .{ .src = .{ .to_sse, .none } }, | 45552 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25070 | }, | 45553 | }, |
| 25071 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 45554 | .extra_temps = .{ |
| | 45555 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 45556 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 45557 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 45558 | .unused, |
| | 45559 | .unused, |
| | 45560 | .unused, |
| | 45561 | .unused, |
| | 45562 | .unused, |
| | 45563 | .unused, |
| | 45564 | }, |
| | 45565 | .dst_temps = .{.mem}, |
| | 45566 | .clobbers = .{ .eflags = true }, |
| 25072 | .each = .{ .once = &.{ | 45567 | .each = .{ .once = &.{ |
| 25073 | .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ }, | 45568 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 45569 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| | 45570 | .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| | 45571 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, |
| | 45572 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 45573 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25074 | } }, | 45574 | } }, |
| 25075 | }, .{ | 45575 | }, .{ |
| 25076 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, | 45576 | .required_features = .{ .fast_imm16, null, null, null }, |
| 25077 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, | 45577 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 45578 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 25078 | .patterns = &.{ | 45579 | .patterns = &.{ |
| 25079 | .{ .src = .{ .to_mem, .none } }, | 45580 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25080 | }, | 45581 | }, |
| 25081 | .extra_temps = .{ | 45582 | .extra_temps = .{ |
| 25082 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45583 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -25090,18 +45591,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25090,18 +45591,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25090 | .unused, | 45591 | .unused, |
| 25091 | }, | 45592 | }, |
| 25092 | .dst_temps = .{.mem}, | 45593 | .dst_temps = .{.mem}, |
| | 45594 | .clobbers = .{ .eflags = true }, |
| 25093 | .each = .{ .once = &.{ | 45595 | .each = .{ .once = &.{ |
| 25094 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45596 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25095 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, | 45597 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 45598 | .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ }, |
| 25096 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, | 45599 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 25097 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 45600 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 25098 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45601 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25099 | } }, | 45602 | } }, |
| 25100 | }, .{ | 45603 | }, .{ |
| 25101 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any }, | 45604 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 25102 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, | 45605 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 25103 | .patterns = &.{ | 45606 | .patterns = &.{ |
| 25104 | .{ .src = .{ .to_mem, .none } }, | 45607 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25105 | }, | 45608 | }, |
| 25106 | .extra_temps = .{ | 45609 | .extra_temps = .{ |
| 25107 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45610 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -25115,18 +45618,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25115,18 +45618,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25115 | .unused, | 45618 | .unused, |
| 25116 | }, | 45619 | }, |
| 25117 | .dst_temps = .{.mem}, | 45620 | .dst_temps = .{.mem}, |
| | 45621 | .clobbers = .{ .eflags = true }, |
| 25118 | .each = .{ .once = &.{ | 45622 | .each = .{ .once = &.{ |
| 25119 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45623 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25120 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, | 45624 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 45625 | .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, |
| 25121 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, | 45626 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 25122 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 45627 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 25123 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45628 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25124 | } }, | 45629 | } }, |
| 25125 | }, .{ | 45630 | }, .{ |
| 25126 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any }, | 45631 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 25127 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, | 45632 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }}, |
| 25128 | .patterns = &.{ | 45633 | .patterns = &.{ |
| 25129 | .{ .src = .{ .to_mem, .none } }, | 45634 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25130 | }, | 45635 | }, |
| 25131 | .extra_temps = .{ | 45636 | .extra_temps = .{ |
| 25132 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45637 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -25140,6 +45645,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25140,6 +45645,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25140 | .unused, | 45645 | .unused, |
| 25141 | }, | 45646 | }, |
| 25142 | .dst_temps = .{.mem}, | 45647 | .dst_temps = .{.mem}, |
| | 45648 | .clobbers = .{ .eflags = true }, |
| 25143 | .each = .{ .once = &.{ | 45649 | .each = .{ .once = &.{ |
| 25144 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45650 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25145 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, | 45651 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| ... | @@ -25148,15 +45654,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25148,15 +45654,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25148 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45654 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25149 | } }, | 45655 | } }, |
| 25150 | }, .{ | 45656 | }, .{ |
| 25151 | .src_constraints = .{ .any_scalar_int, .any }, | 45657 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 25152 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, | 45658 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, |
| 25153 | .patterns = &.{ | 45659 | .patterns = &.{ |
| 25154 | .{ .src = .{ .to_mem, .none } }, | 45660 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25155 | }, | 45661 | }, |
| 25156 | .extra_temps = .{ | 45662 | .extra_temps = .{ |
| 25157 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45663 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25158 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 45664 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 25159 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, | 45665 | .unused, |
| 25160 | .unused, | 45666 | .unused, |
| 25161 | .unused, | 45667 | .unused, |
| 25162 | .unused, | 45668 | .unused, |
| ... | @@ -25165,68 +45671,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25165,68 +45671,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25165 | .unused, | 45671 | .unused, |
| 25166 | }, | 45672 | }, |
| 25167 | .dst_temps = .{.mem}, | 45673 | .dst_temps = .{.mem}, |
| | 45674 | .clobbers = .{ .eflags = true }, |
| 25168 | .each = .{ .once = &.{ | 45675 | .each = .{ .once = &.{ |
| 25169 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45676 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25170 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, | 45677 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| 25171 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, | 45678 | .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 25172 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, | 45679 | .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 25173 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, | 45680 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 25174 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 45681 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 25175 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45682 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25176 | } }, | 45683 | } }, |
| 25177 | }, .{ | 45684 | }, .{ |
| 25178 | .required_features = .{ .sse, null, null, null }, | 45685 | .required_features = .{ .bmi2, null, null, null }, |
| 25179 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | 45686 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 25180 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, | 45687 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 25181 | .patterns = &.{ | | |
| 25182 | .{ .src = .{ .mut_mem, .none } }, | | |
| 25183 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 25184 | }, | | |
| 25185 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 25186 | .each = .{ .once = &.{} }, | | |
| 25187 | }, .{ | | |
| 25188 | .required_features = .{ .avx, null, null, null }, | | |
| 25189 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any }, | | |
| 25190 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }}, | | |
| 25191 | .patterns = &.{ | | |
| 25192 | .{ .src = .{ .mut_mem, .none } }, | | |
| 25193 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 25194 | }, | | |
| 25195 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 25196 | .each = .{ .once = &.{} }, | | |
| 25197 | }, .{ | | |
| 25198 | .required_features = .{ .avx, null, null, null }, | | |
| 25199 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any }, | | |
| 25200 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }}, | | |
| 25201 | .patterns = &.{ | 45688 | .patterns = &.{ |
| 25202 | .{ .src = .{ .mem, .none } }, | 45689 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25203 | .{ .src = .{ .to_sse, .none } }, | | |
| 25204 | }, | 45690 | }, |
| 25205 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 45691 | .extra_temps = .{ |
| 25206 | .each = .{ .once = &.{ | 45692 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25207 | .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ }, | 45693 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 25208 | } }, | 45694 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 25209 | }, .{ | 45695 | .unused, |
| 25210 | .required_features = .{ .sse2, null, null, null }, | 45696 | .unused, |
| 25211 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any }, | 45697 | .unused, |
| 25212 | .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }}, | 45698 | .unused, |
| 25213 | .patterns = &.{ | 45699 | .unused, |
| 25214 | .{ .src = .{ .mem, .none } }, | 45700 | .unused, |
| 25215 | .{ .src = .{ .to_sse, .none } }, | | |
| 25216 | }, | 45701 | }, |
| 25217 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 45702 | .dst_temps = .{.mem}, |
| | 45703 | .clobbers = .{ .eflags = true }, |
| 25218 | .each = .{ .once = &.{ | 45704 | .each = .{ .once = &.{ |
| 25219 | .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ }, | 45705 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 45706 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| | 45707 | .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| | 45708 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, |
| | 45709 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 45710 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25220 | } }, | 45711 | } }, |
| 25221 | }, .{ | 45712 | }, .{ |
| 25222 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any }, | 45713 | .required_features = .{ .fast_imm16, null, null, null }, |
| 25223 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, | 45714 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 45715 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 25224 | .patterns = &.{ | 45716 | .patterns = &.{ |
| 25225 | .{ .src = .{ .to_mem, .none } }, | 45717 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25226 | }, | 45718 | }, |
| 25227 | .extra_temps = .{ | 45719 | .extra_temps = .{ |
| 25228 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45720 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25229 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 45721 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 25230 | .unused, | 45722 | .unused, |
| 25231 | .unused, | 45723 | .unused, |
| 25232 | .unused, | 45724 | .unused, |
| ... | @@ -25236,22 +45728,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25236,22 +45728,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25236 | .unused, | 45728 | .unused, |
| 25237 | }, | 45729 | }, |
| 25238 | .dst_temps = .{.mem}, | 45730 | .dst_temps = .{.mem}, |
| | 45731 | .clobbers = .{ .eflags = true }, |
| 25239 | .each = .{ .once = &.{ | 45732 | .each = .{ .once = &.{ |
| 25240 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45733 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25241 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, | 45734 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| 25242 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, | 45735 | .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ }, |
| 25243 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 45736 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 45737 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 25244 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45738 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25245 | } }, | 45739 | } }, |
| 25246 | }, .{ | 45740 | }, .{ |
| 25247 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any }, | 45741 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 25248 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, | 45742 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 25249 | .patterns = &.{ | 45743 | .patterns = &.{ |
| 25250 | .{ .src = .{ .to_mem, .none } }, | 45744 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25251 | }, | 45745 | }, |
| 25252 | .extra_temps = .{ | 45746 | .extra_temps = .{ |
| 25253 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45747 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25254 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 45748 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 25255 | .unused, | 45749 | .unused, |
| 25256 | .unused, | 45750 | .unused, |
| 25257 | .unused, | 45751 | .unused, |
| ... | @@ -25261,23 +45755,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25261,23 +45755,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25261 | .unused, | 45755 | .unused, |
| 25262 | }, | 45756 | }, |
| 25263 | .dst_temps = .{.mem}, | 45757 | .dst_temps = .{.mem}, |
| | 45758 | .clobbers = .{ .eflags = true }, |
| 25264 | .each = .{ .once = &.{ | 45759 | .each = .{ .once = &.{ |
| 25265 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45760 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25266 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, | 45761 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| 25267 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, | 45762 | .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, |
| 25268 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 45763 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 45764 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 25269 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45765 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25270 | } }, | 45766 | } }, |
| 25271 | }, .{ | 45767 | }, .{ |
| 25272 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any }, | 45768 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| 25273 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, | 45769 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }}, |
| 25274 | .patterns = &.{ | 45770 | .patterns = &.{ |
| 25275 | .{ .src = .{ .to_mem, .none } }, | 45771 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25276 | }, | 45772 | }, |
| 25277 | .extra_temps = .{ | 45773 | .extra_temps = .{ |
| 25278 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45774 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25279 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 45775 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 25280 | .unused, | 45776 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 25281 | .unused, | 45777 | .unused, |
| 25282 | .unused, | 45778 | .unused, |
| 25283 | .unused, | 45779 | .unused, |
| ... | @@ -25286,23 +45782,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25286,23 +45782,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25286 | .unused, | 45782 | .unused, |
| 25287 | }, | 45783 | }, |
| 25288 | .dst_temps = .{.mem}, | 45784 | .dst_temps = .{.mem}, |
| | 45785 | .clobbers = .{ .eflags = true }, |
| 25289 | .each = .{ .once = &.{ | 45786 | .each = .{ .once = &.{ |
| 25290 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45787 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25291 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, | 45788 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 25292 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, | 45789 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| 25293 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 45790 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, |
| | 45791 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 45792 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 25294 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45793 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25295 | } }, | 45794 | } }, |
| 25296 | }, .{ | 45795 | }, .{ |
| 25297 | .src_constraints = .{ .any_scalar_int, .any }, | 45796 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| 25298 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, | 45797 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, |
| 25299 | .patterns = &.{ | 45798 | .patterns = &.{ |
| 25300 | .{ .src = .{ .to_mem, .none } }, | 45799 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25301 | }, | 45800 | }, |
| 25302 | .extra_temps = .{ | 45801 | .extra_temps = .{ |
| 25303 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45802 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25304 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 45803 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 25305 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 45804 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 25306 | .unused, | 45805 | .unused, |
| 25307 | .unused, | 45806 | .unused, |
| 25308 | .unused, | 45807 | .unused, |
| ... | @@ -25311,47 +45810,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25311,47 +45810,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25311 | .unused, | 45810 | .unused, |
| 25312 | }, | 45811 | }, |
| 25313 | .dst_temps = .{.mem}, | 45812 | .dst_temps = .{.mem}, |
| | 45813 | .clobbers = .{ .eflags = true }, |
| 25314 | .each = .{ .once = &.{ | 45814 | .each = .{ .once = &.{ |
| 25315 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45815 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25316 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, | 45816 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 25317 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, | 45817 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| 25318 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, | 45818 | .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 45819 | .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 45820 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, |
| 25319 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, | 45821 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| 25320 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 45822 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 25321 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45823 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25322 | } }, | 45824 | } }, |
| 25323 | }, .{ | 45825 | }, .{ |
| 25324 | .required_features = .{ .sse, null, null, null }, | 45826 | .required_features = .{ .bmi2, null, null, null }, |
| 25325 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any }, | 45827 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 25326 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, | 45828 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 25327 | .patterns = &.{ | | |
| 25328 | .{ .src = .{ .mut_mem, .none } }, | | |
| 25329 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 25330 | }, | | |
| 25331 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 25332 | .each = .{ .once = &.{} }, | | |
| 25333 | }, .{ | | |
| 25334 | .required_features = .{ .avx, null, null, null }, | | |
| 25335 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any }, | | |
| 25336 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }}, | | |
| 25337 | .patterns = &.{ | | |
| 25338 | .{ .src = .{ .mut_mem, .none } }, | | |
| 25339 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 25340 | }, | | |
| 25341 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 25342 | .each = .{ .once = &.{} }, | | |
| 25343 | }, .{ | | |
| 25344 | .required_features = .{ .@"64bit", null, null, null }, | | |
| 25345 | .src_constraints = .{ .any_scalar_int, .any }, | | |
| 25346 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, | | |
| 25347 | .patterns = &.{ | 45829 | .patterns = &.{ |
| 25348 | .{ .src = .{ .to_mem, .none } }, | 45830 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25349 | }, | 45831 | }, |
| 25350 | .extra_temps = .{ | 45832 | .extra_temps = .{ |
| 25351 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 45833 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25352 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 45834 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 25353 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 45835 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 25354 | .unused, | 45836 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 25355 | .unused, | 45837 | .unused, |
| 25356 | .unused, | 45838 | .unused, |
| 25357 | .unused, | 45839 | .unused, |
| ... | @@ -25359,57 +45841,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25359,57 +45841,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25359 | .unused, | 45841 | .unused, |
| 25360 | }, | 45842 | }, |
| 25361 | .dst_temps = .{.mem}, | 45843 | .dst_temps = .{.mem}, |
| | 45844 | .clobbers = .{ .eflags = true }, |
| 25362 | .each = .{ .once = &.{ | 45845 | .each = .{ .once = &.{ |
| 25363 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 45846 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25364 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, | 45847 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 25365 | .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ }, | 45848 | .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 25366 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, | 45849 | .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ }, |
| | 45850 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, |
| 25367 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, | 45851 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| 25368 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 45852 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 25369 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 45853 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25370 | } }, | 45854 | } }, |
| 25371 | }, .{ | 45855 | }, .{ |
| 25372 | .required_features = .{ .sse, null, null, null }, | 45856 | .required_features = .{ .fast_imm16, null, null, null }, |
| 25373 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any }, | 45857 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 25374 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, | 45858 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 25375 | .patterns = &.{ | | |
| 25376 | .{ .src = .{ .mut_mem, .none } }, | | |
| 25377 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 25378 | }, | | |
| 25379 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 25380 | .each = .{ .once = &.{} }, | | |
| 25381 | }, .{ | | |
| 25382 | .required_features = .{ .avx, null, null, null }, | | |
| 25383 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .xword } }, .any }, | | |
| 25384 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .xword } }}, | | |
| 25385 | .patterns = &.{ | | |
| 25386 | .{ .src = .{ .mut_mem, .none } }, | | |
| 25387 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 25388 | }, | | |
| 25389 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 25390 | .each = .{ .once = &.{} }, | | |
| 25391 | }, .{ | | |
| 25392 | .required_features = .{ .avx, null, null, null }, | | |
| 25393 | .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .yword } }, .any }, | | |
| 25394 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .yword } }}, | | |
| 25395 | .patterns = &.{ | | |
| 25396 | .{ .src = .{ .mut_mem, .none } }, | | |
| 25397 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 25398 | }, | | |
| 25399 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 25400 | .each = .{ .once = &.{} }, | | |
| 25401 | }, .{ | | |
| 25402 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, | | |
| 25403 | .src_constraints = .{ .any_scalar_int, .any }, | | |
| 25404 | .dst_constraints = .{.any_scalar_int}, | | |
| 25405 | .patterns = &.{ | 45859 | .patterns = &.{ |
| 25406 | .{ .src = .{ .to_mem, .none } }, | 45860 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25407 | }, | 45861 | }, |
| 25408 | .extra_temps = .{ | 45862 | .extra_temps = .{ |
| | 45863 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25409 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 45864 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 25410 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, | 45865 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 25411 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 45866 | .unused, |
| 25412 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | | |
| 25413 | .unused, | 45867 | .unused, |
| 25414 | .unused, | 45868 | .unused, |
| 25415 | .unused, | 45869 | .unused, |
| ... | @@ -25419,27 +45873,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25419,27 +45873,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25419 | .dst_temps = .{.mem}, | 45873 | .dst_temps = .{.mem}, |
| 25420 | .clobbers = .{ .eflags = true }, | 45874 | .clobbers = .{ .eflags = true }, |
| 25421 | .each = .{ .once = &.{ | 45875 | .each = .{ .once = &.{ |
| 25422 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, | 45876 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25423 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, | 45877 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 25424 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, | 45878 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| 25425 | .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ }, | 45879 | .{ ._, ._, .@"and", .tmp2w, .sa(.dst0, .add_umax), ._, ._ }, |
| 25426 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 45880 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, |
| 25427 | .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ }, | 45881 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| 25428 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, | 45882 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 25429 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, | 45883 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25430 | } }, | 45884 | } }, |
| 25431 | }, .{ | 45885 | }, .{ |
| 25432 | .required_features = .{ .@"64bit", null, null, null }, | 45886 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 25433 | .src_constraints = .{ .any_scalar_int, .any }, | 45887 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, |
| 25434 | .dst_constraints = .{.any_scalar_int}, | | |
| 25435 | .patterns = &.{ | 45888 | .patterns = &.{ |
| 25436 | .{ .src = .{ .to_mem, .none } }, | 45889 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25437 | }, | 45890 | }, |
| 25438 | .extra_temps = .{ | 45891 | .extra_temps = .{ |
| | 45892 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25439 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 45893 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 25440 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, | 45894 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 25441 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 45895 | .unused, |
| 25442 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | | |
| 25443 | .unused, | 45896 | .unused, |
| 25444 | .unused, | 45897 | .unused, |
| 25445 | .unused, | 45898 | .unused, |
| ... | @@ -25449,73 +45902,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25449,73 +45902,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25449 | .dst_temps = .{.mem}, | 45902 | .dst_temps = .{.mem}, |
| 25450 | .clobbers = .{ .eflags = true }, | 45903 | .clobbers = .{ .eflags = true }, |
| 25451 | .each = .{ .once = &.{ | 45904 | .each = .{ .once = &.{ |
| 25452 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, | 45905 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25453 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, | 45906 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 25454 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, | 45907 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| 25455 | .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ }, | 45908 | .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ }, |
| 25456 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 45909 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, |
| 25457 | .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ }, | 45910 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| 25458 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, | 45911 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 25459 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 45912 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25460 | } }, | | |
| 25461 | } } else comptime &.{ .{ | | |
| 25462 | .src_constraints = .{ .{ .signed_int = .byte }, .any }, | | |
| 25463 | .dst_constraints = .{.{ .signed_int = .dword }}, | | |
| 25464 | .patterns = &.{ | | |
| 25465 | .{ .src = .{ .mem, .none } }, | | |
| 25466 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25467 | }, | | |
| 25468 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, | | |
| 25469 | .each = .{ .once = &.{ | | |
| 25470 | .{ ._, ._, .movsx, .dst0d, .src0b, ._, ._ }, | | |
| 25471 | } }, | 45913 | } }, |
| 25472 | }, .{ | 45914 | }, .{ |
| 25473 | .src_constraints = .{ .{ .int = .byte }, .any }, | 45915 | .required_features = .{ .avx, null, null, null }, |
| 25474 | .dst_constraints = .{.{ .int = .dword }}, | 45916 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 45917 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| 25475 | .patterns = &.{ | 45918 | .patterns = &.{ |
| 25476 | .{ .src = .{ .mem, .none } }, | 45919 | .{ .src = .{ .to_sse, .none, .none } }, |
| 25477 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25478 | }, | 45920 | }, |
| 25479 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, | 45921 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 25480 | .each = .{ .once = &.{ | 45922 | .each = .{ .once = &.{ |
| 25481 | .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ }, | 45923 | .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| | 45924 | .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 25482 | } }, | 45925 | } }, |
| 25483 | }, .{ | 45926 | }, .{ |
| 25484 | .required_features = .{ .@"64bit", null, null, null }, | 45927 | .required_features = .{ .avx, null, null, null }, |
| 25485 | .src_constraints = .{ .{ .signed_int = .byte }, .any }, | 45928 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 25486 | .dst_constraints = .{.{ .signed_int = .qword }}, | 45929 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }}, |
| 25487 | .patterns = &.{ | 45930 | .patterns = &.{ |
| 25488 | .{ .src = .{ .mem, .none } }, | 45931 | .{ .src = .{ .to_sse, .none, .none } }, |
| 25489 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25490 | }, | 45932 | }, |
| 25491 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, | 45933 | .extra_temps = .{ |
| | 45934 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 45935 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 45936 | .unused, |
| | 45937 | .unused, |
| | 45938 | .unused, |
| | 45939 | .unused, |
| | 45940 | .unused, |
| | 45941 | .unused, |
| | 45942 | .unused, |
| | 45943 | }, |
| | 45944 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 25492 | .each = .{ .once = &.{ | 45945 | .each = .{ .once = &.{ |
| 25493 | .{ ._, ._, .movsx, .dst0q, .src0b, ._, ._ }, | 45946 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 45947 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 25494 | } }, | 45948 | } }, |
| 25495 | }, .{ | 45949 | }, .{ |
| 25496 | .required_features = .{ .@"64bit", null, null, null }, | 45950 | .required_features = .{ .sse2, null, null, null }, |
| 25497 | .src_constraints = .{ .{ .int = .byte }, .any }, | 45951 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 25498 | .dst_constraints = .{.{ .int = .qword }}, | 45952 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| 25499 | .patterns = &.{ | 45953 | .patterns = &.{ |
| 25500 | .{ .src = .{ .mem, .none } }, | 45954 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 25501 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25502 | }, | 45955 | }, |
| 25503 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, | 45956 | .dst_temps = .{.{ .ref = .src0 }}, |
| 25504 | .each = .{ .once = &.{ | 45957 | .each = .{ .once = &.{ |
| 25505 | .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ }, | 45958 | .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 45959 | .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 25506 | } }, | 45960 | } }, |
| 25507 | }, .{ | 45961 | }, .{ |
| 25508 | .required_features = .{ .@"64bit", null, null, null }, | 45962 | .required_features = .{ .sse2, null, null, null }, |
| 25509 | .src_constraints = .{ .{ .signed_int = .byte }, .any }, | 45963 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 25510 | .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }}, | 45964 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }}, |
| 25511 | .patterns = &.{ | 45965 | .patterns = &.{ |
| 25512 | .{ .src = .{ .mem, .none } }, | 45966 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 25513 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25514 | }, | 45967 | }, |
| 25515 | .extra_temps = .{ | 45968 | .extra_temps = .{ |
| 25516 | .{ .type = .i64, .kind = .{ .reg = .rax } }, | 45969 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 25517 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 45970 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 25518 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 45971 | .unused, |
| 25519 | .unused, | 45972 | .unused, |
| 25520 | .unused, | 45973 | .unused, |
| 25521 | .unused, | 45974 | .unused, |
| ... | @@ -25523,28 +45976,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25523,28 +45976,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25523 | .unused, | 45976 | .unused, |
| 25524 | .unused, | 45977 | .unused, |
| 25525 | }, | 45978 | }, |
| 25526 | .dst_temps = .{.mem}, | 45979 | .dst_temps = .{.{ .ref = .src0 }}, |
| 25527 | .clobbers = .{ .eflags = true }, | | |
| 25528 | .each = .{ .once = &.{ | 45980 | .each = .{ .once = &.{ |
| 25529 | .{ ._, ._, .movsx, .tmp0q, .src0b, ._, ._ }, | 45981 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 25530 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 45982 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 25531 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | | |
| 25532 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, | | |
| 25533 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, | | |
| 25534 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | | |
| 25535 | } }, | 45983 | } }, |
| 25536 | }, .{ | 45984 | }, .{ |
| 25537 | .required_features = .{ .@"64bit", null, null, null }, | 45985 | .required_features = .{ .sse, null, null, null }, |
| 25538 | .src_constraints = .{ .{ .int = .byte }, .any }, | 45986 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 25539 | .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, | 45987 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }}, |
| 25540 | .patterns = &.{ | 45988 | .patterns = &.{ |
| 25541 | .{ .src = .{ .mem, .none } }, | 45989 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 25542 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25543 | }, | 45990 | }, |
| 25544 | .extra_temps = .{ | 45991 | .extra_temps = .{ |
| 25545 | .{ .type = .u64, .kind = .{ .reg = .rax } }, | 45992 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 25546 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 45993 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 25547 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 45994 | .unused, |
| 25548 | .unused, | 45995 | .unused, |
| 25549 | .unused, | 45996 | .unused, |
| 25550 | .unused, | 45997 | .unused, |
| ... | @@ -25552,27 +45999,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25552,27 +45999,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25552 | .unused, | 45999 | .unused, |
| 25553 | .unused, | 46000 | .unused, |
| 25554 | }, | 46001 | }, |
| 25555 | .dst_temps = .{.mem}, | 46002 | .dst_temps = .{.{ .ref = .src0 }}, |
| 25556 | .clobbers = .{ .eflags = true }, | | |
| 25557 | .each = .{ .once = &.{ | 46003 | .each = .{ .once = &.{ |
| 25558 | .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, | 46004 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 25559 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46005 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 25560 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 46006 | } }, |
| 25561 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, | 46007 | }, .{ |
| 25562 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, | 46008 | .required_features = .{ .avx2, null, null, null }, |
| 25563 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 46009 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 46010 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }}, |
| | 46011 | .patterns = &.{ |
| | 46012 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 46013 | }, |
| | 46014 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| | 46015 | .each = .{ .once = &.{ |
| | 46016 | .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| | 46017 | .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 25564 | } }, | 46018 | } }, |
| 25565 | }, .{ | 46019 | }, .{ |
| 25566 | .src_constraints = .{ .{ .signed_int = .byte }, .any }, | 46020 | .required_features = .{ .avx2, null, null, null }, |
| 25567 | .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }}, | 46021 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 46022 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }}, |
| 25568 | .patterns = &.{ | 46023 | .patterns = &.{ |
| 25569 | .{ .src = .{ .mem, .none } }, | 46024 | .{ .src = .{ .to_sse, .none, .none } }, |
| 25570 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25571 | }, | 46025 | }, |
| 25572 | .extra_temps = .{ | 46026 | .extra_temps = .{ |
| 25573 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 46027 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 25574 | .{ .type = .usize, .kind = .{ .reg = .edi } }, | 46028 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 25575 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46029 | .unused, |
| 25576 | .unused, | 46030 | .unused, |
| 25577 | .unused, | 46031 | .unused, |
| 25578 | .unused, | 46032 | .unused, |
| ... | @@ -25580,27 +46034,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25580,27 +46034,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25580 | .unused, | 46034 | .unused, |
| 25581 | .unused, | 46035 | .unused, |
| 25582 | }, | 46036 | }, |
| 25583 | .dst_temps = .{.mem}, | 46037 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 25584 | .clobbers = .{ .eflags = true }, | | |
| 25585 | .each = .{ .once = &.{ | 46038 | .each = .{ .once = &.{ |
| 25586 | .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, | 46039 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 25587 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46040 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 25588 | .{ ._, ._sd, .sto, ._, ._, ._, ._ }, | | |
| 25589 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, | | |
| 25590 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ }, | | |
| 25591 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | | |
| 25592 | } }, | 46041 | } }, |
| 25593 | }, .{ | 46042 | }, .{ |
| 25594 | .src_constraints = .{ .{ .int = .byte }, .any }, | 46043 | .required_features = .{ .avx2, null, null, null }, |
| 25595 | .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }}, | 46044 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 46045 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }}, |
| 25596 | .patterns = &.{ | 46046 | .patterns = &.{ |
| 25597 | .{ .src = .{ .mem, .none } }, | 46047 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25598 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25599 | }, | 46048 | }, |
| 25600 | .extra_temps = .{ | 46049 | .extra_temps = .{ |
| 25601 | .{ .type = .u32, .kind = .{ .reg = .eax } }, | 46050 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25602 | .{ .type = .usize, .kind = .{ .reg = .edi } }, | 46051 | .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, |
| 25603 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46052 | .unused, |
| 25604 | .unused, | 46053 | .unused, |
| 25605 | .unused, | 46054 | .unused, |
| 25606 | .unused, | 46055 | .unused, |
| ... | @@ -25611,71 +46060,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25611,71 +46060,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25611 | .dst_temps = .{.mem}, | 46060 | .dst_temps = .{.mem}, |
| 25612 | .clobbers = .{ .eflags = true }, | 46061 | .clobbers = .{ .eflags = true }, |
| 25613 | .each = .{ .once = &.{ | 46062 | .each = .{ .once = &.{ |
| 25614 | .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, | 46063 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25615 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46064 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 25616 | .{ ._, ._sd, .sto, ._, ._, ._, ._ }, | 46065 | .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 25617 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, | 46066 | .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 25618 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ }, | 46067 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| 25619 | .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ }, | 46068 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 25620 | } }, | 46069 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25621 | }, .{ | | |
| 25622 | .src_constraints = .{ .{ .signed_int = .word }, .any }, | | |
| 25623 | .dst_constraints = .{.{ .signed_int = .dword }}, | | |
| 25624 | .patterns = &.{ | | |
| 25625 | .{ .src = .{ .mem, .none } }, | | |
| 25626 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25627 | }, | | |
| 25628 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, | | |
| 25629 | .each = .{ .once = &.{ | | |
| 25630 | .{ ._, ._, .movsx, .dst0d, .src0w, ._, ._ }, | | |
| 25631 | } }, | | |
| 25632 | }, .{ | | |
| 25633 | .src_constraints = .{ .{ .int = .word }, .any }, | | |
| 25634 | .dst_constraints = .{.{ .int = .dword }}, | | |
| 25635 | .patterns = &.{ | | |
| 25636 | .{ .src = .{ .mem, .none } }, | | |
| 25637 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25638 | }, | | |
| 25639 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, | | |
| 25640 | .each = .{ .once = &.{ | | |
| 25641 | .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ }, | | |
| 25642 | } }, | 46070 | } }, |
| 25643 | }, .{ | 46071 | }, .{ |
| 25644 | .required_features = .{ .@"64bit", null, null, null }, | 46072 | .required_features = .{ .avx2, null, null, null }, |
| 25645 | .src_constraints = .{ .{ .signed_int = .word }, .any }, | 46073 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| 25646 | .dst_constraints = .{.{ .signed_int = .qword }}, | 46074 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }}, |
| 25647 | .patterns = &.{ | 46075 | .patterns = &.{ |
| 25648 | .{ .src = .{ .mem, .none } }, | 46076 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25649 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25650 | }, | 46077 | }, |
| 25651 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, | 46078 | .extra_temps = .{ |
| 25652 | .each = .{ .once = &.{ | 46079 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25653 | .{ ._, ._, .movsx, .dst0q, .src0w, ._, ._ }, | 46080 | .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, |
| 25654 | } }, | 46081 | .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, |
| 25655 | }, .{ | 46082 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 25656 | .required_features = .{ .@"64bit", null, null, null }, | 46083 | .unused, |
| 25657 | .src_constraints = .{ .{ .int = .word }, .any }, | 46084 | .unused, |
| 25658 | .dst_constraints = .{.{ .int = .qword }}, | 46085 | .unused, |
| 25659 | .patterns = &.{ | 46086 | .unused, |
| 25660 | .{ .src = .{ .mem, .none } }, | 46087 | .unused, |
| 25661 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25662 | }, | 46088 | }, |
| 25663 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, | 46089 | .dst_temps = .{.mem}, |
| | 46090 | .clobbers = .{ .eflags = true }, |
| 25664 | .each = .{ .once = &.{ | 46091 | .each = .{ .once = &.{ |
| 25665 | .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ }, | 46092 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 46093 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| | 46094 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 46095 | .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| | 46096 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| | 46097 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 46098 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25666 | } }, | 46099 | } }, |
| 25667 | }, .{ | 46100 | }, .{ |
| 25668 | .required_features = .{ .@"64bit", null, null, null }, | 46101 | .required_features = .{ .avx, null, null, null }, |
| 25669 | .src_constraints = .{ .{ .signed_int = .word }, .any }, | 46102 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 25670 | .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }}, | 46103 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| 25671 | .patterns = &.{ | 46104 | .patterns = &.{ |
| 25672 | .{ .src = .{ .mem, .none } }, | 46105 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25673 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25674 | }, | 46106 | }, |
| 25675 | .extra_temps = .{ | 46107 | .extra_temps = .{ |
| 25676 | .{ .type = .i64, .kind = .{ .reg = .rax } }, | 46108 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25677 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 46109 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| 25678 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46110 | .unused, |
| 25679 | .unused, | 46111 | .unused, |
| 25680 | .unused, | 46112 | .unused, |
| 25681 | .unused, | 46113 | .unused, |
| ... | @@ -25686,26 +46118,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25686,26 +46118,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25686 | .dst_temps = .{.mem}, | 46118 | .dst_temps = .{.mem}, |
| 25687 | .clobbers = .{ .eflags = true }, | 46119 | .clobbers = .{ .eflags = true }, |
| 25688 | .each = .{ .once = &.{ | 46120 | .each = .{ .once = &.{ |
| 25689 | .{ ._, ._, .movsx, .tmp0q, .src0w, ._, ._ }, | 46121 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25690 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46122 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 25691 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 46123 | .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 25692 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, | 46124 | .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 25693 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, | 46125 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 25694 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 46126 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 46127 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25695 | } }, | 46128 | } }, |
| 25696 | }, .{ | 46129 | }, .{ |
| 25697 | .required_features = .{ .@"64bit", null, null, null }, | 46130 | .required_features = .{ .avx, null, null, null }, |
| 25698 | .src_constraints = .{ .{ .int = .word }, .any }, | 46131 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 25699 | .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, | 46132 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }}, |
| 25700 | .patterns = &.{ | 46133 | .patterns = &.{ |
| 25701 | .{ .src = .{ .mem, .none } }, | 46134 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25702 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25703 | }, | 46135 | }, |
| 25704 | .extra_temps = .{ | 46136 | .extra_temps = .{ |
| 25705 | .{ .type = .u64, .kind = .{ .reg = .rax } }, | 46137 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25706 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 46138 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| 25707 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46139 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| 25708 | .unused, | 46140 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 25709 | .unused, | 46141 | .unused, |
| 25710 | .unused, | 46142 | .unused, |
| 25711 | .unused, | 46143 | .unused, |
| ... | @@ -25715,24 +46147,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25715,24 +46147,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25715 | .dst_temps = .{.mem}, | 46147 | .dst_temps = .{.mem}, |
| 25716 | .clobbers = .{ .eflags = true }, | 46148 | .clobbers = .{ .eflags = true }, |
| 25717 | .each = .{ .once = &.{ | 46149 | .each = .{ .once = &.{ |
| 25718 | .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, | 46150 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 25719 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46151 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 25720 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 46152 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25721 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, | 46153 | .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| 25722 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, | 46154 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 25723 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 46155 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 46156 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25724 | } }, | 46157 | } }, |
| 25725 | }, .{ | 46158 | }, .{ |
| 25726 | .src_constraints = .{ .{ .signed_int = .word }, .any }, | 46159 | .required_features = .{ .sse2, null, null, null }, |
| 25727 | .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }}, | 46160 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 46161 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, |
| 25728 | .patterns = &.{ | 46162 | .patterns = &.{ |
| 25729 | .{ .src = .{ .mem, .none } }, | 46163 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25730 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25731 | }, | 46164 | }, |
| 25732 | .extra_temps = .{ | 46165 | .extra_temps = .{ |
| 25733 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 46166 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25734 | .{ .type = .usize, .kind = .{ .reg = .edi } }, | 46167 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| 25735 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46168 | .unused, |
| 25736 | .unused, | 46169 | .unused, |
| 25737 | .unused, | 46170 | .unused, |
| 25738 | .unused, | 46171 | .unused, |
| ... | @@ -25743,25 +46176,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25743,25 +46176,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25743 | .dst_temps = .{.mem}, | 46176 | .dst_temps = .{.mem}, |
| 25744 | .clobbers = .{ .eflags = true }, | 46177 | .clobbers = .{ .eflags = true }, |
| 25745 | .each = .{ .once = &.{ | 46178 | .each = .{ .once = &.{ |
| 25746 | .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, | 46179 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25747 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46180 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 25748 | .{ ._, ._sd, .sto, ._, ._, ._, ._ }, | 46181 | .{ ._, .p_d, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| 25749 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, | 46182 | .{ ._, .p_d, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| 25750 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ }, | 46183 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 25751 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 46184 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 46185 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25752 | } }, | 46186 | } }, |
| 25753 | }, .{ | 46187 | }, .{ |
| 25754 | .src_constraints = .{ .{ .int = .word }, .any }, | 46188 | .required_features = .{ .sse2, null, null, null }, |
| 25755 | .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }}, | 46189 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 46190 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }}, |
| 25756 | .patterns = &.{ | 46191 | .patterns = &.{ |
| 25757 | .{ .src = .{ .mem, .none } }, | 46192 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25758 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25759 | }, | 46193 | }, |
| 25760 | .extra_temps = .{ | 46194 | .extra_temps = .{ |
| 25761 | .{ .type = .u32, .kind = .{ .reg = .eax } }, | 46195 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25762 | .{ .type = .usize, .kind = .{ .reg = .edi } }, | 46196 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| 25763 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46197 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| 25764 | .unused, | 46198 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 25765 | .unused, | 46199 | .unused, |
| 25766 | .unused, | 46200 | .unused, |
| 25767 | .unused, | 46201 | .unused, |
| ... | @@ -25771,49 +46205,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25771,49 +46205,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25771 | .dst_temps = .{.mem}, | 46205 | .dst_temps = .{.mem}, |
| 25772 | .clobbers = .{ .eflags = true }, | 46206 | .clobbers = .{ .eflags = true }, |
| 25773 | .each = .{ .once = &.{ | 46207 | .each = .{ .once = &.{ |
| 25774 | .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, | 46208 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 25775 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46209 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 25776 | .{ ._, ._sd, .sto, ._, ._, ._, ._ }, | 46210 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25777 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, | 46211 | .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| 25778 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ }, | 46212 | .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 25779 | .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ }, | 46213 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 46214 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 46215 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25780 | } }, | 46216 | } }, |
| 25781 | }, .{ | 46217 | }, .{ |
| 25782 | .required_features = .{ .@"64bit", null, null, null }, | 46218 | .required_features = .{ .sse, null, null, null }, |
| 25783 | .src_constraints = .{ .{ .signed_int = .dword }, .any }, | 46219 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 25784 | .dst_constraints = .{.{ .signed_int = .qword }}, | 46220 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }}, |
| 25785 | .patterns = &.{ | 46221 | .patterns = &.{ |
| 25786 | .{ .src = .{ .mem, .none } }, | 46222 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25787 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25788 | }, | 46223 | }, |
| 25789 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, | 46224 | .extra_temps = .{ |
| 25790 | .each = .{ .once = &.{ | 46225 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25791 | .{ ._, ._d, .movsx, .dst0q, .src0d, ._, ._ }, | 46226 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| 25792 | } }, | 46227 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| 25793 | }, .{ | 46228 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 25794 | .required_features = .{ .@"64bit", null, null, null }, | 46229 | .unused, |
| 25795 | .src_constraints = .{ .{ .int = .dword }, .any }, | 46230 | .unused, |
| 25796 | .dst_constraints = .{.{ .int = .qword }}, | 46231 | .unused, |
| 25797 | .patterns = &.{ | 46232 | .unused, |
| 25798 | .{ .src = .{ .mem, .none } }, | 46233 | .unused, |
| 25799 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25800 | }, | 46234 | }, |
| 25801 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, | 46235 | .dst_temps = .{.mem}, |
| | 46236 | .clobbers = .{ .eflags = true }, |
| 25802 | .each = .{ .once = &.{ | 46237 | .each = .{ .once = &.{ |
| 25803 | .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ }, | 46238 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 46239 | .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 46240 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 46241 | .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, |
| | 46242 | .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 46243 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 46244 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 46245 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25804 | } }, | 46246 | } }, |
| 25805 | }, .{ | 46247 | }, .{ |
| 25806 | .required_features = .{ .@"64bit", null, null, null }, | 46248 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 25807 | .src_constraints = .{ .{ .signed_int = .dword }, .any }, | 46249 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }}, |
| 25808 | .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }}, | | |
| 25809 | .patterns = &.{ | 46250 | .patterns = &.{ |
| 25810 | .{ .src = .{ .mem, .none } }, | 46251 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25811 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25812 | }, | 46252 | }, |
| 25813 | .extra_temps = .{ | 46253 | .extra_temps = .{ |
| 25814 | .{ .type = .i64, .kind = .{ .reg = .rax } }, | 46254 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25815 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 46255 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 25816 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46256 | .unused, |
| 25817 | .unused, | 46257 | .unused, |
| 25818 | .unused, | 46258 | .unused, |
| 25819 | .unused, | 46259 | .unused, |
| ... | @@ -25824,25 +46264,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25824,25 +46264,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25824 | .dst_temps = .{.mem}, | 46264 | .dst_temps = .{.mem}, |
| 25825 | .clobbers = .{ .eflags = true }, | 46265 | .clobbers = .{ .eflags = true }, |
| 25826 | .each = .{ .once = &.{ | 46266 | .each = .{ .once = &.{ |
| 25827 | .{ ._, ._d, .movsx, .tmp0q, .src0d, ._, ._ }, | 46267 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25828 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46268 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| 25829 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 46269 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| 25830 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, | 46270 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 25831 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, | 46271 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25832 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | | |
| 25833 | } }, | 46272 | } }, |
| 25834 | }, .{ | 46273 | }, .{ |
| 25835 | .required_features = .{ .@"64bit", null, null, null }, | 46274 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 25836 | .src_constraints = .{ .{ .int = .dword }, .any }, | 46275 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, |
| 25837 | .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, | | |
| 25838 | .patterns = &.{ | 46276 | .patterns = &.{ |
| 25839 | .{ .src = .{ .mem, .none } }, | 46277 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25840 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25841 | }, | 46278 | }, |
| 25842 | .extra_temps = .{ | 46279 | .extra_temps = .{ |
| 25843 | .{ .type = .u64, .kind = .{ .reg = .rax } }, | 46280 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25844 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 46281 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 25845 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46282 | .unused, |
| 25846 | .unused, | 46283 | .unused, |
| 25847 | .unused, | 46284 | .unused, |
| 25848 | .unused, | 46285 | .unused, |
| ... | @@ -25853,24 +46290,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25853,24 +46290,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25853 | .dst_temps = .{.mem}, | 46290 | .dst_temps = .{.mem}, |
| 25854 | .clobbers = .{ .eflags = true }, | 46291 | .clobbers = .{ .eflags = true }, |
| 25855 | .each = .{ .once = &.{ | 46292 | .each = .{ .once = &.{ |
| 25856 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, | 46293 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25857 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46294 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| 25858 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 46295 | .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 25859 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, | 46296 | .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 25860 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, | 46297 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| 25861 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 46298 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 46299 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25862 | } }, | 46300 | } }, |
| 25863 | }, .{ | 46301 | }, .{ |
| 25864 | .src_constraints = .{ .{ .signed_int = .dword }, .any }, | 46302 | .required_features = .{ .bmi2, null, null, null }, |
| 25865 | .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }}, | 46303 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 46304 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, |
| 25866 | .patterns = &.{ | 46305 | .patterns = &.{ |
| 25867 | .{ .src = .{ .mem, .none } }, | 46306 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25868 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25869 | }, | 46307 | }, |
| 25870 | .extra_temps = .{ | 46308 | .extra_temps = .{ |
| 25871 | .{ .type = .i32, .kind = .{ .reg = .eax } }, | 46309 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25872 | .{ .type = .usize, .kind = .{ .reg = .edi } }, | 46310 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 25873 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46311 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 25874 | .unused, | 46312 | .unused, |
| 25875 | .unused, | 46313 | .unused, |
| 25876 | .unused, | 46314 | .unused, |
| ... | @@ -25881,24 +46319,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25881,24 +46319,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25881 | .dst_temps = .{.mem}, | 46319 | .dst_temps = .{.mem}, |
| 25882 | .clobbers = .{ .eflags = true }, | 46320 | .clobbers = .{ .eflags = true }, |
| 25883 | .each = .{ .once = &.{ | 46321 | .each = .{ .once = &.{ |
| 25884 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, | 46322 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25885 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46323 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 25886 | .{ ._, ._sd, .sto, ._, ._, ._, ._ }, | 46324 | .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| 25887 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, | 46325 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, |
| 25888 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ }, | 46326 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 25889 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 46327 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25890 | } }, | 46328 | } }, |
| 25891 | }, .{ | 46329 | }, .{ |
| 25892 | .src_constraints = .{ .{ .int = .dword }, .any }, | 46330 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 25893 | .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }}, | 46331 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, |
| 25894 | .patterns = &.{ | 46332 | .patterns = &.{ |
| 25895 | .{ .src = .{ .mem, .none } }, | 46333 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25896 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25897 | }, | 46334 | }, |
| 25898 | .extra_temps = .{ | 46335 | .extra_temps = .{ |
| 25899 | .{ .type = .u32, .kind = .{ .reg = .eax } }, | 46336 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25900 | .{ .type = .usize, .kind = .{ .reg = .edi } }, | 46337 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 25901 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46338 | .unused, |
| 25902 | .unused, | 46339 | .unused, |
| 25903 | .unused, | 46340 | .unused, |
| 25904 | .unused, | 46341 | .unused, |
| ... | @@ -25909,25 +46346,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25909,25 +46346,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25909 | .dst_temps = .{.mem}, | 46346 | .dst_temps = .{.mem}, |
| 25910 | .clobbers = .{ .eflags = true }, | 46347 | .clobbers = .{ .eflags = true }, |
| 25911 | .each = .{ .once = &.{ | 46348 | .each = .{ .once = &.{ |
| 25912 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, | 46349 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25913 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46350 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| 25914 | .{ ._, ._sd, .sto, ._, ._, ._, ._ }, | 46351 | .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, |
| 25915 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, | 46352 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| 25916 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ }, | 46353 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 25917 | .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ }, | 46354 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25918 | } }, | 46355 | } }, |
| 25919 | }, .{ | 46356 | }, .{ |
| 25920 | .required_features = .{ .@"64bit", null, null, null }, | 46357 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 25921 | .src_constraints = .{ .{ .signed_int = .qword }, .any }, | 46358 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }}, |
| 25922 | .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }}, | | |
| 25923 | .patterns = &.{ | 46359 | .patterns = &.{ |
| 25924 | .{ .src = .{ .mem, .none } }, | 46360 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25925 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25926 | }, | 46361 | }, |
| 25927 | .extra_temps = .{ | 46362 | .extra_temps = .{ |
| 25928 | .{ .type = .i64, .kind = .{ .reg = .rax } }, | 46363 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25929 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 46364 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 25930 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46365 | .unused, |
| 25931 | .unused, | 46366 | .unused, |
| 25932 | .unused, | 46367 | .unused, |
| 25933 | .unused, | 46368 | .unused, |
| ... | @@ -25938,25 +46373,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25938,25 +46373,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25938 | .dst_temps = .{.mem}, | 46373 | .dst_temps = .{.mem}, |
| 25939 | .clobbers = .{ .eflags = true }, | 46374 | .clobbers = .{ .eflags = true }, |
| 25940 | .each = .{ .once = &.{ | 46375 | .each = .{ .once = &.{ |
| 25941 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, | 46376 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25942 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46377 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 25943 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 46378 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| 25944 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, | 46379 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 25945 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, | 46380 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25946 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | | |
| 25947 | } }, | 46381 | } }, |
| 25948 | }, .{ | 46382 | }, .{ |
| 25949 | .required_features = .{ .@"64bit", null, null, null }, | 46383 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 25950 | .src_constraints = .{ .{ .int = .qword }, .any }, | 46384 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, |
| 25951 | .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, | | |
| 25952 | .patterns = &.{ | 46385 | .patterns = &.{ |
| 25953 | .{ .src = .{ .mem, .none } }, | 46386 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25954 | .{ .src = .{ .to_gpr, .none } }, | | |
| 25955 | }, | 46387 | }, |
| 25956 | .extra_temps = .{ | 46388 | .extra_temps = .{ |
| 25957 | .{ .type = .u64, .kind = .{ .reg = .rax } }, | 46389 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25958 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 46390 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 25959 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46391 | .unused, |
| 25960 | .unused, | 46392 | .unused, |
| 25961 | .unused, | 46393 | .unused, |
| 25962 | .unused, | 46394 | .unused, |
| ... | @@ -25967,25 +46399,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25967,25 +46399,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25967 | .dst_temps = .{.mem}, | 46399 | .dst_temps = .{.mem}, |
| 25968 | .clobbers = .{ .eflags = true }, | 46400 | .clobbers = .{ .eflags = true }, |
| 25969 | .each = .{ .once = &.{ | 46401 | .each = .{ .once = &.{ |
| 25970 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, | 46402 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25971 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46403 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 25972 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 46404 | .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 25973 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, | 46405 | .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 25974 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, | 46406 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| 25975 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 46407 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 46408 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 25976 | } }, | 46409 | } }, |
| 25977 | }, .{ | 46410 | }, .{ |
| 25978 | .required_features = .{ .@"64bit", null, null, null }, | 46411 | .required_features = .{ .bmi2, null, null, null }, |
| 25979 | .src_constraints = .{ .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }, .any }, | 46412 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 25980 | .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }}, | 46413 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, |
| 25981 | .patterns = &.{ | 46414 | .patterns = &.{ |
| 25982 | .{ .src = .{ .to_mem, .none } }, | 46415 | .{ .src = .{ .to_mem, .none, .none } }, |
| 25983 | }, | 46416 | }, |
| 25984 | .extra_temps = .{ | 46417 | .extra_temps = .{ |
| 25985 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, | 46418 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 25986 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 46419 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 25987 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46420 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 25988 | .{ .type = .i64, .kind = .{ .reg = .rax } }, | 46421 | .unused, |
| 25989 | .unused, | 46422 | .unused, |
| 25990 | .unused, | 46423 | .unused, |
| 25991 | .unused, | 46424 | .unused, |
| ... | @@ -25995,28 +46428,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -25995,28 +46428,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 25995 | .dst_temps = .{.mem}, | 46428 | .dst_temps = .{.mem}, |
| 25996 | .clobbers = .{ .eflags = true }, | 46429 | .clobbers = .{ .eflags = true }, |
| 25997 | .each = .{ .once = &.{ | 46430 | .each = .{ .once = &.{ |
| 25998 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, | 46431 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 25999 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46432 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 26000 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, | 46433 | .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| 26001 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 46434 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, |
| 26002 | .{ ._, ._sq, .lod, ._, ._, ._, ._ }, | 46435 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 26003 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 46436 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26004 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, | | |
| 26005 | .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ }, | | |
| 26006 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | | |
| 26007 | } }, | 46437 | } }, |
| 26008 | }, .{ | 46438 | }, .{ |
| 26009 | .required_features = .{ .@"64bit", null, null, null }, | 46439 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 26010 | .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any }, | 46440 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, |
| 26011 | .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, | | |
| 26012 | .patterns = &.{ | 46441 | .patterns = &.{ |
| 26013 | .{ .src = .{ .to_mem, .none } }, | 46442 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26014 | }, | 46443 | }, |
| 26015 | .extra_temps = .{ | 46444 | .extra_temps = .{ |
| 26016 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, | 46445 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26017 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 46446 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26018 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 46447 | .unused, |
| 26019 | .{ .type = .u64, .kind = .{ .reg = .rax } }, | 46448 | .unused, |
| 26020 | .unused, | 46449 | .unused, |
| 26021 | .unused, | 46450 | .unused, |
| 26022 | .unused, | 46451 | .unused, |
| ... | @@ -26026,72 +46455,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26026,72 +46455,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26026 | .dst_temps = .{.mem}, | 46455 | .dst_temps = .{.mem}, |
| 26027 | .clobbers = .{ .eflags = true }, | 46456 | .clobbers = .{ .eflags = true }, |
| 26028 | .each = .{ .once = &.{ | 46457 | .each = .{ .once = &.{ |
| 26029 | .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, | 46458 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26030 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, | 46459 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 26031 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, | 46460 | .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, |
| 26032 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 46461 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| 26033 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, | 46462 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 26034 | .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ }, | 46463 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26035 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | | |
| 26036 | } }, | | |
| 26037 | }, .{ | | |
| 26038 | .required_features = .{ .avx, null, null, null }, | | |
| 26039 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, | | |
| 26040 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, | | |
| 26041 | .patterns = &.{ | | |
| 26042 | .{ .src = .{ .mem, .none } }, | | |
| 26043 | .{ .src = .{ .to_sse, .none } }, | | |
| 26044 | }, | | |
| 26045 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 26046 | .each = .{ .once = &.{ | | |
| 26047 | .{ ._, .vp_w, .movsxb, .dst0x, .src0q, ._, ._ }, | | |
| 26048 | } }, | | |
| 26049 | }, .{ | | |
| 26050 | .required_features = .{ .avx, null, null, null }, | | |
| 26051 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any }, | | |
| 26052 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, | | |
| 26053 | .patterns = &.{ | | |
| 26054 | .{ .src = .{ .mem, .none } }, | | |
| 26055 | .{ .src = .{ .to_sse, .none } }, | | |
| 26056 | }, | | |
| 26057 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 26058 | .each = .{ .once = &.{ | | |
| 26059 | .{ ._, .vp_w, .movzxb, .dst0x, .src0q, ._, ._ }, | | |
| 26060 | } }, | | |
| 26061 | }, .{ | | |
| 26062 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 26063 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, | | |
| 26064 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, | | |
| 26065 | .patterns = &.{ | | |
| 26066 | .{ .src = .{ .mem, .none } }, | | |
| 26067 | .{ .src = .{ .to_sse, .none } }, | | |
| 26068 | }, | | |
| 26069 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 26070 | .each = .{ .once = &.{ | | |
| 26071 | .{ ._, .p_w, .movsxb, .dst0x, .src0q, ._, ._ }, | | |
| 26072 | } }, | | |
| 26073 | }, .{ | | |
| 26074 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 26075 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any }, | | |
| 26076 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, | | |
| 26077 | .patterns = &.{ | | |
| 26078 | .{ .src = .{ .mem, .none } }, | | |
| 26079 | .{ .src = .{ .to_sse, .none } }, | | |
| 26080 | }, | | |
| 26081 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 26082 | .each = .{ .once = &.{ | | |
| 26083 | .{ ._, .p_w, .movzxb, .dst0x, .src0q, ._, ._ }, | | |
| 26084 | } }, | 46464 | } }, |
| 26085 | }, .{ | 46465 | }, .{ |
| 26086 | .required_features = .{ .sse2, null, null, null }, | 46466 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 26087 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, | 46467 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }}, |
| 26088 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, | | |
| 26089 | .patterns = &.{ | 46468 | .patterns = &.{ |
| 26090 | .{ .src = .{ .to_mut_sse, .none } }, | 46469 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26091 | }, | 46470 | }, |
| 26092 | .extra_temps = .{ | 46471 | .extra_temps = .{ |
| 26093 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, | 46472 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26094 | .unused, | 46473 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26095 | .unused, | 46474 | .unused, |
| 26096 | .unused, | 46475 | .unused, |
| 26097 | .unused, | 46476 | .unused, |
| ... | @@ -26100,22 +46479,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26100,22 +46479,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26100 | .unused, | 46479 | .unused, |
| 26101 | .unused, | 46480 | .unused, |
| 26102 | }, | 46481 | }, |
| 26103 | .dst_temps = .{.{ .ref = .src0 }}, | 46482 | .dst_temps = .{.mem}, |
| | 46483 | .clobbers = .{ .eflags = true }, |
| 26104 | .each = .{ .once = &.{ | 46484 | .each = .{ .once = &.{ |
| 26105 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 46485 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26106 | .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ }, | 46486 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| 26107 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, | 46487 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 46488 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 46489 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26108 | } }, | 46490 | } }, |
| 26109 | }, .{ | 46491 | }, .{ |
| 26110 | .required_features = .{ .sse2, null, null, null }, | 46492 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 26111 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any }, | 46493 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, |
| 26112 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, | | |
| 26113 | .patterns = &.{ | 46494 | .patterns = &.{ |
| 26114 | .{ .src = .{ .to_mut_sse, .none } }, | 46495 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26115 | }, | 46496 | }, |
| 26116 | .extra_temps = .{ | 46497 | .extra_temps = .{ |
| 26117 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 46498 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26118 | .unused, | 46499 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 26119 | .unused, | 46500 | .unused, |
| 26120 | .unused, | 46501 | .unused, |
| 26121 | .unused, | 46502 | .unused, |
| ... | @@ -26124,46 +46505,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26124,46 +46505,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26124 | .unused, | 46505 | .unused, |
| 26125 | .unused, | 46506 | .unused, |
| 26126 | }, | 46507 | }, |
| 26127 | .dst_temps = .{.{ .ref = .src0 }}, | 46508 | .dst_temps = .{.mem}, |
| 26128 | .each = .{ .once = &.{ | 46509 | .clobbers = .{ .eflags = true }, |
| 26129 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | | |
| 26130 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, | | |
| 26131 | } }, | | |
| 26132 | }, .{ | | |
| 26133 | .required_features = .{ .avx2, null, null, null }, | | |
| 26134 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any }, | | |
| 26135 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }}, | | |
| 26136 | .patterns = &.{ | | |
| 26137 | .{ .src = .{ .mem, .none } }, | | |
| 26138 | .{ .src = .{ .to_sse, .none } }, | | |
| 26139 | }, | | |
| 26140 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 26141 | .each = .{ .once = &.{ | | |
| 26142 | .{ ._, .vp_w, .movsxb, .dst0y, .src0x, ._, ._ }, | | |
| 26143 | } }, | | |
| 26144 | }, .{ | | |
| 26145 | .required_features = .{ .avx2, null, null, null }, | | |
| 26146 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any }, | | |
| 26147 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }}, | | |
| 26148 | .patterns = &.{ | | |
| 26149 | .{ .src = .{ .mem, .none } }, | | |
| 26150 | .{ .src = .{ .to_sse, .none } }, | | |
| 26151 | }, | | |
| 26152 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 26153 | .each = .{ .once = &.{ | 46510 | .each = .{ .once = &.{ |
| 26154 | .{ ._, .vp_w, .movzxb, .dst0y, .src0x, ._, ._ }, | 46511 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 46512 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 46513 | .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 46514 | .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 46515 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 46516 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 46517 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26155 | } }, | 46518 | } }, |
| 26156 | }, .{ | 46519 | }, .{ |
| 26157 | .required_features = .{ .avx2, null, null, null }, | 46520 | .required_features = .{ .bmi2, null, null, null }, |
| 26158 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any }, | 46521 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 26159 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }}, | 46522 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, |
| 26160 | .patterns = &.{ | 46523 | .patterns = &.{ |
| 26161 | .{ .src = .{ .mem, .none } }, | 46524 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26162 | }, | 46525 | }, |
| 26163 | .extra_temps = .{ | 46526 | .extra_temps = .{ |
| 26164 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 46527 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26165 | .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, | 46528 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 26166 | .unused, | 46529 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26167 | .unused, | 46530 | .unused, |
| 26168 | .unused, | 46531 | .unused, |
| 26169 | .unused, | 46532 | .unused, |
| ... | @@ -26172,23 +46535,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26172,23 +46535,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26172 | .unused, | 46535 | .unused, |
| 26173 | }, | 46536 | }, |
| 26174 | .dst_temps = .{.mem}, | 46537 | .dst_temps = .{.mem}, |
| | 46538 | .clobbers = .{ .eflags = true }, |
| 26175 | .each = .{ .once = &.{ | 46539 | .each = .{ .once = &.{ |
| 26176 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 46540 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26177 | .{ .@"0:", .vp_w, .movsxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 46541 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 26178 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, | 46542 | .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| 26179 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 46543 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, |
| | 46544 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 26180 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 46545 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26181 | } }, | 46546 | } }, |
| 26182 | }, .{ | 46547 | }, .{ |
| 26183 | .required_features = .{ .avx2, null, null, null }, | 46548 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 26184 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any }, | 46549 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, |
| 26185 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }}, | | |
| 26186 | .patterns = &.{ | 46550 | .patterns = &.{ |
| 26187 | .{ .src = .{ .mem, .none } }, | 46551 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26188 | }, | 46552 | }, |
| 26189 | .extra_temps = .{ | 46553 | .extra_temps = .{ |
| 26190 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 46554 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26191 | .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, | 46555 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26192 | .unused, | 46556 | .unused, |
| 26193 | .unused, | 46557 | .unused, |
| 26194 | .unused, | 46558 | .unused, |
| ... | @@ -26198,23 +46562,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26198,23 +46562,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26198 | .unused, | 46562 | .unused, |
| 26199 | }, | 46563 | }, |
| 26200 | .dst_temps = .{.mem}, | 46564 | .dst_temps = .{.mem}, |
| | 46565 | .clobbers = .{ .eflags = true }, |
| 26201 | .each = .{ .once = &.{ | 46566 | .each = .{ .once = &.{ |
| 26202 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 46567 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26203 | .{ .@"0:", .vp_w, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 46568 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| 26204 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, | 46569 | .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, |
| 26205 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 46570 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 46571 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 26206 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 46572 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26207 | } }, | 46573 | } }, |
| 26208 | }, .{ | 46574 | }, .{ |
| 26209 | .required_features = .{ .avx, null, null, null }, | 46575 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| 26210 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, | 46576 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }}, |
| 26211 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }}, | | |
| 26212 | .patterns = &.{ | 46577 | .patterns = &.{ |
| 26213 | .{ .src = .{ .mem, .none } }, | 46578 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26214 | }, | 46579 | }, |
| 26215 | .extra_temps = .{ | 46580 | .extra_temps = .{ |
| 26216 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 46581 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26217 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, | 46582 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26218 | .unused, | 46583 | .unused, |
| 26219 | .unused, | 46584 | .unused, |
| 26220 | .unused, | 46585 | .unused, |
| ... | @@ -26224,23 +46589,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26224,23 +46589,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26224 | .unused, | 46589 | .unused, |
| 26225 | }, | 46590 | }, |
| 26226 | .dst_temps = .{.mem}, | 46591 | .dst_temps = .{.mem}, |
| | 46592 | .clobbers = .{ .eflags = true }, |
| 26227 | .each = .{ .once = &.{ | 46593 | .each = .{ .once = &.{ |
| 26228 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 46594 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26229 | .{ .@"0:", .vp_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 46595 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| 26230 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | 46596 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| 26231 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 46597 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 26232 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 46598 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26233 | } }, | 46599 | } }, |
| 26234 | }, .{ | 46600 | }, .{ |
| 26235 | .required_features = .{ .avx, null, null, null }, | 46601 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| 26236 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any }, | 46602 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, |
| 26237 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }}, | | |
| 26238 | .patterns = &.{ | 46603 | .patterns = &.{ |
| 26239 | .{ .src = .{ .mem, .none } }, | 46604 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26240 | }, | 46605 | }, |
| 26241 | .extra_temps = .{ | 46606 | .extra_temps = .{ |
| 26242 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 46607 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26243 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, | 46608 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 26244 | .unused, | 46609 | .unused, |
| 26245 | .unused, | 46610 | .unused, |
| 26246 | .unused, | 46611 | .unused, |
| ... | @@ -26250,24 +46615,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26250,24 +46615,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26250 | .unused, | 46615 | .unused, |
| 26251 | }, | 46616 | }, |
| 26252 | .dst_temps = .{.mem}, | 46617 | .dst_temps = .{.mem}, |
| | 46618 | .clobbers = .{ .eflags = true }, |
| 26253 | .each = .{ .once = &.{ | 46619 | .each = .{ .once = &.{ |
| 26254 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 46620 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26255 | .{ .@"0:", .vp_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 46621 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| 26256 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | 46622 | .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 26257 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 46623 | .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 46624 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 46625 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 26258 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 46626 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26259 | } }, | 46627 | } }, |
| 26260 | }, .{ | 46628 | }, .{ |
| 26261 | .required_features = .{ .sse4_1, null, null, null }, | 46629 | .required_features = .{ .bmi2, null, null, null }, |
| 26262 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, | 46630 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| 26263 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }}, | 46631 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, |
| 26264 | .patterns = &.{ | 46632 | .patterns = &.{ |
| 26265 | .{ .src = .{ .mem, .none } }, | 46633 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26266 | }, | 46634 | }, |
| 26267 | .extra_temps = .{ | 46635 | .extra_temps = .{ |
| 26268 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 46636 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26269 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, | 46637 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 26270 | .unused, | 46638 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26271 | .unused, | 46639 | .unused, |
| 26272 | .unused, | 46640 | .unused, |
| 26273 | .unused, | 46641 | .unused, |
| ... | @@ -26276,23 +46644,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26276,23 +46644,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26276 | .unused, | 46644 | .unused, |
| 26277 | }, | 46645 | }, |
| 26278 | .dst_temps = .{.mem}, | 46646 | .dst_temps = .{.mem}, |
| | 46647 | .clobbers = .{ .eflags = true }, |
| 26279 | .each = .{ .once = &.{ | 46648 | .each = .{ .once = &.{ |
| 26280 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 46649 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26281 | .{ .@"0:", .p_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 46650 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 26282 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | 46651 | .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| 26283 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 46652 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, |
| | 46653 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 26284 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 46654 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26285 | } }, | 46655 | } }, |
| 26286 | }, .{ | 46656 | }, .{ |
| 26287 | .required_features = .{ .sse4_1, null, null, null }, | 46657 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| 26288 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any }, | 46658 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, |
| 26289 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }}, | | |
| 26290 | .patterns = &.{ | 46659 | .patterns = &.{ |
| 26291 | .{ .src = .{ .mem, .none } }, | 46660 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26292 | }, | 46661 | }, |
| 26293 | .extra_temps = .{ | 46662 | .extra_temps = .{ |
| 26294 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 46663 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26295 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, | 46664 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26296 | .unused, | 46665 | .unused, |
| 26297 | .unused, | 46666 | .unused, |
| 26298 | .unused, | 46667 | .unused, |
| ... | @@ -26302,24 +46671,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26302,24 +46671,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26302 | .unused, | 46671 | .unused, |
| 26303 | }, | 46672 | }, |
| 26304 | .dst_temps = .{.mem}, | 46673 | .dst_temps = .{.mem}, |
| | 46674 | .clobbers = .{ .eflags = true }, |
| 26305 | .each = .{ .once = &.{ | 46675 | .each = .{ .once = &.{ |
| 26306 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 46676 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26307 | .{ .@"0:", .p_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 46677 | .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| 26308 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | 46678 | .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, |
| 26309 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 46679 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 46680 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 26310 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 46681 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26311 | } }, | 46682 | } }, |
| 26312 | }, .{ | 46683 | }, .{ |
| 26313 | .required_features = .{ .slow_incdec, null, null, null }, | 46684 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| 26314 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, | 46685 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }}, |
| 26315 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, | | |
| 26316 | .patterns = &.{ | 46686 | .patterns = &.{ |
| 26317 | .{ .src = .{ .to_mem, .none } }, | 46687 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26318 | }, | 46688 | }, |
| 26319 | .extra_temps = .{ | 46689 | .extra_temps = .{ |
| 26320 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 46690 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26321 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, | 46691 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26322 | .unused, | 46692 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26323 | .unused, | 46693 | .unused, |
| 26324 | .unused, | 46694 | .unused, |
| 26325 | .unused, | 46695 | .unused, |
| ... | @@ -26328,23 +46698,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26328,23 +46698,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26328 | .unused, | 46698 | .unused, |
| 26329 | }, | 46699 | }, |
| 26330 | .dst_temps = .{.mem}, | 46700 | .dst_temps = .{.mem}, |
| | 46701 | .clobbers = .{ .eflags = true }, |
| 26331 | .each = .{ .once = &.{ | 46702 | .each = .{ .once = &.{ |
| 26332 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 46703 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26333 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 46704 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 26334 | .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, | 46705 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| 26335 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 46706 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, |
| | 46707 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 46708 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 26336 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 46709 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26337 | } }, | 46710 | } }, |
| 26338 | }, .{ | 46711 | }, .{ |
| 26339 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, | 46712 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| 26340 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, | 46713 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, |
| 26341 | .patterns = &.{ | 46714 | .patterns = &.{ |
| 26342 | .{ .src = .{ .to_mem, .none } }, | 46715 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26343 | }, | 46716 | }, |
| 26344 | .extra_temps = .{ | 46717 | .extra_temps = .{ |
| 26345 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 46718 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26346 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, | 46719 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26347 | .unused, | 46720 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 26348 | .unused, | 46721 | .unused, |
| 26349 | .unused, | 46722 | .unused, |
| 26350 | .unused, | 46723 | .unused, |
| ... | @@ -26353,25 +46726,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26353,25 +46726,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26353 | .unused, | 46726 | .unused, |
| 26354 | }, | 46727 | }, |
| 26355 | .dst_temps = .{.mem}, | 46728 | .dst_temps = .{.mem}, |
| | 46729 | .clobbers = .{ .eflags = true }, |
| 26356 | .each = .{ .once = &.{ | 46730 | .each = .{ .once = &.{ |
| 26357 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 46731 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26358 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 46732 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 26359 | .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, | 46733 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| 26360 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 46734 | .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 26361 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 46735 | .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 46736 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, |
| | 46737 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 46738 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 46739 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26362 | } }, | 46740 | } }, |
| 26363 | }, .{ | 46741 | }, .{ |
| 26364 | .required_features = .{ .slow_incdec, null, null, null }, | 46742 | .required_features = .{ .bmi2, null, null, null }, |
| 26365 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 46743 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 26366 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, | 46744 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, |
| 26367 | .patterns = &.{ | 46745 | .patterns = &.{ |
| 26368 | .{ .src = .{ .to_mem, .none } }, | 46746 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26369 | }, | 46747 | }, |
| 26370 | .extra_temps = .{ | 46748 | .extra_temps = .{ |
| 26371 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 46749 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26372 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, | 46750 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26373 | .unused, | 46751 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 26374 | .unused, | 46752 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26375 | .unused, | 46753 | .unused, |
| 26376 | .unused, | 46754 | .unused, |
| 26377 | .unused, | 46755 | .unused, |
| ... | @@ -26379,23 +46757,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26379,23 +46757,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26379 | .unused, | 46757 | .unused, |
| 26380 | }, | 46758 | }, |
| 26381 | .dst_temps = .{.mem}, | 46759 | .dst_temps = .{.mem}, |
| | 46760 | .clobbers = .{ .eflags = true }, |
| 26382 | .each = .{ .once = &.{ | 46761 | .each = .{ .once = &.{ |
| 26383 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 46762 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26384 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 46763 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 26385 | .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, | 46764 | .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 26386 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 46765 | .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ }, |
| | 46766 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, |
| | 46767 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 46768 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 26387 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 46769 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26388 | } }, | 46770 | } }, |
| 26389 | }, .{ | 46771 | }, .{ |
| 26390 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 46772 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 26391 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, | 46773 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, |
| 26392 | .patterns = &.{ | 46774 | .patterns = &.{ |
| 26393 | .{ .src = .{ .to_mem, .none } }, | 46775 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26394 | }, | 46776 | }, |
| 26395 | .extra_temps = .{ | 46777 | .extra_temps = .{ |
| 26396 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 46778 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26397 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, | 46779 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26398 | .unused, | 46780 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 26399 | .unused, | 46781 | .unused, |
| 26400 | .unused, | 46782 | .unused, |
| 26401 | .unused, | 46783 | .unused, |
| ... | @@ -26404,71 +46786,102 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26404,71 +46786,102 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26404 | .unused, | 46786 | .unused, |
| 26405 | }, | 46787 | }, |
| 26406 | .dst_temps = .{.mem}, | 46788 | .dst_temps = .{.mem}, |
| | 46789 | .clobbers = .{ .eflags = true }, |
| 26407 | .each = .{ .once = &.{ | 46790 | .each = .{ .once = &.{ |
| 26408 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 46791 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26409 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 46792 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 26410 | .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, | 46793 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, |
| 26411 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 46794 | .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ }, |
| 26412 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 46795 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, |
| | 46796 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 46797 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 46798 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26413 | } }, | 46799 | } }, |
| 26414 | }, .{ | 46800 | }, .{ |
| 26415 | .required_features = .{ .avx, null, null, null }, | 46801 | .required_features = .{ .avx, null, null, null }, |
| 26416 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, | 46802 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 26417 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, | 46803 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| 26418 | .patterns = &.{ | 46804 | .patterns = &.{ |
| 26419 | .{ .src = .{ .mem, .none } }, | 46805 | .{ .src = .{ .to_sse, .none, .none } }, |
| 26420 | .{ .src = .{ .to_sse, .none } }, | 46806 | }, |
| | 46807 | .extra_temps = .{ |
| | 46808 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 46809 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 46810 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 46811 | .unused, |
| | 46812 | .unused, |
| | 46813 | .unused, |
| | 46814 | .unused, |
| | 46815 | .unused, |
| | 46816 | .unused, |
| 26421 | }, | 46817 | }, |
| 26422 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 46818 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 26423 | .each = .{ .once = &.{ | 46819 | .each = .{ .once = &.{ |
| 26424 | .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ }, | 46820 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 46821 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| | 46822 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| | 46823 | .{ ._, .vp_q, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ }, |
| | 46824 | .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ }, |
| 26425 | } }, | 46825 | } }, |
| 26426 | }, .{ | 46826 | }, .{ |
| 26427 | .required_features = .{ .avx, null, null, null }, | 46827 | .required_features = .{ .avx, null, null, null }, |
| 26428 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any }, | 46828 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 26429 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, | 46829 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 26430 | .patterns = &.{ | 46830 | .patterns = &.{ |
| 26431 | .{ .src = .{ .mem, .none } }, | 46831 | .{ .src = .{ .to_sse, .none, .none } }, |
| 26432 | .{ .src = .{ .to_sse, .none } }, | | |
| 26433 | }, | 46832 | }, |
| 26434 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 46833 | .extra_temps = .{ |
| 26435 | .each = .{ .once = &.{ | 46834 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 26436 | .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ }, | 46835 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 26437 | } }, | 46836 | .unused, |
| 26438 | }, .{ | 46837 | .unused, |
| 26439 | .required_features = .{ .sse4_1, null, null, null }, | 46838 | .unused, |
| 26440 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, | 46839 | .unused, |
| 26441 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, | 46840 | .unused, |
| 26442 | .patterns = &.{ | 46841 | .unused, |
| 26443 | .{ .src = .{ .mem, .none } }, | 46842 | .unused, |
| 26444 | .{ .src = .{ .to_sse, .none } }, | | |
| 26445 | }, | 46843 | }, |
| 26446 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 46844 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 26447 | .each = .{ .once = &.{ | 46845 | .each = .{ .once = &.{ |
| 26448 | .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ }, | 46846 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 46847 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 26449 | } }, | 46848 | } }, |
| 26450 | }, .{ | 46849 | }, .{ |
| 26451 | .required_features = .{ .sse4_1, null, null, null }, | 46850 | .required_features = .{ .sse2, null, null, null }, |
| 26452 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any }, | 46851 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 26453 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, | 46852 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| 26454 | .patterns = &.{ | 46853 | .patterns = &.{ |
| 26455 | .{ .src = .{ .mem, .none } }, | 46854 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 26456 | .{ .src = .{ .to_sse, .none } }, | | |
| 26457 | }, | 46855 | }, |
| 26458 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 46856 | .extra_temps = .{ |
| | 46857 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 46858 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 46859 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 46860 | .unused, |
| | 46861 | .unused, |
| | 46862 | .unused, |
| | 46863 | .unused, |
| | 46864 | .unused, |
| | 46865 | .unused, |
| | 46866 | }, |
| | 46867 | .dst_temps = .{.{ .ref = .src0 }}, |
| 26459 | .each = .{ .once = &.{ | 46868 | .each = .{ .once = &.{ |
| 26460 | .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ }, | 46869 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 46870 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 46871 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| | 46872 | .{ ._, .p_q, .add, .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 46873 | .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 26461 | } }, | 46874 | } }, |
| 26462 | }, .{ | 46875 | }, .{ |
| 26463 | .required_features = .{ .sse2, null, null, null }, | 46876 | .required_features = .{ .sse2, null, null, null }, |
| 26464 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, | 46877 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 26465 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, | 46878 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 26466 | .patterns = &.{ | 46879 | .patterns = &.{ |
| 26467 | .{ .src = .{ .to_mut_sse, .none } }, | 46880 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 26468 | }, | 46881 | }, |
| 26469 | .extra_temps = .{ | 46882 | .extra_temps = .{ |
| 26470 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, | 46883 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 26471 | .unused, | 46884 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 26472 | .unused, | 46885 | .unused, |
| 26473 | .unused, | 46886 | .unused, |
| 26474 | .unused, | 46887 | .unused, |
| ... | @@ -26479,22 +46892,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26479,22 +46892,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26479 | }, | 46892 | }, |
| 26480 | .dst_temps = .{.{ .ref = .src0 }}, | 46893 | .dst_temps = .{.{ .ref = .src0 }}, |
| 26481 | .each = .{ .once = &.{ | 46894 | .each = .{ .once = &.{ |
| 26482 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 46895 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 26483 | .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ }, | 46896 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 26484 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, | | |
| 26485 | .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ }, | | |
| 26486 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, | | |
| 26487 | } }, | 46897 | } }, |
| 26488 | }, .{ | 46898 | }, .{ |
| 26489 | .required_features = .{ .sse2, null, null, null }, | 46899 | .required_features = .{ .sse, null, null, null }, |
| 26490 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any }, | 46900 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 26491 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, | 46901 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 26492 | .patterns = &.{ | 46902 | .patterns = &.{ |
| 26493 | .{ .src = .{ .to_mut_sse, .none } }, | 46903 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 26494 | }, | 46904 | }, |
| 26495 | .extra_temps = .{ | 46905 | .extra_temps = .{ |
| 26496 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 46906 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 26497 | .unused, | 46907 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 26498 | .unused, | 46908 | .unused, |
| 26499 | .unused, | 46909 | .unused, |
| 26500 | .unused, | 46910 | .unused, |
| ... | @@ -26505,72 +46915,165 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26505,72 +46915,165 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26505 | }, | 46915 | }, |
| 26506 | .dst_temps = .{.{ .ref = .src0 }}, | 46916 | .dst_temps = .{.{ .ref = .src0 }}, |
| 26507 | .each = .{ .once = &.{ | 46917 | .each = .{ .once = &.{ |
| 26508 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 46918 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 26509 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, | 46919 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 26510 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, | | |
| 26511 | } }, | 46920 | } }, |
| 26512 | }, .{ | 46921 | }, .{ |
| 26513 | .required_features = .{ .avx2, null, null, null }, | 46922 | .required_features = .{ .avx2, null, null, null }, |
| 26514 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, | 46923 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| 26515 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }}, | 46924 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }}, |
| 26516 | .patterns = &.{ | 46925 | .patterns = &.{ |
| 26517 | .{ .src = .{ .mem, .none } }, | 46926 | .{ .src = .{ .to_sse, .none, .none } }, |
| 26518 | .{ .src = .{ .to_sse, .none } }, | 46927 | }, |
| | 46928 | .extra_temps = .{ |
| | 46929 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 46930 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 46931 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 46932 | .unused, |
| | 46933 | .unused, |
| | 46934 | .unused, |
| | 46935 | .unused, |
| | 46936 | .unused, |
| | 46937 | .unused, |
| 26519 | }, | 46938 | }, |
| 26520 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 46939 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 26521 | .each = .{ .once = &.{ | 46940 | .each = .{ .once = &.{ |
| 26522 | .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ }, | 46941 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 46942 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| | 46943 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| | 46944 | .{ ._, .vp_q, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ }, |
| | 46945 | .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ }, |
| 26523 | } }, | 46946 | } }, |
| 26524 | }, .{ | 46947 | }, .{ |
| 26525 | .required_features = .{ .avx2, null, null, null }, | 46948 | .required_features = .{ .avx2, null, null, null }, |
| 26526 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any }, | 46949 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| 26527 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }}, | 46950 | .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }}, |
| 26528 | .patterns = &.{ | 46951 | .patterns = &.{ |
| 26529 | .{ .src = .{ .mem, .none } }, | 46952 | .{ .src = .{ .to_sse, .none, .none } }, |
| 26530 | .{ .src = .{ .to_sse, .none } }, | 46953 | }, |
| | 46954 | .extra_temps = .{ |
| | 46955 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 46956 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 46957 | .unused, |
| | 46958 | .unused, |
| | 46959 | .unused, |
| | 46960 | .unused, |
| | 46961 | .unused, |
| | 46962 | .unused, |
| | 46963 | .unused, |
| 26531 | }, | 46964 | }, |
| 26532 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 46965 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 26533 | .each = .{ .once = &.{ | 46966 | .each = .{ .once = &.{ |
| 26534 | .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ }, | 46967 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 46968 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 26535 | } }, | 46969 | } }, |
| 26536 | }, .{ | 46970 | }, .{ |
| 26537 | .required_features = .{ .avx2, null, null, null }, | 46971 | .required_features = .{ .avx2, null, null, null }, |
| 26538 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, | 46972 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| 26539 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }}, | 46973 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }}, |
| 26540 | .patterns = &.{ | 46974 | .patterns = &.{ |
| 26541 | .{ .src = .{ .mem, .none } }, | 46975 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26542 | }, | 46976 | }, |
| 26543 | .extra_temps = .{ | 46977 | .extra_temps = .{ |
| 26544 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 46978 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26545 | .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, | 46979 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| | 46980 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| | 46981 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| | 46982 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 46983 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 46984 | .unused, |
| | 46985 | .unused, |
| | 46986 | .unused, |
| | 46987 | }, |
| | 46988 | .dst_temps = .{.mem}, |
| | 46989 | .clobbers = .{ .eflags = true }, |
| | 46990 | .each = .{ .once = &.{ |
| | 46991 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| | 46992 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| | 46993 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| | 46994 | .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| | 46995 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 46996 | .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| | 46997 | .{ ._, .vp_q, .add, .tmp3y, .tmp3y, .tmp2y, ._ }, |
| | 46998 | .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ }, |
| | 46999 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ }, |
| | 47000 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 47001 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 47002 | } }, |
| | 47003 | }, .{ |
| | 47004 | .required_features = .{ .avx2, null, null, null }, |
| | 47005 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 47006 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }}, |
| | 47007 | .patterns = &.{ |
| | 47008 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 47009 | }, |
| | 47010 | .extra_temps = .{ |
| | 47011 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 47012 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| | 47013 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| | 47014 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 47015 | .unused, |
| 26546 | .unused, | 47016 | .unused, |
| 26547 | .unused, | 47017 | .unused, |
| 26548 | .unused, | 47018 | .unused, |
| 26549 | .unused, | 47019 | .unused, |
| | 47020 | }, |
| | 47021 | .dst_temps = .{.mem}, |
| | 47022 | .clobbers = .{ .eflags = true }, |
| | 47023 | .each = .{ .once = &.{ |
| | 47024 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 47025 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| | 47026 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 47027 | .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| | 47028 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| | 47029 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 47030 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 47031 | } }, |
| | 47032 | }, .{ |
| | 47033 | .required_features = .{ .avx, null, null, null }, |
| | 47034 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 47035 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| | 47036 | .patterns = &.{ |
| | 47037 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 47038 | }, |
| | 47039 | .extra_temps = .{ |
| | 47040 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 47041 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 47042 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 47043 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 47044 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 47045 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 26550 | .unused, | 47046 | .unused, |
| 26551 | .unused, | 47047 | .unused, |
| 26552 | .unused, | 47048 | .unused, |
| 26553 | }, | 47049 | }, |
| 26554 | .dst_temps = .{.mem}, | 47050 | .dst_temps = .{.mem}, |
| | 47051 | .clobbers = .{ .eflags = true }, |
| 26555 | .each = .{ .once = &.{ | 47052 | .each = .{ .once = &.{ |
| 26556 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 47053 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| 26557 | .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 47054 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 26558 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ }, | 47055 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| 26559 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 47056 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| | 47057 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 47058 | .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| | 47059 | .{ ._, .vp_q, .add, .tmp3x, .tmp3x, .tmp2x, ._ }, |
| | 47060 | .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ }, |
| | 47061 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 47062 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 26560 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47063 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26561 | } }, | 47064 | } }, |
| 26562 | }, .{ | 47065 | }, .{ |
| 26563 | .required_features = .{ .avx2, null, null, null }, | 47066 | .required_features = .{ .avx, null, null, null }, |
| 26564 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any }, | 47067 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 26565 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }}, | 47068 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 26566 | .patterns = &.{ | 47069 | .patterns = &.{ |
| 26567 | .{ .src = .{ .mem, .none } }, | 47070 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26568 | }, | 47071 | }, |
| 26569 | .extra_temps = .{ | 47072 | .extra_temps = .{ |
| 26570 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47073 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26571 | .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, | 47074 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 26572 | .unused, | 47075 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 26573 | .unused, | 47076 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 26574 | .unused, | 47077 | .unused, |
| 26575 | .unused, | 47078 | .unused, |
| 26576 | .unused, | 47079 | .unused, |
| ... | @@ -26578,51 +47081,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26578,51 +47081,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26578 | .unused, | 47081 | .unused, |
| 26579 | }, | 47082 | }, |
| 26580 | .dst_temps = .{.mem}, | 47083 | .dst_temps = .{.mem}, |
| | 47084 | .clobbers = .{ .eflags = true }, |
| 26581 | .each = .{ .once = &.{ | 47085 | .each = .{ .once = &.{ |
| 26582 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 47086 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 26583 | .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 47087 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 26584 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ }, | 47088 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26585 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 47089 | .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| | 47090 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 47091 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 26586 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47092 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26587 | } }, | 47093 | } }, |
| 26588 | }, .{ | 47094 | }, .{ |
| 26589 | .required_features = .{ .avx, null, null, null }, | 47095 | .required_features = .{ .sse2, null, null, null }, |
| 26590 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, | 47096 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 26591 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, | 47097 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, |
| 26592 | .patterns = &.{ | 47098 | .patterns = &.{ |
| 26593 | .{ .src = .{ .mem, .none } }, | 47099 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26594 | }, | 47100 | }, |
| 26595 | .extra_temps = .{ | 47101 | .extra_temps = .{ |
| 26596 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47102 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26597 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, | 47103 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| 26598 | .unused, | 47104 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| 26599 | .unused, | 47105 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| 26600 | .unused, | 47106 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 26601 | .unused, | 47107 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 26602 | .unused, | 47108 | .unused, |
| 26603 | .unused, | 47109 | .unused, |
| 26604 | .unused, | 47110 | .unused, |
| 26605 | }, | 47111 | }, |
| 26606 | .dst_temps = .{.mem}, | 47112 | .dst_temps = .{.mem}, |
| | 47113 | .clobbers = .{ .eflags = true }, |
| 26607 | .each = .{ .once = &.{ | 47114 | .each = .{ .once = &.{ |
| 26608 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 47115 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| 26609 | .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 47116 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 26610 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, | 47117 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| 26611 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 47118 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| | 47119 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 47120 | .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ }, |
| | 47121 | .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 47122 | .{ ._, .p_q, .add, .tmp3x, .tmp2x, ._, ._ }, |
| | 47123 | .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ }, |
| | 47124 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 47125 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 26612 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47126 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26613 | } }, | 47127 | } }, |
| 26614 | }, .{ | 47128 | }, .{ |
| 26615 | .required_features = .{ .avx, null, null, null }, | 47129 | .required_features = .{ .sse2, null, null, null }, |
| 26616 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any }, | 47130 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 26617 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }}, | 47131 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 26618 | .patterns = &.{ | 47132 | .patterns = &.{ |
| 26619 | .{ .src = .{ .mem, .none } }, | 47133 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26620 | }, | 47134 | }, |
| 26621 | .extra_temps = .{ | 47135 | .extra_temps = .{ |
| 26622 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47136 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26623 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | 47137 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 26624 | .unused, | 47138 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 26625 | .unused, | 47139 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 26626 | .unused, | 47140 | .unused, |
| 26627 | .unused, | 47141 | .unused, |
| 26628 | .unused, | 47142 | .unused, |
| ... | @@ -26630,25 +47144,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26630,25 +47144,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26630 | .unused, | 47144 | .unused, |
| 26631 | }, | 47145 | }, |
| 26632 | .dst_temps = .{.mem}, | 47146 | .dst_temps = .{.mem}, |
| | 47147 | .clobbers = .{ .eflags = true }, |
| 26633 | .each = .{ .once = &.{ | 47148 | .each = .{ .once = &.{ |
| 26634 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 47149 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 26635 | .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 47150 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 26636 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, | 47151 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26637 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 47152 | .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| | 47153 | .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 47154 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 47155 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 26638 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47156 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26639 | } }, | 47157 | } }, |
| 26640 | }, .{ | 47158 | }, .{ |
| 26641 | .required_features = .{ .sse4_1, null, null, null }, | 47159 | .required_features = .{ .sse, null, null, null }, |
| 26642 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, | 47160 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 26643 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, | 47161 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 26644 | .patterns = &.{ | 47162 | .patterns = &.{ |
| 26645 | .{ .src = .{ .mem, .none } }, | 47163 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26646 | }, | 47164 | }, |
| 26647 | .extra_temps = .{ | 47165 | .extra_temps = .{ |
| 26648 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47166 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26649 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, | 47167 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 26650 | .unused, | 47168 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 26651 | .unused, | 47169 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 26652 | .unused, | 47170 | .unused, |
| 26653 | .unused, | 47171 | .unused, |
| 26654 | .unused, | 47172 | .unused, |
| ... | @@ -26656,23 +47174,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26656,23 +47174,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26656 | .unused, | 47174 | .unused, |
| 26657 | }, | 47175 | }, |
| 26658 | .dst_temps = .{.mem}, | 47176 | .dst_temps = .{.mem}, |
| | 47177 | .clobbers = .{ .eflags = true }, |
| 26659 | .each = .{ .once = &.{ | 47178 | .each = .{ .once = &.{ |
| 26660 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 47179 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 26661 | .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 47180 | .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 26662 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, | 47181 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26663 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 47182 | .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, |
| | 47183 | .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 47184 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 47185 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 26664 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47186 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26665 | } }, | 47187 | } }, |
| 26666 | }, .{ | 47188 | }, .{ |
| 26667 | .required_features = .{ .sse4_1, null, null, null }, | 47189 | .required_features = .{ .@"64bit", null, null, null }, |
| 26668 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any }, | 47190 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 26669 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }}, | 47191 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }}, |
| 26670 | .patterns = &.{ | 47192 | .patterns = &.{ |
| 26671 | .{ .src = .{ .mem, .none } }, | 47193 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26672 | }, | 47194 | }, |
| 26673 | .extra_temps = .{ | 47195 | .extra_temps = .{ |
| 26674 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47196 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26675 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | 47197 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 26676 | .unused, | 47198 | .unused, |
| 26677 | .unused, | 47199 | .unused, |
| 26678 | .unused, | 47200 | .unused, |
| ... | @@ -26682,23 +47204,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26682,23 +47204,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26682 | .unused, | 47204 | .unused, |
| 26683 | }, | 47205 | }, |
| 26684 | .dst_temps = .{.mem}, | 47206 | .dst_temps = .{.mem}, |
| | 47207 | .clobbers = .{ .eflags = true }, |
| 26685 | .each = .{ .once = &.{ | 47208 | .each = .{ .once = &.{ |
| 26686 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 47209 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26687 | .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 47210 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26688 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, | 47211 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| 26689 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 47212 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 26690 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47213 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26691 | } }, | 47214 | } }, |
| 26692 | }, .{ | 47215 | }, .{ |
| 26693 | .required_features = .{ .slow_incdec, null, null, null }, | 47216 | .required_features = .{ .@"64bit", null, null, null }, |
| 26694 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, | 47217 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 26695 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, | 47218 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, |
| 26696 | .patterns = &.{ | 47219 | .patterns = &.{ |
| 26697 | .{ .src = .{ .to_mem, .none } }, | 47220 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26698 | }, | 47221 | }, |
| 26699 | .extra_temps = .{ | 47222 | .extra_temps = .{ |
| 26700 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47223 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26701 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, | 47224 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 26702 | .unused, | 47225 | .unused, |
| 26703 | .unused, | 47226 | .unused, |
| 26704 | .unused, | 47227 | .unused, |
| ... | @@ -26708,23 +47231,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26708,23 +47231,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26708 | .unused, | 47231 | .unused, |
| 26709 | }, | 47232 | }, |
| 26710 | .dst_temps = .{.mem}, | 47233 | .dst_temps = .{.mem}, |
| | 47234 | .clobbers = .{ .eflags = true }, |
| 26711 | .each = .{ .once = &.{ | 47235 | .each = .{ .once = &.{ |
| 26712 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 47236 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26713 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 47237 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26714 | .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, | 47238 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| 26715 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 47239 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| | 47240 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 47241 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 26716 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47242 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26717 | } }, | 47243 | } }, |
| 26718 | }, .{ | 47244 | }, .{ |
| 26719 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, | 47245 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 26720 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, | 47246 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 47247 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, |
| 26721 | .patterns = &.{ | 47248 | .patterns = &.{ |
| 26722 | .{ .src = .{ .to_mem, .none } }, | 47249 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26723 | }, | 47250 | }, |
| 26724 | .extra_temps = .{ | 47251 | .extra_temps = .{ |
| 26725 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47252 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26726 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, | 47253 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 26727 | .unused, | 47254 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 26728 | .unused, | 47255 | .unused, |
| 26729 | .unused, | 47256 | .unused, |
| 26730 | .unused, | 47257 | .unused, |
| ... | @@ -26733,23 +47260,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26733,23 +47260,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26733 | .unused, | 47260 | .unused, |
| 26734 | }, | 47261 | }, |
| 26735 | .dst_temps = .{.mem}, | 47262 | .dst_temps = .{.mem}, |
| | 47263 | .clobbers = .{ .eflags = true }, |
| 26736 | .each = .{ .once = &.{ | 47264 | .each = .{ .once = &.{ |
| 26737 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 47265 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26738 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 47266 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 26739 | .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, | 47267 | .{ .@"0:", ._, .bzhi, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), .tmp1q, ._ }, |
| 26740 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 47268 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, |
| 26741 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 47269 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 47270 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26742 | } }, | 47271 | } }, |
| 26743 | }, .{ | 47272 | }, .{ |
| 26744 | .required_features = .{ .slow_incdec, null, null, null }, | 47273 | .required_features = .{ .@"64bit", null, null, null }, |
| 26745 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 47274 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 26746 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, | 47275 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, |
| 26747 | .patterns = &.{ | 47276 | .patterns = &.{ |
| 26748 | .{ .src = .{ .to_mem, .none } }, | 47277 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26749 | }, | 47278 | }, |
| 26750 | .extra_temps = .{ | 47279 | .extra_temps = .{ |
| 26751 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47280 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26752 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 47281 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 26753 | .unused, | 47282 | .unused, |
| 26754 | .unused, | 47283 | .unused, |
| 26755 | .unused, | 47284 | .unused, |
| ... | @@ -26759,22 +47288,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26759,22 +47288,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26759 | .unused, | 47288 | .unused, |
| 26760 | }, | 47289 | }, |
| 26761 | .dst_temps = .{.mem}, | 47290 | .dst_temps = .{.mem}, |
| | 47291 | .clobbers = .{ .eflags = true }, |
| 26762 | .each = .{ .once = &.{ | 47292 | .each = .{ .once = &.{ |
| 26763 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 47293 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26764 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 47294 | .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| 26765 | .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, | 47295 | .{ ._, ._, .@"and", .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26766 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 47296 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 47297 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 26767 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47298 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26768 | } }, | 47299 | } }, |
| 26769 | }, .{ | 47300 | }, .{ |
| 26770 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 47301 | .required_features = .{ .@"64bit", null, null, null }, |
| 26771 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, | 47302 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 47303 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }}, |
| 26772 | .patterns = &.{ | 47304 | .patterns = &.{ |
| 26773 | .{ .src = .{ .to_mem, .none } }, | 47305 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26774 | }, | 47306 | }, |
| 26775 | .extra_temps = .{ | 47307 | .extra_temps = .{ |
| 26776 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47308 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26777 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 47309 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 26778 | .unused, | 47310 | .unused, |
| 26779 | .unused, | 47311 | .unused, |
| 26780 | .unused, | 47312 | .unused, |
| ... | @@ -26784,71 +47316,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26784,71 +47316,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26784 | .unused, | 47316 | .unused, |
| 26785 | }, | 47317 | }, |
| 26786 | .dst_temps = .{.mem}, | 47318 | .dst_temps = .{.mem}, |
| | 47319 | .clobbers = .{ .eflags = true }, |
| 26787 | .each = .{ .once = &.{ | 47320 | .each = .{ .once = &.{ |
| 26788 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 47321 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26789 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 47322 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 26790 | .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, | 47323 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| 26791 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 47324 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 26792 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 47325 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26793 | } }, | | |
| 26794 | }, .{ | | |
| 26795 | .required_features = .{ .avx, null, null, null }, | | |
| 26796 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any }, | | |
| 26797 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | | |
| 26798 | .patterns = &.{ | | |
| 26799 | .{ .src = .{ .mem, .none } }, | | |
| 26800 | .{ .src = .{ .to_sse, .none } }, | | |
| 26801 | }, | | |
| 26802 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 26803 | .each = .{ .once = &.{ | | |
| 26804 | .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ }, | | |
| 26805 | } }, | | |
| 26806 | }, .{ | | |
| 26807 | .required_features = .{ .avx, null, null, null }, | | |
| 26808 | .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any }, | | |
| 26809 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, | | |
| 26810 | .patterns = &.{ | | |
| 26811 | .{ .src = .{ .mem, .none } }, | | |
| 26812 | .{ .src = .{ .to_sse, .none } }, | | |
| 26813 | }, | | |
| 26814 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 26815 | .each = .{ .once = &.{ | | |
| 26816 | .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ }, | | |
| 26817 | } }, | | |
| 26818 | }, .{ | | |
| 26819 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 26820 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any }, | | |
| 26821 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | | |
| 26822 | .patterns = &.{ | | |
| 26823 | .{ .src = .{ .mem, .none } }, | | |
| 26824 | .{ .src = .{ .to_sse, .none } }, | | |
| 26825 | }, | | |
| 26826 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 26827 | .each = .{ .once = &.{ | | |
| 26828 | .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ }, | | |
| 26829 | } }, | | |
| 26830 | }, .{ | | |
| 26831 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 26832 | .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any }, | | |
| 26833 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, | | |
| 26834 | .patterns = &.{ | | |
| 26835 | .{ .src = .{ .mem, .none } }, | | |
| 26836 | .{ .src = .{ .to_sse, .none } }, | | |
| 26837 | }, | | |
| 26838 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 26839 | .each = .{ .once = &.{ | | |
| 26840 | .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ }, | | |
| 26841 | } }, | 47326 | } }, |
| 26842 | }, .{ | 47327 | }, .{ |
| 26843 | .required_features = .{ .sse2, null, null, null }, | 47328 | .required_features = .{ .@"64bit", null, null, null }, |
| 26844 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any }, | 47329 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 26845 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | 47330 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, |
| 26846 | .patterns = &.{ | 47331 | .patterns = &.{ |
| 26847 | .{ .src = .{ .to_mut_sse, .none } }, | 47332 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26848 | }, | 47333 | }, |
| 26849 | .extra_temps = .{ | 47334 | .extra_temps = .{ |
| 26850 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, | 47335 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26851 | .unused, | 47336 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 26852 | .unused, | 47337 | .unused, |
| 26853 | .unused, | 47338 | .unused, |
| 26854 | .unused, | 47339 | .unused, |
| ... | @@ -26857,27 +47342,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26857,27 +47342,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26857 | .unused, | 47342 | .unused, |
| 26858 | .unused, | 47343 | .unused, |
| 26859 | }, | 47344 | }, |
| 26860 | .dst_temps = .{.{ .ref = .src0 }}, | 47345 | .dst_temps = .{.mem}, |
| | 47346 | .clobbers = .{ .eflags = true }, |
| 26861 | .each = .{ .once = &.{ | 47347 | .each = .{ .once = &.{ |
| 26862 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 47348 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26863 | .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ }, | 47349 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 26864 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, | 47350 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| 26865 | .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ }, | 47351 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| 26866 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, | 47352 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| 26867 | .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ }, | 47353 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 26868 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, | 47354 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26869 | } }, | 47355 | } }, |
| 26870 | }, .{ | 47356 | }, .{ |
| 26871 | .required_features = .{ .sse2, null, null, null }, | 47357 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 26872 | .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any }, | 47358 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 26873 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, | 47359 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, |
| 26874 | .patterns = &.{ | 47360 | .patterns = &.{ |
| 26875 | .{ .src = .{ .to_mut_sse, .none } }, | 47361 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26876 | }, | 47362 | }, |
| 26877 | .extra_temps = .{ | 47363 | .extra_temps = .{ |
| 26878 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 47364 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26879 | .unused, | 47365 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 26880 | .unused, | 47366 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 26881 | .unused, | 47367 | .unused, |
| 26882 | .unused, | 47368 | .unused, |
| 26883 | .unused, | 47369 | .unused, |
| ... | @@ -26885,47 +47371,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26885,47 +47371,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26885 | .unused, | 47371 | .unused, |
| 26886 | .unused, | 47372 | .unused, |
| 26887 | }, | 47373 | }, |
| 26888 | .dst_temps = .{.{ .ref = .src0 }}, | 47374 | .dst_temps = .{.mem}, |
| 26889 | .each = .{ .once = &.{ | 47375 | .clobbers = .{ .eflags = true }, |
| 26890 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | | |
| 26891 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, | | |
| 26892 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, | | |
| 26893 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, | | |
| 26894 | } }, | | |
| 26895 | }, .{ | | |
| 26896 | .required_features = .{ .avx2, null, null, null }, | | |
| 26897 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, | | |
| 26898 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }}, | | |
| 26899 | .patterns = &.{ | | |
| 26900 | .{ .src = .{ .mem, .none } }, | | |
| 26901 | .{ .src = .{ .to_sse, .none } }, | | |
| 26902 | }, | | |
| 26903 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 26904 | .each = .{ .once = &.{ | | |
| 26905 | .{ ._, .vp_q, .movsxb, .dst0y, .src0d, ._, ._ }, | | |
| 26906 | } }, | | |
| 26907 | }, .{ | | |
| 26908 | .required_features = .{ .avx2, null, null, null }, | | |
| 26909 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any }, | | |
| 26910 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }}, | | |
| 26911 | .patterns = &.{ | | |
| 26912 | .{ .src = .{ .mem, .none } }, | | |
| 26913 | .{ .src = .{ .to_sse, .none } }, | | |
| 26914 | }, | | |
| 26915 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 26916 | .each = .{ .once = &.{ | 47376 | .each = .{ .once = &.{ |
| 26917 | .{ ._, .vp_q, .movzxb, .dst0y, .src0d, ._, ._ }, | 47377 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 47378 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| | 47379 | .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._ }, |
| | 47380 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, |
| | 47381 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 47382 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26918 | } }, | 47383 | } }, |
| 26919 | }, .{ | 47384 | }, .{ |
| 26920 | .required_features = .{ .avx2, null, null, null }, | 47385 | .required_features = .{ .@"64bit", null, null, null }, |
| 26921 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, | 47386 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 26922 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }}, | 47387 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, |
| 26923 | .patterns = &.{ | 47388 | .patterns = &.{ |
| 26924 | .{ .src = .{ .mem, .none } }, | 47389 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26925 | }, | 47390 | }, |
| 26926 | .extra_temps = .{ | 47391 | .extra_temps = .{ |
| 26927 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47392 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26928 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, | 47393 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 26929 | .unused, | 47394 | .unused, |
| 26930 | .unused, | 47395 | .unused, |
| 26931 | .unused, | 47396 | .unused, |
| ... | @@ -26935,23 +47400,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26935,23 +47400,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26935 | .unused, | 47400 | .unused, |
| 26936 | }, | 47401 | }, |
| 26937 | .dst_temps = .{.mem}, | 47402 | .dst_temps = .{.mem}, |
| | 47403 | .clobbers = .{ .eflags = true }, |
| 26938 | .each = .{ .once = &.{ | 47404 | .each = .{ .once = &.{ |
| 26939 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 47405 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26940 | .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 47406 | .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| 26941 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_size), .tmp1y, ._, ._ }, | 47407 | .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| 26942 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 47408 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 47409 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 26943 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47410 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26944 | } }, | 47411 | } }, |
| 26945 | }, .{ | 47412 | }, .{ |
| 26946 | .required_features = .{ .avx2, null, null, null }, | 47413 | .required_features = .{ .@"64bit", null, null, null }, |
| 26947 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any }, | 47414 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| 26948 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }}, | 47415 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }}, |
| 26949 | .patterns = &.{ | 47416 | .patterns = &.{ |
| 26950 | .{ .src = .{ .mem, .none } }, | 47417 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26951 | }, | 47418 | }, |
| 26952 | .extra_temps = .{ | 47419 | .extra_temps = .{ |
| 26953 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47420 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26954 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, | 47421 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 26955 | .unused, | 47422 | .unused, |
| 26956 | .unused, | 47423 | .unused, |
| 26957 | .unused, | 47424 | .unused, |
| ... | @@ -26961,23 +47428,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26961,23 +47428,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26961 | .unused, | 47428 | .unused, |
| 26962 | }, | 47429 | }, |
| 26963 | .dst_temps = .{.mem}, | 47430 | .dst_temps = .{.mem}, |
| | 47431 | .clobbers = .{ .eflags = true }, |
| 26964 | .each = .{ .once = &.{ | 47432 | .each = .{ .once = &.{ |
| 26965 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 47433 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26966 | .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 47434 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| 26967 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_size), .tmp1y, ._, ._ }, | 47435 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| 26968 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 47436 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 26969 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47437 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26970 | } }, | 47438 | } }, |
| 26971 | }, .{ | 47439 | }, .{ |
| 26972 | .required_features = .{ .avx, null, null, null }, | 47440 | .required_features = .{ .@"64bit", null, null, null }, |
| 26973 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any }, | 47441 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| 26974 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | 47442 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, |
| 26975 | .patterns = &.{ | 47443 | .patterns = &.{ |
| 26976 | .{ .src = .{ .mem, .none } }, | 47444 | .{ .src = .{ .to_mem, .none, .none } }, |
| 26977 | }, | 47445 | }, |
| 26978 | .extra_temps = .{ | 47446 | .extra_temps = .{ |
| 26979 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47447 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 26980 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, | 47448 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 26981 | .unused, | 47449 | .unused, |
| 26982 | .unused, | 47450 | .unused, |
| 26983 | .unused, | 47451 | .unused, |
| ... | @@ -26987,24 +47455,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26987,24 +47455,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26987 | .unused, | 47455 | .unused, |
| 26988 | }, | 47456 | }, |
| 26989 | .dst_temps = .{.mem}, | 47457 | .dst_temps = .{.mem}, |
| | 47458 | .clobbers = .{ .eflags = true }, |
| 26990 | .each = .{ .once = &.{ | 47459 | .each = .{ .once = &.{ |
| 26991 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 47460 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 26992 | .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 47461 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| 26993 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ }, | 47462 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| 26994 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 47463 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| | 47464 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 47465 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 26995 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47466 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 26996 | } }, | 47467 | } }, |
| 26997 | }, .{ | 47468 | }, .{ |
| 26998 | .required_features = .{ .avx, null, null, null }, | 47469 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 26999 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any }, | 47470 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| 27000 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, | 47471 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, |
| 27001 | .patterns = &.{ | 47472 | .patterns = &.{ |
| 27002 | .{ .src = .{ .mem, .none } }, | 47473 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27003 | }, | 47474 | }, |
| 27004 | .extra_temps = .{ | 47475 | .extra_temps = .{ |
| 27005 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47476 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 27006 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 47477 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 27007 | .unused, | 47478 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 27008 | .unused, | 47479 | .unused, |
| 27009 | .unused, | 47480 | .unused, |
| 27010 | .unused, | 47481 | .unused, |
| ... | @@ -27013,23 +47484,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27013,23 +47484,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27013 | .unused, | 47484 | .unused, |
| 27014 | }, | 47485 | }, |
| 27015 | .dst_temps = .{.mem}, | 47486 | .dst_temps = .{.mem}, |
| | 47487 | .clobbers = .{ .eflags = true }, |
| 27016 | .each = .{ .once = &.{ | 47488 | .each = .{ .once = &.{ |
| 27017 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 47489 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 27018 | .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 47490 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 27019 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ }, | 47491 | .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._ }, |
| 27020 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 47492 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, |
| | 47493 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 27021 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47494 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 27022 | } }, | 47495 | } }, |
| 27023 | }, .{ | 47496 | }, .{ |
| 27024 | .required_features = .{ .sse4_1, null, null, null }, | 47497 | .required_features = .{ .@"64bit", null, null, null }, |
| 27025 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any }, | 47498 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| 27026 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | 47499 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, |
| 27027 | .patterns = &.{ | 47500 | .patterns = &.{ |
| 27028 | .{ .src = .{ .mem, .none } }, | 47501 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27029 | }, | 47502 | }, |
| 27030 | .extra_temps = .{ | 47503 | .extra_temps = .{ |
| 27031 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47504 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 27032 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, | 47505 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 27033 | .unused, | 47506 | .unused, |
| 27034 | .unused, | 47507 | .unused, |
| 27035 | .unused, | 47508 | .unused, |
| ... | @@ -27039,24 +47512,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27039,24 +47512,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27039 | .unused, | 47512 | .unused, |
| 27040 | }, | 47513 | }, |
| 27041 | .dst_temps = .{.mem}, | 47514 | .dst_temps = .{.mem}, |
| | 47515 | .clobbers = .{ .eflags = true }, |
| 27042 | .each = .{ .once = &.{ | 47516 | .each = .{ .once = &.{ |
| 27043 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 47517 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 27044 | .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 47518 | .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| 27045 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ }, | 47519 | .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| 27046 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 47520 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 47521 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 27047 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47522 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 27048 | } }, | 47523 | } }, |
| 27049 | }, .{ | 47524 | }, .{ |
| 27050 | .required_features = .{ .sse4_1, null, null, null }, | 47525 | .required_features = .{ .@"64bit", null, null, null }, |
| 27051 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any }, | 47526 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| 27052 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, | 47527 | .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }}, |
| 27053 | .patterns = &.{ | 47528 | .patterns = &.{ |
| 27054 | .{ .src = .{ .mem, .none } }, | 47529 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27055 | }, | 47530 | }, |
| 27056 | .extra_temps = .{ | 47531 | .extra_temps = .{ |
| 27057 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47532 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 27058 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 47533 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27059 | .unused, | 47534 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 27060 | .unused, | 47535 | .unused, |
| 27061 | .unused, | 47536 | .unused, |
| 27062 | .unused, | 47537 | .unused, |
| ... | @@ -27065,22 +47540,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27065,22 +47540,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27065 | .unused, | 47540 | .unused, |
| 27066 | }, | 47541 | }, |
| 27067 | .dst_temps = .{.mem}, | 47542 | .dst_temps = .{.mem}, |
| | 47543 | .clobbers = .{ .eflags = true }, |
| 27068 | .each = .{ .once = &.{ | 47544 | .each = .{ .once = &.{ |
| 27069 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 47545 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 27070 | .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 47546 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 27071 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ }, | 47547 | .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ }, |
| 27072 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 47548 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, |
| | 47549 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 47550 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 27073 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47551 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 27074 | } }, | 47552 | } }, |
| 27075 | }, .{ | 47553 | }, .{ |
| 27076 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, | 47554 | .required_features = .{ .@"64bit", null, null, null }, |
| 27077 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, | 47555 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| 27078 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, | 47556 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, |
| 27079 | .patterns = &.{ | 47557 | .patterns = &.{ |
| 27080 | .{ .src = .{ .to_mem, .none } }, | 47558 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27081 | }, | 47559 | }, |
| 27082 | .extra_temps = .{ | 47560 | .extra_temps = .{ |
| 27083 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47561 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 47562 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27084 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, | 47563 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 27085 | .unused, | 47564 | .unused, |
| 27086 | .unused, | 47565 | .unused, |
| ... | @@ -27088,28 +47567,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27088,28 +47567,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27088 | .unused, | 47567 | .unused, |
| 27089 | .unused, | 47568 | .unused, |
| 27090 | .unused, | 47569 | .unused, |
| 27091 | .unused, | | |
| 27092 | }, | 47570 | }, |
| 27093 | .dst_temps = .{.mem}, | 47571 | .dst_temps = .{.mem}, |
| | 47572 | .clobbers = .{ .eflags = true }, |
| 27094 | .each = .{ .once = &.{ | 47573 | .each = .{ .once = &.{ |
| 27095 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 47574 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 27096 | .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 47575 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 27097 | .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, | 47576 | .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ }, |
| 27098 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 47577 | .{ ._, ._l, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| | 47578 | .{ ._, ._r, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| | 47579 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, |
| | 47580 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 47581 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 27099 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47582 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 27100 | } }, | 47583 | } }, |
| 27101 | }, .{ | 47584 | }, .{ |
| 27102 | .required_features = .{ .@"64bit", null, null, null }, | 47585 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 27103 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, | 47586 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 27104 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, | 47587 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, |
| 27105 | .patterns = &.{ | 47588 | .patterns = &.{ |
| 27106 | .{ .src = .{ .to_mem, .none } }, | 47589 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27107 | }, | 47590 | }, |
| 27108 | .extra_temps = .{ | 47591 | .extra_temps = .{ |
| 27109 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47592 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 27110 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, | 47593 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27111 | .unused, | 47594 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 27112 | .unused, | 47595 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 27113 | .unused, | 47596 | .unused, |
| 27114 | .unused, | 47597 | .unused, |
| 27115 | .unused, | 47598 | .unused, |
| ... | @@ -27117,24 +47600,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27117,24 +47600,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27117 | .unused, | 47600 | .unused, |
| 27118 | }, | 47601 | }, |
| 27119 | .dst_temps = .{.mem}, | 47602 | .dst_temps = .{.mem}, |
| | 47603 | .clobbers = .{ .eflags = true }, |
| 27120 | .each = .{ .once = &.{ | 47604 | .each = .{ .once = &.{ |
| 27121 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 47605 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 27122 | .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 47606 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 27123 | .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, | 47607 | .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 27124 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 47608 | .{ .@"0:", ._, .bzhi, .tmp3q, .memi(.src0q, .tmp1), .tmp2q, ._ }, |
| 27125 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 47609 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, |
| | 47610 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 47611 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 47612 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 27126 | } }, | 47613 | } }, |
| 27127 | }, .{ | 47614 | }, .{ |
| 27128 | .required_features = .{ .slow_incdec, null, null, null }, | 47615 | .required_features = .{ .@"64bit", null, null, null }, |
| 27129 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 47616 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 27130 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, | 47617 | .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, |
| 27131 | .patterns = &.{ | 47618 | .patterns = &.{ |
| 27132 | .{ .src = .{ .to_mem, .none } }, | 47619 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27133 | }, | 47620 | }, |
| 27134 | .extra_temps = .{ | 47621 | .extra_temps = .{ |
| 27135 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47622 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 27136 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 47623 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27137 | .unused, | 47624 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 27138 | .unused, | 47625 | .unused, |
| 27139 | .unused, | 47626 | .unused, |
| 27140 | .unused, | 47627 | .unused, |
| ... | @@ -27143,24 +47630,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27143,24 +47630,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27143 | .unused, | 47630 | .unused, |
| 27144 | }, | 47631 | }, |
| 27145 | .dst_temps = .{.mem}, | 47632 | .dst_temps = .{.mem}, |
| | 47633 | .clobbers = .{ .eflags = true }, |
| 27146 | .each = .{ .once = &.{ | 47634 | .each = .{ .once = &.{ |
| 27147 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 47635 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 27148 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 47636 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 27149 | .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, | 47637 | .{ .@"0:", ._, .mov, .tmp2q, .ua(.dst0, .add_umax), ._, ._ }, |
| 27150 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 47638 | .{ ._, ._, .@"and", .tmp2q, .memi(.src0q, .tmp1), ._, ._ }, |
| | 47639 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, |
| | 47640 | .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, |
| | 47641 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 27151 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47642 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 27152 | } }, | 47643 | } }, |
| 27153 | }, .{ | 47644 | }, .{ |
| 27154 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 47645 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 27155 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, | 47646 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| | 47647 | .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }}, |
| 27156 | .patterns = &.{ | 47648 | .patterns = &.{ |
| 27157 | .{ .src = .{ .to_mem, .none } }, | 47649 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27158 | }, | 47650 | }, |
| 27159 | .extra_temps = .{ | 47651 | .extra_temps = .{ |
| 27160 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 27161 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 47652 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27162 | .unused, | 47653 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27163 | .unused, | 47654 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| | 47655 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27164 | .unused, | 47656 | .unused, |
| 27165 | .unused, | 47657 | .unused, |
| 27166 | .unused, | 47658 | .unused, |
| ... | @@ -27168,132 +47660,128 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27168,132 +47660,128 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27168 | .unused, | 47660 | .unused, |
| 27169 | }, | 47661 | }, |
| 27170 | .dst_temps = .{.mem}, | 47662 | .dst_temps = .{.mem}, |
| | 47663 | .clobbers = .{ .eflags = true }, |
| 27171 | .each = .{ .once = &.{ | 47664 | .each = .{ .once = &.{ |
| 27172 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 47665 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27173 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 47666 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27174 | .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, | 47667 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27175 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 47668 | .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ }, |
| 27176 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 47669 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 27177 | } }, | 47670 | .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 27178 | }, .{ | 47671 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 27179 | .required_features = .{ .avx, null, null, null }, | 47672 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 27180 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, | | |
| 27181 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, | | |
| 27182 | .patterns = &.{ | | |
| 27183 | .{ .src = .{ .mem, .none } }, | | |
| 27184 | .{ .src = .{ .to_sse, .none } }, | | |
| 27185 | }, | | |
| 27186 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 27187 | .each = .{ .once = &.{ | | |
| 27188 | .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ }, | | |
| 27189 | .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ }, | | |
| 27190 | } }, | | |
| 27191 | }, .{ | | |
| 27192 | .required_features = .{ .avx, null, null, null }, | | |
| 27193 | .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | | |
| 27194 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, | | |
| 27195 | .patterns = &.{ | | |
| 27196 | .{ .src = .{ .mem, .none } }, | | |
| 27197 | .{ .src = .{ .to_sse, .none } }, | | |
| 27198 | }, | | |
| 27199 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 27200 | .each = .{ .once = &.{ | | |
| 27201 | .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ }, | | |
| 27202 | .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ }, | | |
| 27203 | } }, | 47673 | } }, |
| 27204 | }, .{ | 47674 | }, .{ |
| 27205 | .required_features = .{ .sse4_1, null, null, null }, | 47675 | .required_features = .{ .@"64bit", null, null, null }, |
| 27206 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, | 47676 | .src_constraints = .{ .any_scalar_int, .any, .any }, |
| 27207 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, | 47677 | .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }}, |
| 27208 | .patterns = &.{ | 47678 | .patterns = &.{ |
| 27209 | .{ .src = .{ .mem, .none } }, | 47679 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27210 | .{ .src = .{ .to_sse, .none } }, | | |
| 27211 | }, | 47680 | }, |
| 27212 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 47681 | .extra_temps = .{ |
| 27213 | .each = .{ .once = &.{ | 47682 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27214 | .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ }, | 47683 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27215 | .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ }, | 47684 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27216 | } }, | 47685 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27217 | }, .{ | 47686 | .unused, |
| 27218 | .required_features = .{ .sse4_1, null, null, null }, | 47687 | .unused, |
| 27219 | .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 47688 | .unused, |
| 27220 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, | 47689 | .unused, |
| 27221 | .patterns = &.{ | 47690 | .unused, |
| 27222 | .{ .src = .{ .mem, .none } }, | | |
| 27223 | .{ .src = .{ .to_sse, .none } }, | | |
| 27224 | }, | 47691 | }, |
| 27225 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 47692 | .dst_temps = .{.mem}, |
| | 47693 | .clobbers = .{ .eflags = true }, |
| 27226 | .each = .{ .once = &.{ | 47694 | .each = .{ .once = &.{ |
| 27227 | .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ }, | 47695 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27228 | .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ }, | 47696 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| | 47697 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| | 47698 | .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ }, |
| | 47699 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 47700 | .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 47701 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| | 47702 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 27229 | } }, | 47703 | } }, |
| 27230 | }, .{ | 47704 | }, .{ |
| 27231 | .required_features = .{ .sse2, null, null, null }, | 47705 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 27232 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, | 47706 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| 27233 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, | 47707 | .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }}, |
| 27234 | .patterns = &.{ | 47708 | .patterns = &.{ |
| 27235 | .{ .src = .{ .to_mut_sse, .none } }, | 47709 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27236 | }, | 47710 | }, |
| 27237 | .extra_temps = .{ | 47711 | .extra_temps = .{ |
| 27238 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, | 47712 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27239 | .unused, | 47713 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27240 | .unused, | 47714 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27241 | .unused, | 47715 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27242 | .unused, | 47716 | .unused, |
| 27243 | .unused, | 47717 | .unused, |
| 27244 | .unused, | 47718 | .unused, |
| 27245 | .unused, | 47719 | .unused, |
| 27246 | .unused, | 47720 | .unused, |
| 27247 | }, | 47721 | }, |
| 27248 | .dst_temps = .{.{ .ref = .src0 }}, | 47722 | .dst_temps = .{.mem}, |
| | 47723 | .clobbers = .{ .eflags = true }, |
| 27249 | .each = .{ .once = &.{ | 47724 | .each = .{ .once = &.{ |
| 27250 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 47725 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27251 | .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ }, | 47726 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27252 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, | 47727 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27253 | .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ }, | 47728 | .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, |
| 27254 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, | 47729 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 27255 | .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ }, | 47730 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ }, |
| 27256 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, | 47731 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 27257 | .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ }, | 47732 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 27258 | .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ }, | 47733 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, |
| | 47734 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 47735 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| | 47736 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| | 47737 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 27259 | } }, | 47738 | } }, |
| 27260 | }, .{ | 47739 | }, .{ |
| 27261 | .required_features = .{ .sse2, null, null, null }, | 47740 | .required_features = .{ .@"64bit", null, null, null }, |
| 27262 | .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 47741 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| 27263 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, | 47742 | .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }}, |
| 27264 | .patterns = &.{ | 47743 | .patterns = &.{ |
| 27265 | .{ .src = .{ .to_mut_sse, .none } }, | 47744 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27266 | }, | 47745 | }, |
| 27267 | .extra_temps = .{ | 47746 | .extra_temps = .{ |
| 27268 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 47747 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27269 | .unused, | 47748 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27270 | .unused, | 47749 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27271 | .unused, | 47750 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27272 | .unused, | 47751 | .unused, |
| 27273 | .unused, | 47752 | .unused, |
| 27274 | .unused, | 47753 | .unused, |
| 27275 | .unused, | 47754 | .unused, |
| 27276 | .unused, | 47755 | .unused, |
| 27277 | }, | 47756 | }, |
| 27278 | .dst_temps = .{.{ .ref = .src0 }}, | 47757 | .dst_temps = .{.mem}, |
| | 47758 | .clobbers = .{ .eflags = true }, |
| 27279 | .each = .{ .once = &.{ | 47759 | .each = .{ .once = &.{ |
| 27280 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 47760 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27281 | .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ }, | 47761 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27282 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, | 47762 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27283 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, | 47763 | .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, |
| 27284 | .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ }, | 47764 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 47765 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ }, |
| | 47766 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| | 47767 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| | 47768 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, |
| | 47769 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 47770 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| | 47771 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| | 47772 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 27285 | } }, | 47773 | } }, |
| 27286 | }, .{ | 47774 | }, .{ |
| 27287 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, | 47775 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 27288 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, | 47776 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| 27289 | .dst_constraints = .{.any_scalar_signed_int}, | 47777 | .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }}, |
| 27290 | .patterns = &.{ | 47778 | .patterns = &.{ |
| 27291 | .{ .src = .{ .to_mem, .none } }, | 47779 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27292 | }, | 47780 | }, |
| 27293 | .extra_temps = .{ | 47781 | .extra_temps = .{ |
| 27294 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47782 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 47783 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27295 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 47784 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27296 | .{ .type = .i64, .kind = .{ .reg = .rax } }, | | |
| 27297 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 47785 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27298 | .unused, | 47786 | .unused, |
| 27299 | .unused, | 47787 | .unused, |
| ... | @@ -27302,28 +47790,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27302,28 +47790,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27302 | .unused, | 47790 | .unused, |
| 27303 | }, | 47791 | }, |
| 27304 | .dst_temps = .{.mem}, | 47792 | .dst_temps = .{.mem}, |
| | 47793 | .clobbers = .{ .eflags = true }, |
| 27305 | .each = .{ .once = &.{ | 47794 | .each = .{ .once = &.{ |
| 27306 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 47795 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27307 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, | 47796 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27308 | .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 47797 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27309 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 47798 | .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, |
| 27310 | .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ }, | 47799 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 27311 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, | 47800 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ }, |
| 27312 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 47801 | .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, |
| 27313 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 47802 | .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, |
| 27314 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 47803 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| | 47804 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| | 47805 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, |
| | 47806 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 47807 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| | 47808 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| | 47809 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 27315 | } }, | 47810 | } }, |
| 27316 | }, .{ | 47811 | }, .{ |
| 27317 | .required_features = .{ .@"64bit", null, null, null }, | 47812 | .required_features = .{ .@"64bit", null, null, null }, |
| 27318 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, | 47813 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| 27319 | .dst_constraints = .{.any_scalar_signed_int}, | 47814 | .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }}, |
| 27320 | .patterns = &.{ | 47815 | .patterns = &.{ |
| 27321 | .{ .src = .{ .to_mem, .none } }, | 47816 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27322 | }, | 47817 | }, |
| 27323 | .extra_temps = .{ | 47818 | .extra_temps = .{ |
| 27324 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47819 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 47820 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27325 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 47821 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27326 | .{ .type = .i64, .kind = .{ .reg = .rax } }, | | |
| 27327 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 47822 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27328 | .unused, | 47823 | .unused, |
| 27329 | .unused, | 47824 | .unused, |
| ... | @@ -27332,312 +47827,304 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27332,312 +47827,304 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27332 | .unused, | 47827 | .unused, |
| 27333 | }, | 47828 | }, |
| 27334 | .dst_temps = .{.mem}, | 47829 | .dst_temps = .{.mem}, |
| | 47830 | .clobbers = .{ .eflags = true }, |
| 27335 | .each = .{ .once = &.{ | 47831 | .each = .{ .once = &.{ |
| 27336 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 47832 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27337 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, | 47833 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27338 | .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 47834 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27339 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 47835 | .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, |
| 27340 | .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ }, | 47836 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 27341 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, | 47837 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ }, |
| 27342 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 47838 | .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, |
| 27343 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 47839 | .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, |
| | 47840 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| | 47841 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| | 47842 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, |
| | 47843 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 47844 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| | 47845 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 27344 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 47846 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 27345 | } }, | 47847 | } }, |
| 27346 | }, .{ | 47848 | }, .{ |
| 27347 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, | 47849 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 27348 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 47850 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| 27349 | .dst_constraints = .{.any_scalar_int}, | 47851 | .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }}, |
| 27350 | .patterns = &.{ | 47852 | .patterns = &.{ |
| 27351 | .{ .src = .{ .to_mem, .none } }, | 47853 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27352 | }, | 47854 | }, |
| 27353 | .extra_temps = .{ | 47855 | .extra_temps = .{ |
| 27354 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47856 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 47857 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27355 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 47858 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27356 | .{ .type = .u64, .kind = .{ .reg = .rax } }, | | |
| 27357 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 47859 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27358 | .unused, | 47860 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| 27359 | .unused, | 47861 | .unused, |
| 27360 | .unused, | 47862 | .unused, |
| 27361 | .unused, | 47863 | .unused, |
| 27362 | .unused, | 47864 | .unused, |
| 27363 | }, | 47865 | }, |
| 27364 | .dst_temps = .{.mem}, | 47866 | .dst_temps = .{.mem}, |
| | 47867 | .clobbers = .{ .eflags = true }, |
| 27365 | .each = .{ .once = &.{ | 47868 | .each = .{ .once = &.{ |
| 27366 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 47869 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27367 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, | 47870 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27368 | .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 47871 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| | 47872 | .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 47873 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 47874 | .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ }, |
| | 47875 | .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, |
| | 47876 | .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, |
| 27369 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 47877 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| 27370 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, | 47878 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 27371 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, | 47879 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 27372 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 47880 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 27373 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | | |
| 27374 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 27375 | } }, | 47881 | } }, |
| 27376 | }, .{ | 47882 | }, .{ |
| 27377 | .required_features = .{ .@"64bit", null, null, null }, | 47883 | .required_features = .{ .@"64bit", null, null, null }, |
| 27378 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, | 47884 | .src_constraints = .{ .any_scalar_signed_int, .any, .any }, |
| 27379 | .dst_constraints = .{.any_scalar_int}, | 47885 | .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }}, |
| 27380 | .patterns = &.{ | 47886 | .patterns = &.{ |
| 27381 | .{ .src = .{ .to_mem, .none } }, | 47887 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27382 | }, | 47888 | }, |
| 27383 | .extra_temps = .{ | 47889 | .extra_temps = .{ |
| 27384 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47890 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 47891 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27385 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 47892 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27386 | .{ .type = .u64, .kind = .{ .reg = .rax } }, | | |
| 27387 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 47893 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27388 | .unused, | 47894 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| 27389 | .unused, | 47895 | .unused, |
| 27390 | .unused, | 47896 | .unused, |
| 27391 | .unused, | 47897 | .unused, |
| 27392 | .unused, | 47898 | .unused, |
| 27393 | }, | 47899 | }, |
| 27394 | .dst_temps = .{.mem}, | 47900 | .dst_temps = .{.mem}, |
| | 47901 | .clobbers = .{ .eflags = true }, |
| 27395 | .each = .{ .once = &.{ | 47902 | .each = .{ .once = &.{ |
| 27396 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 47903 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27397 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, | 47904 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27398 | .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 47905 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| | 47906 | .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 47907 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 47908 | .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ }, |
| | 47909 | .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, |
| | 47910 | .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, |
| 27399 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 47911 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| 27400 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, | 47912 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 27401 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, | 47913 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 27402 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | | |
| 27403 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | | |
| 27404 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 47914 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 27405 | } }, | 47915 | } }, |
| 27406 | }, .{ | 47916 | }, .{ |
| 27407 | .required_features = .{ .avx, null, null, null }, | 47917 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 27408 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, | 47918 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 27409 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, | 47919 | .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 27410 | .patterns = &.{ | | |
| 27411 | .{ .src = .{ .mem, .none } }, | | |
| 27412 | .{ .src = .{ .to_sse, .none } }, | | |
| 27413 | }, | | |
| 27414 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 27415 | .each = .{ .once = &.{ | | |
| 27416 | .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ }, | | |
| 27417 | } }, | | |
| 27418 | }, .{ | | |
| 27419 | .required_features = .{ .avx, null, null, null }, | | |
| 27420 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any }, | | |
| 27421 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, | | |
| 27422 | .patterns = &.{ | | |
| 27423 | .{ .src = .{ .mem, .none } }, | | |
| 27424 | .{ .src = .{ .to_sse, .none } }, | | |
| 27425 | }, | | |
| 27426 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 27427 | .each = .{ .once = &.{ | | |
| 27428 | .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ }, | | |
| 27429 | } }, | | |
| 27430 | }, .{ | | |
| 27431 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 27432 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, | | |
| 27433 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, | | |
| 27434 | .patterns = &.{ | | |
| 27435 | .{ .src = .{ .mem, .none } }, | | |
| 27436 | .{ .src = .{ .to_sse, .none } }, | | |
| 27437 | }, | | |
| 27438 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 27439 | .each = .{ .once = &.{ | | |
| 27440 | .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ }, | | |
| 27441 | } }, | | |
| 27442 | }, .{ | | |
| 27443 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 27444 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any }, | | |
| 27445 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, | | |
| 27446 | .patterns = &.{ | | |
| 27447 | .{ .src = .{ .mem, .none } }, | | |
| 27448 | .{ .src = .{ .to_sse, .none } }, | | |
| 27449 | }, | | |
| 27450 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 27451 | .each = .{ .once = &.{ | | |
| 27452 | .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ }, | | |
| 27453 | } }, | | |
| 27454 | }, .{ | | |
| 27455 | .required_features = .{ .sse2, null, null, null }, | | |
| 27456 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, | | |
| 27457 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, | | |
| 27458 | .patterns = &.{ | 47920 | .patterns = &.{ |
| 27459 | .{ .src = .{ .to_mut_sse, .none } }, | 47921 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27460 | }, | 47922 | }, |
| 27461 | .extra_temps = .{ | 47923 | .extra_temps = .{ |
| 27462 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, | 47924 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27463 | .unused, | 47925 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27464 | .unused, | 47926 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27465 | .unused, | 47927 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| 27466 | .unused, | 47928 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27467 | .unused, | 47929 | .unused, |
| 27468 | .unused, | 47930 | .unused, |
| 27469 | .unused, | 47931 | .unused, |
| 27470 | .unused, | 47932 | .unused, |
| 27471 | }, | 47933 | }, |
| 27472 | .dst_temps = .{.{ .ref = .src0 }}, | 47934 | .dst_temps = .{.mem}, |
| | 47935 | .clobbers = .{ .eflags = true }, |
| 27473 | .each = .{ .once = &.{ | 47936 | .each = .{ .once = &.{ |
| 27474 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 47937 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27475 | .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ }, | 47938 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27476 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, | 47939 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| | 47940 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| | 47941 | .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 47942 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 47943 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 47944 | .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 47945 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| | 47946 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 27477 | } }, | 47947 | } }, |
| 27478 | }, .{ | 47948 | }, .{ |
| 27479 | .required_features = .{ .sse2, null, null, null }, | 47949 | .required_features = .{ .@"64bit", null, null, null }, |
| 27480 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any }, | 47950 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 27481 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, | 47951 | .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 27482 | .patterns = &.{ | 47952 | .patterns = &.{ |
| 27483 | .{ .src = .{ .to_mut_sse, .none } }, | 47953 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27484 | }, | 47954 | }, |
| 27485 | .extra_temps = .{ | 47955 | .extra_temps = .{ |
| 27486 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, | 47956 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27487 | .unused, | 47957 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27488 | .unused, | 47958 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27489 | .unused, | 47959 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| 27490 | .unused, | 47960 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27491 | .unused, | 47961 | .unused, |
| 27492 | .unused, | 47962 | .unused, |
| 27493 | .unused, | 47963 | .unused, |
| 27494 | .unused, | 47964 | .unused, |
| 27495 | }, | 47965 | }, |
| 27496 | .dst_temps = .{.{ .ref = .src0 }}, | 47966 | .dst_temps = .{.mem}, |
| 27497 | .each = .{ .once = &.{ | 47967 | .clobbers = .{ .eflags = true }, |
| 27498 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | | |
| 27499 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, | | |
| 27500 | } }, | | |
| 27501 | }, .{ | | |
| 27502 | .required_features = .{ .avx2, null, null, null }, | | |
| 27503 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any }, | | |
| 27504 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }}, | | |
| 27505 | .patterns = &.{ | | |
| 27506 | .{ .src = .{ .mem, .none } }, | | |
| 27507 | .{ .src = .{ .to_sse, .none } }, | | |
| 27508 | }, | | |
| 27509 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 27510 | .each = .{ .once = &.{ | | |
| 27511 | .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ }, | | |
| 27512 | } }, | | |
| 27513 | }, .{ | | |
| 27514 | .required_features = .{ .avx2, null, null, null }, | | |
| 27515 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, | | |
| 27516 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }}, | | |
| 27517 | .patterns = &.{ | | |
| 27518 | .{ .src = .{ .mem, .none } }, | | |
| 27519 | .{ .src = .{ .to_sse, .none } }, | | |
| 27520 | }, | | |
| 27521 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 27522 | .each = .{ .once = &.{ | 47968 | .each = .{ .once = &.{ |
| 27523 | .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ }, | 47969 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| | 47970 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| | 47971 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| | 47972 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| | 47973 | .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 47974 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 47975 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 47976 | .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 47977 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| | 47978 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 27524 | } }, | 47979 | } }, |
| 27525 | }, .{ | 47980 | }, .{ |
| 27526 | .required_features = .{ .avx2, null, null, null }, | 47981 | .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null }, |
| 27527 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any }, | 47982 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 27528 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }}, | 47983 | .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 27529 | .patterns = &.{ | 47984 | .patterns = &.{ |
| 27530 | .{ .src = .{ .mem, .none } }, | 47985 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27531 | }, | 47986 | }, |
| 27532 | .extra_temps = .{ | 47987 | .extra_temps = .{ |
| 27533 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 47988 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27534 | .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, | 47989 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27535 | .unused, | 47990 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27536 | .unused, | 47991 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 27537 | .unused, | 47992 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27538 | .unused, | 47993 | .unused, |
| 27539 | .unused, | 47994 | .unused, |
| 27540 | .unused, | 47995 | .unused, |
| 27541 | .unused, | 47996 | .unused, |
| 27542 | }, | 47997 | }, |
| 27543 | .dst_temps = .{.mem}, | 47998 | .dst_temps = .{.mem}, |
| | 47999 | .clobbers = .{ .eflags = true }, |
| 27544 | .each = .{ .once = &.{ | 48000 | .each = .{ .once = &.{ |
| 27545 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 48001 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27546 | .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 48002 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27547 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, | 48003 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27548 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 48004 | .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ }, |
| 27549 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48005 | .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 48006 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 48007 | .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ }, |
| | 48008 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ }, |
| | 48009 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, |
| | 48010 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 48011 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| | 48012 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| | 48013 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 27550 | } }, | 48014 | } }, |
| 27551 | }, .{ | 48015 | }, .{ |
| 27552 | .required_features = .{ .avx2, null, null, null }, | 48016 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 27553 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any }, | 48017 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 27554 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }}, | 48018 | .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 27555 | .patterns = &.{ | 48019 | .patterns = &.{ |
| 27556 | .{ .src = .{ .mem, .none } }, | 48020 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27557 | }, | 48021 | }, |
| 27558 | .extra_temps = .{ | 48022 | .extra_temps = .{ |
| 27559 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48023 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27560 | .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, | 48024 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27561 | .unused, | 48025 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27562 | .unused, | 48026 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 27563 | .unused, | 48027 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27564 | .unused, | 48028 | .unused, |
| 27565 | .unused, | 48029 | .unused, |
| 27566 | .unused, | 48030 | .unused, |
| 27567 | .unused, | 48031 | .unused, |
| 27568 | }, | 48032 | }, |
| 27569 | .dst_temps = .{.mem}, | 48033 | .dst_temps = .{.mem}, |
| | 48034 | .clobbers = .{ .eflags = true }, |
| 27570 | .each = .{ .once = &.{ | 48035 | .each = .{ .once = &.{ |
| 27571 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 48036 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27572 | .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 48037 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27573 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, | 48038 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27574 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 48039 | .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ }, |
| 27575 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48040 | .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 48041 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 48042 | .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ }, |
| | 48043 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ }, |
| | 48044 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, |
| | 48045 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 48046 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| | 48047 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| | 48048 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 27576 | } }, | 48049 | } }, |
| 27577 | }, .{ | 48050 | }, .{ |
| 27578 | .required_features = .{ .avx, null, null, null }, | 48051 | .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null }, |
| 27579 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, | 48052 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 27580 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, | 48053 | .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }}, |
| 27581 | .patterns = &.{ | 48054 | .patterns = &.{ |
| 27582 | .{ .src = .{ .mem, .none } }, | 48055 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27583 | }, | 48056 | }, |
| 27584 | .extra_temps = .{ | 48057 | .extra_temps = .{ |
| 27585 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48058 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27586 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, | 48059 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27587 | .unused, | 48060 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27588 | .unused, | 48061 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 27589 | .unused, | 48062 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27590 | .unused, | 48063 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| 27591 | .unused, | 48064 | .unused, |
| 27592 | .unused, | 48065 | .unused, |
| 27593 | .unused, | 48066 | .unused, |
| 27594 | }, | 48067 | }, |
| 27595 | .dst_temps = .{.mem}, | 48068 | .dst_temps = .{.mem}, |
| | 48069 | .clobbers = .{ .eflags = true }, |
| 27596 | .each = .{ .once = &.{ | 48070 | .each = .{ .once = &.{ |
| 27597 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 48071 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27598 | .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 48072 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27599 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | 48073 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27600 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 48074 | .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ }, |
| 27601 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48075 | .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 48076 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 48077 | .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ }, |
| | 48078 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 48079 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 48080 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| | 48081 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 27602 | } }, | 48082 | } }, |
| 27603 | }, .{ | 48083 | }, .{ |
| 27604 | .required_features = .{ .avx, null, null, null }, | 48084 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 27605 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any }, | 48085 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 27606 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }}, | 48086 | .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }}, |
| 27607 | .patterns = &.{ | 48087 | .patterns = &.{ |
| 27608 | .{ .src = .{ .mem, .none } }, | 48088 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27609 | }, | 48089 | }, |
| 27610 | .extra_temps = .{ | 48090 | .extra_temps = .{ |
| 27611 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48091 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27612 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | 48092 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27613 | .unused, | 48093 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27614 | .unused, | 48094 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 27615 | .unused, | 48095 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27616 | .unused, | 48096 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| 27617 | .unused, | 48097 | .unused, |
| 27618 | .unused, | 48098 | .unused, |
| 27619 | .unused, | 48099 | .unused, |
| 27620 | }, | 48100 | }, |
| 27621 | .dst_temps = .{.mem}, | 48101 | .dst_temps = .{.mem}, |
| | 48102 | .clobbers = .{ .eflags = true }, |
| 27622 | .each = .{ .once = &.{ | 48103 | .each = .{ .once = &.{ |
| 27623 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 48104 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27624 | .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 48105 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27625 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | 48106 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27626 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 48107 | .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ }, |
| 27627 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48108 | .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 48109 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 48110 | .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ }, |
| | 48111 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 48112 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 48113 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| | 48114 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 27628 | } }, | 48115 | } }, |
| 27629 | }, .{ | 48116 | }, .{ |
| 27630 | .required_features = .{ .sse4_1, null, null, null }, | 48117 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 27631 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, | 48118 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 27632 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, | 48119 | .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 27633 | .patterns = &.{ | 48120 | .patterns = &.{ |
| 27634 | .{ .src = .{ .mem, .none } }, | 48121 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27635 | }, | 48122 | }, |
| 27636 | .extra_temps = .{ | 48123 | .extra_temps = .{ |
| 27637 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48124 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27638 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, | 48125 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27639 | .unused, | 48126 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27640 | .unused, | 48127 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27641 | .unused, | 48128 | .unused, |
| 27642 | .unused, | 48129 | .unused, |
| 27643 | .unused, | 48130 | .unused, |
| ... | @@ -27645,25 +48132,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27645,25 +48132,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27645 | .unused, | 48132 | .unused, |
| 27646 | }, | 48133 | }, |
| 27647 | .dst_temps = .{.mem}, | 48134 | .dst_temps = .{.mem}, |
| | 48135 | .clobbers = .{ .eflags = true }, |
| 27648 | .each = .{ .once = &.{ | 48136 | .each = .{ .once = &.{ |
| 27649 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 48137 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27650 | .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 48138 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27651 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | 48139 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27652 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 48140 | .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, |
| 27653 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48141 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 48142 | .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ }, |
| | 48143 | .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ }, |
| | 48144 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| | 48145 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, |
| | 48146 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 48147 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| | 48148 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| | 48149 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 27654 | } }, | 48150 | } }, |
| 27655 | }, .{ | 48151 | }, .{ |
| 27656 | .required_features = .{ .sse4_1, null, null, null }, | 48152 | .required_features = .{ .@"64bit", null, null, null }, |
| 27657 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any }, | 48153 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| 27658 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }}, | 48154 | .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, |
| 27659 | .patterns = &.{ | 48155 | .patterns = &.{ |
| 27660 | .{ .src = .{ .mem, .none } }, | 48156 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27661 | }, | 48157 | }, |
| 27662 | .extra_temps = .{ | 48158 | .extra_temps = .{ |
| 27663 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48159 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27664 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | 48160 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27665 | .unused, | 48161 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27666 | .unused, | 48162 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27667 | .unused, | 48163 | .unused, |
| 27668 | .unused, | 48164 | .unused, |
| 27669 | .unused, | 48165 | .unused, |
| ... | @@ -27671,221 +48167,497 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27671,221 +48167,497 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27671 | .unused, | 48167 | .unused, |
| 27672 | }, | 48168 | }, |
| 27673 | .dst_temps = .{.mem}, | 48169 | .dst_temps = .{.mem}, |
| | 48170 | .clobbers = .{ .eflags = true }, |
| 27674 | .each = .{ .once = &.{ | 48171 | .each = .{ .once = &.{ |
| 27675 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 48172 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27676 | .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 48173 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27677 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | 48174 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27678 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 48175 | .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, |
| 27679 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48176 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 48177 | .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ }, |
| | 48178 | .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ }, |
| | 48179 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| | 48180 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, |
| | 48181 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 48182 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| | 48183 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| | 48184 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 27680 | } }, | 48185 | } }, |
| 27681 | }, .{ | 48186 | }, .{ |
| 27682 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any }, | 48187 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 27683 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, | 48188 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| | 48189 | .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }}, |
| 27684 | .patterns = &.{ | 48190 | .patterns = &.{ |
| 27685 | .{ .src = .{ .to_mem, .none } }, | 48191 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27686 | }, | 48192 | }, |
| 27687 | .extra_temps = .{ | 48193 | .extra_temps = .{ |
| 27688 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48194 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27689 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, | 48195 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27690 | .unused, | 48196 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27691 | .unused, | 48197 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| 27692 | .unused, | 48198 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27693 | .unused, | 48199 | .unused, |
| 27694 | .unused, | 48200 | .unused, |
| 27695 | .unused, | 48201 | .unused, |
| 27696 | .unused, | 48202 | .unused, |
| 27697 | }, | 48203 | }, |
| 27698 | .dst_temps = .{.mem}, | 48204 | .dst_temps = .{.mem}, |
| | 48205 | .clobbers = .{ .eflags = true }, |
| 27699 | .each = .{ .once = &.{ | 48206 | .each = .{ .once = &.{ |
| 27700 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 48207 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27701 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, | 48208 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27702 | .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, | 48209 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27703 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 48210 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 27704 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48211 | .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 48212 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 48213 | .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ }, |
| | 48214 | .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ }, |
| | 48215 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 48216 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 48217 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| | 48218 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 27705 | } }, | 48219 | } }, |
| 27706 | }, .{ | 48220 | }, .{ |
| 27707 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, | 48221 | .required_features = .{ .@"64bit", null, null, null }, |
| 27708 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, | 48222 | .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, |
| | 48223 | .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }}, |
| 27709 | .patterns = &.{ | 48224 | .patterns = &.{ |
| 27710 | .{ .src = .{ .to_mem, .none } }, | 48225 | .{ .src = .{ .to_mem, .none, .none } }, |
| 27711 | }, | 48226 | }, |
| 27712 | .extra_temps = .{ | 48227 | .extra_temps = .{ |
| 27713 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 27714 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 48228 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 27715 | .unused, | 48229 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, |
| 27716 | .unused, | 48230 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 27717 | .unused, | 48231 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| | 48232 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, |
| 27718 | .unused, | 48233 | .unused, |
| 27719 | .unused, | 48234 | .unused, |
| 27720 | .unused, | 48235 | .unused, |
| 27721 | .unused, | 48236 | .unused, |
| 27722 | }, | 48237 | }, |
| 27723 | .dst_temps = .{.mem}, | 48238 | .dst_temps = .{.mem}, |
| | 48239 | .clobbers = .{ .eflags = true }, |
| 27724 | .each = .{ .once = &.{ | 48240 | .each = .{ .once = &.{ |
| 27725 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 48241 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 27726 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, | 48242 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, |
| 27727 | .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, | 48243 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 27728 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 48244 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 27729 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48245 | .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, |
| | 48246 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| | 48247 | .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ }, |
| | 48248 | .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ }, |
| | 48249 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, |
| | 48250 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| | 48251 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| | 48252 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 27730 | } }, | 48253 | } }, |
| 27731 | }, .{ | 48254 | } }) catch |err| switch (err) { |
| 27732 | .required_features = .{ .avx, null, null, null }, | 48255 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| 27733 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any }, | 48256 | @tagName(air_tag), |
| 27734 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | 48257 | ty_op.ty.toType().fmt(pt), |
| | 48258 | cg.typeOf(ty_op.operand).fmt(pt), |
| | 48259 | ops[0].tracking(cg), |
| | 48260 | }), |
| | 48261 | else => |e| return e, |
| | 48262 | }; |
| | 48263 | try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48264 | }, |
| | 48265 | .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else { |
| | 48266 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 48267 | const ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 48268 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48269 | }, |
| | 48270 | .optional_payload_ptr_set => if (use_old) try cg.airOptionalPayloadPtrSet(inst) else { |
| | 48271 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 48272 | const opt_ty = cg.typeOf(ty_op.operand).childType(zcu); |
| | 48273 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 48274 | if (!opt_ty.optionalReprIsPayload(zcu)) { |
| | 48275 | const opt_child_ty = opt_ty.optionalChild(zcu); |
| | 48276 | const opt_child_abi_size: i32 = @intCast(opt_child_ty.abiSize(zcu)); |
| | 48277 | try ops[0].toOffset(opt_child_abi_size, cg); |
| | 48278 | var has_value = try cg.tempInit(.bool, .{ .immediate = 1 }); |
| | 48279 | try ops[0].store(&has_value, .{}, cg); |
| | 48280 | try has_value.die(cg); |
| | 48281 | try ops[0].toOffset(-opt_child_abi_size, cg); |
| | 48282 | } |
| | 48283 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48284 | }, |
| | 48285 | .unwrap_errunion_payload_ptr => if (use_old) try cg.airUnwrapErrUnionPayloadPtr(inst) else { |
| | 48286 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 48287 | const eu_ty = cg.typeOf(ty_op.operand).childType(zcu); |
| | 48288 | const eu_pl_ty = eu_ty.errorUnionPayload(zcu); |
| | 48289 | const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu)); |
| | 48290 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 48291 | try ops[0].toOffset(eu_pl_off, cg); |
| | 48292 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48293 | }, |
| | 48294 | .unwrap_errunion_err_ptr => if (use_old) try cg.airUnwrapErrUnionErrPtr(inst) else { |
| | 48295 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 48296 | const eu_ty = cg.typeOf(ty_op.operand).childType(zcu); |
| | 48297 | const eu_pl_ty = eu_ty.errorUnionPayload(zcu); |
| | 48298 | const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu)); |
| | 48299 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 48300 | try ops[0].toOffset(eu_err_off, cg); |
| | 48301 | const err = try ops[0].load(eu_ty.errorUnionSet(zcu), .{}, cg); |
| | 48302 | try err.finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48303 | }, |
| | 48304 | .errunion_payload_ptr_set => if (use_old) try cg.airErrUnionPayloadPtrSet(inst) else { |
| | 48305 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 48306 | const eu_ty = cg.typeOf(ty_op.operand).childType(zcu); |
| | 48307 | const eu_err_ty = eu_ty.errorUnionSet(zcu); |
| | 48308 | const eu_pl_ty = eu_ty.errorUnionPayload(zcu); |
| | 48309 | const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu)); |
| | 48310 | const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu)); |
| | 48311 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 48312 | try ops[0].toOffset(eu_err_off, cg); |
| | 48313 | var no_err = try cg.tempInit(eu_err_ty, .{ .immediate = 0 }); |
| | 48314 | try ops[0].store(&no_err, .{}, cg); |
| | 48315 | try no_err.die(cg); |
| | 48316 | try ops[0].toOffset(eu_pl_off - eu_err_off, cg); |
| | 48317 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48318 | }, |
| | 48319 | .struct_field_ptr => if (use_old) try cg.airStructFieldPtr(inst) else { |
| | 48320 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; |
| | 48321 | const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data; |
| | 48322 | var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand}); |
| | 48323 | try ops[0].toOffset(cg.fieldOffset( |
| | 48324 | cg.typeOf(extra.struct_operand), |
| | 48325 | ty_pl.ty.toType(), |
| | 48326 | extra.field_index, |
| | 48327 | ), cg); |
| | 48328 | try ops[0].finish(inst, &.{extra.struct_operand}, &ops, cg); |
| | 48329 | }, |
| | 48330 | .struct_field_ptr_index_0, |
| | 48331 | .struct_field_ptr_index_1, |
| | 48332 | .struct_field_ptr_index_2, |
| | 48333 | .struct_field_ptr_index_3, |
| | 48334 | => |air_tag| if (use_old) try cg.airStructFieldPtrIndex(inst, switch (air_tag) { |
| | 48335 | else => unreachable, |
| | 48336 | .struct_field_ptr_index_0 => 0, |
| | 48337 | .struct_field_ptr_index_1 => 1, |
| | 48338 | .struct_field_ptr_index_2 => 2, |
| | 48339 | .struct_field_ptr_index_3 => 3, |
| | 48340 | }) else { |
| | 48341 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 48342 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 48343 | try ops[0].toOffset(cg.fieldOffset( |
| | 48344 | cg.typeOf(ty_op.operand), |
| | 48345 | ty_op.ty.toType(), |
| | 48346 | switch (air_tag) { |
| | 48347 | else => unreachable, |
| | 48348 | .struct_field_ptr_index_0 => 0, |
| | 48349 | .struct_field_ptr_index_1 => 1, |
| | 48350 | .struct_field_ptr_index_2 => 2, |
| | 48351 | .struct_field_ptr_index_3 => 3, |
| | 48352 | }, |
| | 48353 | ), cg); |
| | 48354 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48355 | }, |
| | 48356 | .struct_field_val => if (use_old) try cg.airStructFieldVal(inst) else fallback: { |
| | 48357 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; |
| | 48358 | const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data; |
| | 48359 | const agg_ty = cg.typeOf(extra.struct_operand); |
| | 48360 | const field_ty = ty_pl.ty.toType(); |
| | 48361 | const field_off: u31 = switch (agg_ty.containerLayout(zcu)) { |
| | 48362 | .auto, .@"extern" => @intCast(agg_ty.structFieldOffset(extra.field_index, zcu)), |
| | 48363 | .@"packed" => break :fallback try cg.airStructFieldVal(inst), |
| | 48364 | }; |
| | 48365 | var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand}); |
| | 48366 | // hack around Sema OPV bugs |
| | 48367 | var res = if (field_ty.hasRuntimeBitsIgnoreComptime(zcu)) |
| | 48368 | try ops[0].read(field_ty, .{ .disp = field_off }, cg) |
| | 48369 | else |
| | 48370 | try cg.tempInit(field_ty, .none); |
| | 48371 | try res.finish(inst, &.{extra.struct_operand}, &ops, cg); |
| | 48372 | }, |
| | 48373 | .set_union_tag => if (use_old) try cg.airSetUnionTag(inst) else { |
| | 48374 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| | 48375 | const union_ty = cg.typeOf(bin_op.lhs).childType(zcu); |
| | 48376 | const union_layout = union_ty.unionGetLayout(zcu); |
| | 48377 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 48378 | // hack around Sema OPV bugs |
| | 48379 | if (union_layout.tag_size > 0) try ops[0].store(&ops[1], .{ |
| | 48380 | .disp = @intCast(union_layout.tagOffset()), |
| | 48381 | }, cg); |
| | 48382 | const res = try cg.tempInit(.void, .none); |
| | 48383 | try res.finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 48384 | }, |
| | 48385 | .get_union_tag => if (use_old) try cg.airGetUnionTag(inst) else { |
| | 48386 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 48387 | const union_ty = cg.typeOf(ty_op.operand); |
| | 48388 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 48389 | const union_layout = union_ty.unionGetLayout(zcu); |
| | 48390 | assert(union_layout.tag_size > 0); |
| | 48391 | const res = try ops[0].read(ty_op.ty.toType(), .{ |
| | 48392 | .disp = @intCast(union_layout.tagOffset()), |
| | 48393 | }, cg); |
| | 48394 | try res.finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48395 | }, |
| | 48396 | .slice => if (use_old) try cg.airSlice(inst) else { |
| | 48397 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; |
| | 48398 | const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data; |
| | 48399 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 48400 | try ops[0].toPair(&ops[1], cg); |
| | 48401 | try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 48402 | }, |
| | 48403 | .slice_len => if (use_old) try cg.airSliceLen(inst) else { |
| | 48404 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 48405 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 48406 | try ops[0].toSliceLen(cg); |
| | 48407 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48408 | }, |
| | 48409 | .slice_ptr => if (use_old) try cg.airSlicePtr(inst) else { |
| | 48410 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 48411 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 48412 | try ops[0].toSlicePtr(cg); |
| | 48413 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48414 | }, |
| | 48415 | .ptr_slice_len_ptr => if (use_old) try cg.airPtrSliceLenPtr(inst) else { |
| | 48416 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 48417 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 48418 | try ops[0].toOffset(8, cg); |
| | 48419 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48420 | }, |
| | 48421 | .ptr_slice_ptr_ptr => if (use_old) try cg.airPtrSlicePtrPtr(inst) else { |
| | 48422 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 48423 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 48424 | try ops[0].toOffset(0, cg); |
| | 48425 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48426 | }, |
| | 48427 | .slice_elem_val, .ptr_elem_val => |air_tag| if (use_old) switch (air_tag) { |
| | 48428 | else => unreachable, |
| | 48429 | .slice_elem_val => try cg.airSliceElemVal(inst), |
| | 48430 | .ptr_elem_val => try cg.airPtrElemVal(inst), |
| | 48431 | } else { |
| | 48432 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| | 48433 | const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu); |
| | 48434 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 48435 | try ops[0].toSlicePtr(cg); |
| | 48436 | var res: [1]Temp = undefined; |
| | 48437 | if (res_ty.hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{res_ty}, &ops, comptime &.{ .{ |
| | 48438 | .dst_constraints = .{.{ .int = .byte }}, |
| 27735 | .patterns = &.{ | 48439 | .patterns = &.{ |
| 27736 | .{ .src = .{ .mem, .none } }, | 48440 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 27737 | .{ .src = .{ .to_sse, .none } }, | | |
| 27738 | }, | 48441 | }, |
| 27739 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 48442 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 27740 | .each = .{ .once = &.{ | 48443 | .each = .{ .once = &.{ |
| 27741 | .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ }, | 48444 | .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_times_src1), ._, ._ }, |
| 27742 | } }, | 48445 | } }, |
| 27743 | }, .{ | 48446 | }, .{ |
| 27744 | .required_features = .{ .avx, null, null, null }, | 48447 | .dst_constraints = .{.{ .int = .byte }}, |
| 27745 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any }, | | |
| 27746 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, | | |
| 27747 | .patterns = &.{ | 48448 | .patterns = &.{ |
| 27748 | .{ .src = .{ .mem, .none } }, | 48449 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 27749 | .{ .src = .{ .to_sse, .none } }, | | |
| 27750 | }, | 48450 | }, |
| 27751 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 48451 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 27752 | .each = .{ .once = &.{ | 48452 | .each = .{ .once = &.{ |
| 27753 | .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ }, | 48453 | .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ }, |
| 27754 | } }, | 48454 | } }, |
| 27755 | }, .{ | 48455 | }, .{ |
| 27756 | .required_features = .{ .sse4_1, null, null, null }, | 48456 | .dst_constraints = .{.{ .int = .word }}, |
| 27757 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any }, | | |
| 27758 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | | |
| 27759 | .patterns = &.{ | 48457 | .patterns = &.{ |
| 27760 | .{ .src = .{ .mem, .none } }, | 48458 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 27761 | .{ .src = .{ .to_sse, .none } }, | | |
| 27762 | }, | 48459 | }, |
| 27763 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 48460 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 27764 | .each = .{ .once = &.{ | 48461 | .each = .{ .once = &.{ |
| 27765 | .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ }, | 48462 | .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_times_src1), ._, ._ }, |
| 27766 | } }, | 48463 | } }, |
| 27767 | }, .{ | 48464 | }, .{ |
| 27768 | .required_features = .{ .sse4_1, null, null, null }, | 48465 | .dst_constraints = .{.{ .int = .word }}, |
| 27769 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any }, | | |
| 27770 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, | | |
| 27771 | .patterns = &.{ | 48466 | .patterns = &.{ |
| 27772 | .{ .src = .{ .mem, .none } }, | 48467 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 27773 | .{ .src = .{ .to_sse, .none } }, | | |
| 27774 | }, | 48468 | }, |
| 27775 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 48469 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 27776 | .each = .{ .once = &.{ | 48470 | .each = .{ .once = &.{ |
| 27777 | .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ }, | 48471 | .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ }, |
| 27778 | } }, | 48472 | } }, |
| 27779 | }, .{ | 48473 | }, .{ |
| 27780 | .required_features = .{ .sse2, null, null, null }, | 48474 | .dst_constraints = .{.{ .int = .dword }}, |
| 27781 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any }, | | |
| 27782 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | | |
| 27783 | .patterns = &.{ | 48475 | .patterns = &.{ |
| 27784 | .{ .src = .{ .to_mut_sse, .none } }, | 48476 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 27785 | }, | | |
| 27786 | .extra_temps = .{ | | |
| 27787 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, | | |
| 27788 | .unused, | | |
| 27789 | .unused, | | |
| 27790 | .unused, | | |
| 27791 | .unused, | | |
| 27792 | .unused, | | |
| 27793 | .unused, | | |
| 27794 | .unused, | | |
| 27795 | .unused, | | |
| 27796 | }, | 48477 | }, |
| 27797 | .dst_temps = .{.{ .ref = .src0 }}, | 48478 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 27798 | .each = .{ .once = &.{ | 48479 | .each = .{ .once = &.{ |
| 27799 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 48480 | .{ ._, ._, .mov, .dst0d, .leaa(.src0d, .add_src0_elem_size_times_src1), ._, ._ }, |
| 27800 | .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ }, | | |
| 27801 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, | | |
| 27802 | .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ }, | | |
| 27803 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, | | |
| 27804 | } }, | 48481 | } }, |
| 27805 | }, .{ | 48482 | }, .{ |
| 27806 | .required_features = .{ .sse2, null, null, null }, | 48483 | .dst_constraints = .{.{ .int = .dword }}, |
| 27807 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any }, | | |
| 27808 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, | | |
| 27809 | .patterns = &.{ | 48484 | .patterns = &.{ |
| 27810 | .{ .src = .{ .to_mut_sse, .none } }, | 48485 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 27811 | }, | | |
| 27812 | .extra_temps = .{ | | |
| 27813 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, | | |
| 27814 | .unused, | | |
| 27815 | .unused, | | |
| 27816 | .unused, | | |
| 27817 | .unused, | | |
| 27818 | .unused, | | |
| 27819 | .unused, | | |
| 27820 | .unused, | | |
| 27821 | .unused, | | |
| 27822 | }, | 48486 | }, |
| 27823 | .dst_temps = .{.{ .ref = .src0 }}, | 48487 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 27824 | .each = .{ .once = &.{ | 48488 | .each = .{ .once = &.{ |
| 27825 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 48489 | .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ }, |
| 27826 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, | | |
| 27827 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, | | |
| 27828 | } }, | 48490 | } }, |
| 27829 | }, .{ | 48491 | }, .{ |
| 27830 | .required_features = .{ .avx2, null, null, null }, | 48492 | .dst_constraints = .{.{ .int = .qword }}, |
| 27831 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, | | |
| 27832 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }}, | | |
| 27833 | .patterns = &.{ | 48493 | .patterns = &.{ |
| 27834 | .{ .src = .{ .mem, .none } }, | 48494 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 27835 | .{ .src = .{ .to_sse, .none } }, | | |
| 27836 | }, | 48495 | }, |
| 27837 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 48496 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 27838 | .each = .{ .once = &.{ | 48497 | .each = .{ .once = &.{ |
| 27839 | .{ ._, .vp_q, .movsxw, .dst0y, .src0q, ._, ._ }, | 48498 | .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_times_src1), ._, ._ }, |
| 27840 | } }, | 48499 | } }, |
| 27841 | }, .{ | 48500 | }, .{ |
| 27842 | .required_features = .{ .avx2, null, null, null }, | 48501 | .required_features = .{ .@"64bit", null, null, null }, |
| 27843 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any }, | 48502 | .dst_constraints = .{.{ .int = .qword }}, |
| 27844 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }}, | | |
| 27845 | .patterns = &.{ | 48503 | .patterns = &.{ |
| 27846 | .{ .src = .{ .mem, .none } }, | 48504 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 27847 | .{ .src = .{ .to_sse, .none } }, | | |
| 27848 | }, | 48505 | }, |
| 27849 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 48506 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 27850 | .each = .{ .once = &.{ | 48507 | .each = .{ .once = &.{ |
| 27851 | .{ ._, .vp_q, .movzxw, .dst0y, .src0q, ._, ._ }, | 48508 | .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ }, |
| 27852 | } }, | 48509 | } }, |
| 27853 | }, .{ | 48510 | } }) catch |err| switch (err) { |
| 27854 | .required_features = .{ .avx2, null, null, null }, | 48511 | error.SelectFailed => { |
| 27855 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, | 48512 | const elem_size = res_ty.abiSize(zcu); |
| 27856 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }}, | 48513 | while (true) for (&ops) |*op| { |
| 27857 | .patterns = &.{ | 48514 | if (try op.toRegClass(true, .general_purpose, cg)) break; |
| 27858 | .{ .src = .{ .mem, .none } }, | 48515 | } else break; |
| | 48516 | const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64(); |
| | 48517 | const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64(); |
| | 48518 | if (!std.math.isPowerOfTwo(elem_size)) { |
| | 48519 | try cg.spillEflagsIfOccupied(); |
| | 48520 | try cg.asmRegisterRegisterImmediate( |
| | 48521 | .{ .i_, .mul }, |
| | 48522 | rhs_reg, |
| | 48523 | rhs_reg, |
| | 48524 | .u(elem_size), |
| | 48525 | ); |
| | 48526 | try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{ |
| | 48527 | .base = .{ .reg = lhs_reg }, |
| | 48528 | .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } }, |
| | 48529 | }); |
| | 48530 | } else if (elem_size > 8) { |
| | 48531 | try cg.spillEflagsIfOccupied(); |
| | 48532 | try cg.asmRegisterImmediate( |
| | 48533 | .{ ._l, .sh }, |
| | 48534 | rhs_reg, |
| | 48535 | .u(std.math.log2_int(u64, elem_size)), |
| | 48536 | ); |
| | 48537 | try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{ |
| | 48538 | .base = .{ .reg = lhs_reg }, |
| | 48539 | .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } }, |
| | 48540 | }); |
| | 48541 | } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{ |
| | 48542 | .base = .{ .reg = lhs_reg }, |
| | 48543 | .mod = .{ .rm = .{ |
| | 48544 | .size = .qword, |
| | 48545 | .index = rhs_reg, |
| | 48546 | .scale = .fromFactor(@intCast(elem_size)), |
| | 48547 | } }, |
| | 48548 | }); |
| | 48549 | res[0] = try ops[0].load(res_ty, .{}, cg); |
| 27859 | }, | 48550 | }, |
| 27860 | .extra_temps = .{ | 48551 | else => |e| return e, |
| 27861 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48552 | } else { |
| 27862 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, | 48553 | // hack around Sema OPV bugs |
| 27863 | .unused, | 48554 | res[0] = try cg.tempInit(res_ty, .none); |
| 27864 | .unused, | 48555 | } |
| 27865 | .unused, | 48556 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 27866 | .unused, | 48557 | }, |
| 27867 | .unused, | 48558 | .slice_elem_ptr, .ptr_elem_ptr => |air_tag| if (use_old) switch (air_tag) { |
| 27868 | .unused, | 48559 | else => unreachable, |
| 27869 | .unused, | 48560 | .slice_elem_ptr => try cg.airSliceElemPtr(inst), |
| | 48561 | .ptr_elem_ptr => try cg.airPtrElemPtr(inst), |
| | 48562 | } else { |
| | 48563 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; |
| | 48564 | const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data; |
| | 48565 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 48566 | try ops[0].toSlicePtr(cg); |
| | 48567 | const dst_ty = ty_pl.ty.toType(); |
| | 48568 | if (dst_ty.ptrInfo(zcu).flags.vector_index == .none) zero_offset: { |
| | 48569 | const elem_size = dst_ty.childType(zcu).abiSize(zcu); |
| | 48570 | // hack around Sema OPV bugs |
| | 48571 | if (elem_size == 0) break :zero_offset; |
| | 48572 | while (true) for (&ops) |*op| { |
| | 48573 | if (try op.toRegClass(true, .general_purpose, cg)) break; |
| | 48574 | } else break; |
| | 48575 | const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64(); |
| | 48576 | const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64(); |
| | 48577 | if (!std.math.isPowerOfTwo(elem_size)) { |
| | 48578 | try cg.spillEflagsIfOccupied(); |
| | 48579 | try cg.asmRegisterRegisterImmediate( |
| | 48580 | .{ .i_, .mul }, |
| | 48581 | rhs_reg, |
| | 48582 | rhs_reg, |
| | 48583 | .u(elem_size), |
| | 48584 | ); |
| | 48585 | try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{ |
| | 48586 | .base = .{ .reg = lhs_reg }, |
| | 48587 | .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } }, |
| | 48588 | }); |
| | 48589 | } else if (elem_size > 8) { |
| | 48590 | try cg.spillEflagsIfOccupied(); |
| | 48591 | try cg.asmRegisterImmediate( |
| | 48592 | .{ ._l, .sh }, |
| | 48593 | rhs_reg, |
| | 48594 | .u(std.math.log2_int(u64, elem_size)), |
| | 48595 | ); |
| | 48596 | try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{ |
| | 48597 | .base = .{ .reg = lhs_reg }, |
| | 48598 | .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } }, |
| | 48599 | }); |
| | 48600 | } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{ |
| | 48601 | .base = .{ .reg = lhs_reg }, |
| | 48602 | .mod = .{ .rm = .{ |
| | 48603 | .size = .qword, |
| | 48604 | .index = rhs_reg, |
| | 48605 | .scale = .fromFactor(@intCast(elem_size)), |
| | 48606 | } }, |
| | 48607 | }); |
| | 48608 | } |
| | 48609 | try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| | 48610 | }, |
| | 48611 | .array_to_slice => if (use_old) try cg.airArrayToSlice(inst) else { |
| | 48612 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| | 48613 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| | 48614 | var len = try cg.tempInit(.usize, .{ |
| | 48615 | .immediate = cg.typeOf(ty_op.operand).childType(zcu).arrayLen(zcu), |
| | 48616 | }); |
| | 48617 | try ops[0].toPair(&len, cg); |
| | 48618 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); |
| | 48619 | }, |
| | 48620 | .error_set_has_value => return cg.fail("TODO implement error_set_has_value", .{}), |
| | 48621 | .union_init => if (use_old) try cg.airUnionInit(inst) else { |
| | 48622 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; |
| | 48623 | const extra = cg.air.extraData(Air.UnionInit, ty_pl.payload).data; |
| | 48624 | const union_ty = ty_pl.ty.toType(); |
| | 48625 | var ops = try cg.tempsFromOperands(inst, .{extra.init}); |
| | 48626 | var res = try cg.tempAllocMem(union_ty); |
| | 48627 | const union_layout = union_ty.unionGetLayout(zcu); |
| | 48628 | if (union_layout.tag_size > 0) { |
| | 48629 | var tag_temp = try cg.tempFromValue(try pt.enumValueFieldIndex( |
| | 48630 | union_ty.unionTagTypeSafety(zcu).?, |
| | 48631 | extra.field_index, |
| | 48632 | )); |
| | 48633 | try res.write(&tag_temp, .{ |
| | 48634 | .disp = @intCast(union_layout.tagOffset()), |
| | 48635 | }, cg); |
| | 48636 | try tag_temp.die(cg); |
| | 48637 | } |
| | 48638 | try res.write(&ops[0], .{ |
| | 48639 | .disp = @intCast(union_layout.payloadOffset()), |
| | 48640 | }, cg); |
| | 48641 | try res.finish(inst, &.{extra.init}, &ops, cg); |
| | 48642 | }, |
| | 48643 | .mul_add => |air_tag| if (use_old) try cg.airMulAdd(inst) else { |
| | 48644 | const pl_op = air_datas[@intFromEnum(inst)].pl_op; |
| | 48645 | const bin_op = cg.air.extraData(Air.Bin, pl_op.payload).data; |
| | 48646 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs, pl_op.operand }); |
| | 48647 | var res: [1]Temp = undefined; |
| | 48648 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ |
| | 48649 | .required_features = .{ .fma, .f16c, null, null }, |
| | 48650 | .src_constraints = .{ |
| | 48651 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 48652 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 48653 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 27870 | }, | 48654 | }, |
| 27871 | .dst_temps = .{.mem}, | | |
| 27872 | .each = .{ .once = &.{ | | |
| 27873 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | | |
| 27874 | .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | | |
| 27875 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ }, | | |
| 27876 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 27877 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 27878 | } }, | | |
| 27879 | }, .{ | | |
| 27880 | .required_features = .{ .avx2, null, null, null }, | | |
| 27881 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any }, | | |
| 27882 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }}, | | |
| 27883 | .patterns = &.{ | 48655 | .patterns = &.{ |
| 27884 | .{ .src = .{ .mem, .none } }, | 48656 | .{ .src = .{ .to_sse, .to_sse, .to_sse } }, |
| 27885 | }, | 48657 | }, |
| 27886 | .extra_temps = .{ | 48658 | .extra_temps = .{ |
| 27887 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48659 | .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 27888 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, | 48660 | .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, |
| 27889 | .unused, | 48661 | .unused, |
| 27890 | .unused, | 48662 | .unused, |
| 27891 | .unused, | 48663 | .unused, |
| ... | @@ -27894,24 +48666,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27894,24 +48666,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27894 | .unused, | 48666 | .unused, |
| 27895 | .unused, | 48667 | .unused, |
| 27896 | }, | 48668 | }, |
| 27897 | .dst_temps = .{.mem}, | 48669 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 27898 | .each = .{ .once = &.{ | 48670 | .each = .{ .once = &.{ |
| 27899 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 48671 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 27900 | .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 48672 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| 27901 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ }, | 48673 | .{ ._, .v_ps, .cvtph2, .tmp1x, .src2q, ._, ._ }, |
| 27902 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 48674 | .{ ._, .v_ss, .fmadd213, .dst0x, .tmp0x, .tmp1d, ._ }, |
| 27903 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48675 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 27904 | } }, | 48676 | } }, |
| 27905 | }, .{ | 48677 | }, .{ |
| 27906 | .required_features = .{ .avx, null, null, null }, | 48678 | .required_features = .{ .sse, null, null, null }, |
| 27907 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any }, | 48679 | .src_constraints = .{ |
| 27908 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | 48680 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 48681 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 48682 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| | 48683 | }, |
| 27909 | .patterns = &.{ | 48684 | .patterns = &.{ |
| 27910 | .{ .src = .{ .mem, .none } }, | 48685 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } }, |
| 27911 | }, | 48686 | }, |
| | 48687 | .call_frame = .{ .alignment = .@"16" }, |
| 27912 | .extra_temps = .{ | 48688 | .extra_temps = .{ |
| 27913 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48689 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } }, |
| 27914 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, | 48690 | .unused, |
| 27915 | .unused, | 48691 | .unused, |
| 27916 | .unused, | 48692 | .unused, |
| 27917 | .unused, | 48693 | .unused, |
| ... | @@ -27920,24 +48696,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27920,24 +48696,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27920 | .unused, | 48696 | .unused, |
| 27921 | .unused, | 48697 | .unused, |
| 27922 | }, | 48698 | }, |
| 27923 | .dst_temps = .{.mem}, | 48699 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 48700 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 27924 | .each = .{ .once = &.{ | 48701 | .each = .{ .once = &.{ |
| 27925 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 48702 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 27926 | .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | | |
| 27927 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 27928 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 27929 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 27930 | } }, | 48703 | } }, |
| 27931 | }, .{ | 48704 | }, .{ |
| 27932 | .required_features = .{ .avx, null, null, null }, | 48705 | .required_features = .{ .fma, .f16c, null, null }, |
| 27933 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any }, | 48706 | .src_constraints = .{ |
| 27934 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, | 48707 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 48708 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 48709 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| | 48710 | }, |
| 27935 | .patterns = &.{ | 48711 | .patterns = &.{ |
| 27936 | .{ .src = .{ .mem, .none } }, | 48712 | .{ .src = .{ .mem, .mem, .mem } }, |
| | 48713 | .{ .src = .{ .to_sse, .mem, .mem } }, |
| | 48714 | .{ .src = .{ .mem, .to_sse, .mem } }, |
| | 48715 | .{ .src = .{ .mem, .mem, .to_sse } }, |
| | 48716 | .{ .src = .{ .to_sse, .to_sse, .mem } }, |
| | 48717 | .{ .src = .{ .to_sse, .mem, .to_sse } }, |
| | 48718 | .{ .src = .{ .mem, .to_sse, .to_sse } }, |
| | 48719 | .{ .src = .{ .to_sse, .to_sse, .to_sse } }, |
| 27937 | }, | 48720 | }, |
| 27938 | .extra_temps = .{ | 48721 | .extra_temps = .{ |
| 27939 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48722 | .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 27940 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 48723 | .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, |
| 27941 | .unused, | 48724 | .unused, |
| 27942 | .unused, | 48725 | .unused, |
| 27943 | .unused, | 48726 | .unused, |
| ... | @@ -27946,24 +48729,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27946,24 +48729,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27946 | .unused, | 48729 | .unused, |
| 27947 | .unused, | 48730 | .unused, |
| 27948 | }, | 48731 | }, |
| 27949 | .dst_temps = .{.mem}, | 48732 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 27950 | .each = .{ .once = &.{ | 48733 | .each = .{ .once = &.{ |
| 27951 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 48734 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 27952 | .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 48735 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| 27953 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, | 48736 | .{ ._, .v_ps, .cvtph2, .tmp1x, .src2q, ._, ._ }, |
| 27954 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 48737 | .{ ._, .v_ps, .fmadd213, .dst0x, .tmp0x, .tmp1x, ._ }, |
| 27955 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48738 | .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, |
| 27956 | } }, | 48739 | } }, |
| 27957 | }, .{ | 48740 | }, .{ |
| 27958 | .required_features = .{ .sse4_1, null, null, null }, | 48741 | .required_features = .{ .fma, .f16c, null, null }, |
| 27959 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any }, | 48742 | .src_constraints = .{ |
| 27960 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | 48743 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 48744 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 48745 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| | 48746 | }, |
| 27961 | .patterns = &.{ | 48747 | .patterns = &.{ |
| 27962 | .{ .src = .{ .mem, .none } }, | 48748 | .{ .src = .{ .mem, .mem, .mem } }, |
| | 48749 | .{ .src = .{ .to_sse, .mem, .mem } }, |
| | 48750 | .{ .src = .{ .mem, .to_sse, .mem } }, |
| | 48751 | .{ .src = .{ .mem, .mem, .to_sse } }, |
| | 48752 | .{ .src = .{ .to_sse, .to_sse, .mem } }, |
| | 48753 | .{ .src = .{ .to_sse, .mem, .to_sse } }, |
| | 48754 | .{ .src = .{ .mem, .to_sse, .to_sse } }, |
| | 48755 | .{ .src = .{ .to_sse, .to_sse, .to_sse } }, |
| 27963 | }, | 48756 | }, |
| 27964 | .extra_temps = .{ | 48757 | .extra_temps = .{ |
| 27965 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48758 | .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 27966 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, | 48759 | .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, |
| 27967 | .unused, | 48760 | .unused, |
| 27968 | .unused, | 48761 | .unused, |
| 27969 | .unused, | 48762 | .unused, |
| ... | @@ -27972,26 +48765,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -27972,26 +48765,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 27972 | .unused, | 48765 | .unused, |
| 27973 | .unused, | 48766 | .unused, |
| 27974 | }, | 48767 | }, |
| 27975 | .dst_temps = .{.mem}, | 48768 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 27976 | .each = .{ .once = &.{ | 48769 | .each = .{ .once = &.{ |
| 27977 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 48770 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| 27978 | .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 48771 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, |
| 27979 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, | 48772 | .{ ._, .v_ps, .cvtph2, .tmp1y, .src2x, ._, ._ }, |
| 27980 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 48773 | .{ ._, .v_ps, .fmadd213, .dst0y, .tmp0y, .tmp1y, ._ }, |
| 27981 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48774 | .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, |
| 27982 | } }, | 48775 | } }, |
| 27983 | }, .{ | 48776 | }, .{ |
| 27984 | .required_features = .{ .sse4_1, null, null, null }, | 48777 | .required_features = .{ .fma, .f16c, null, null }, |
| 27985 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any }, | 48778 | .src_constraints = .{ |
| 27986 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, | 48779 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 48780 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 48781 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| | 48782 | }, |
| 27987 | .patterns = &.{ | 48783 | .patterns = &.{ |
| 27988 | .{ .src = .{ .mem, .none } }, | 48784 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 27989 | }, | 48785 | }, |
| 27990 | .extra_temps = .{ | 48786 | .extra_temps = .{ |
| 27991 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48787 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 27992 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 48788 | .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 27993 | .unused, | 48789 | .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, |
| 27994 | .unused, | 48790 | .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, |
| 27995 | .unused, | 48791 | .unused, |
| 27996 | .unused, | 48792 | .unused, |
| 27997 | .unused, | 48793 | .unused, |
| ... | @@ -28000,286 +48796,230 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -28000,286 +48796,230 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 28000 | }, | 48796 | }, |
| 28001 | .dst_temps = .{.mem}, | 48797 | .dst_temps = .{.mem}, |
| 28002 | .each = .{ .once = &.{ | 48798 | .each = .{ .once = &.{ |
| 28003 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 48799 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28004 | .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, | 48800 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28005 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, | 48801 | .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28006 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 48802 | .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 48803 | .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .tmp3y, ._ }, |
| | 48804 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, |
| | 48805 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 28007 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48806 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28008 | } }, | 48807 | } }, |
| 28009 | }, .{ | 48808 | }, .{ |
| 28010 | .required_features = .{ .@"64bit", null, null, null }, | 48809 | .required_features = .{ .avx, null, null, null }, |
| 28011 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any }, | 48810 | .src_constraints = .{ |
| 28012 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, | 48811 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 48812 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 48813 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 48814 | }, |
| 28013 | .patterns = &.{ | 48815 | .patterns = &.{ |
| 28014 | .{ .src = .{ .to_mem, .none } }, | 48816 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28015 | }, | 48817 | }, |
| | 48818 | .call_frame = .{ .alignment = .@"16" }, |
| 28016 | .extra_temps = .{ | 48819 | .extra_temps = .{ |
| 28017 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48820 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 28018 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, | 48821 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 28019 | .unused, | 48822 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 28020 | .unused, | 48823 | .{ .type = .f16, .kind = .{ .reg = .xmm2 } }, |
| 28021 | .unused, | 48824 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } }, |
| 28022 | .unused, | 48825 | .unused, |
| 28023 | .unused, | 48826 | .unused, |
| 28024 | .unused, | 48827 | .unused, |
| 28025 | .unused, | 48828 | .unused, |
| 28026 | }, | 48829 | }, |
| 28027 | .dst_temps = .{.mem}, | 48830 | .dst_temps = .{.mem}, |
| | 48831 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28028 | .each = .{ .once = &.{ | 48832 | .each = .{ .once = &.{ |
| 28029 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 48833 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28030 | .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, | 48834 | .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ }, |
| 28031 | .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, | 48835 | .{ ._, .vp_w, .insr, .tmp1x, .tmp3x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 48836 | .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 48837 | .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 48838 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 48839 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| 28032 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 48840 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 28033 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48841 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28034 | } }, | 48842 | } }, |
| 28035 | }, .{ | 48843 | }, .{ |
| 28036 | .required_features = .{ .@"64bit", null, null, null }, | 48844 | .required_features = .{ .sse4_1, null, null, null }, |
| 28037 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, | 48845 | .src_constraints = .{ |
| 28038 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, | 48846 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 48847 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 48848 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 48849 | }, |
| 28039 | .patterns = &.{ | 48850 | .patterns = &.{ |
| 28040 | .{ .src = .{ .to_mem, .none } }, | 48851 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28041 | }, | 48852 | }, |
| | 48853 | .call_frame = .{ .alignment = .@"16" }, |
| 28042 | .extra_temps = .{ | 48854 | .extra_temps = .{ |
| 28043 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48855 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 28044 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 48856 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 28045 | .unused, | 48857 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 28046 | .unused, | 48858 | .{ .type = .f16, .kind = .{ .reg = .xmm2 } }, |
| 28047 | .unused, | 48859 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } }, |
| 28048 | .unused, | 48860 | .unused, |
| 28049 | .unused, | 48861 | .unused, |
| 28050 | .unused, | 48862 | .unused, |
| 28051 | .unused, | 48863 | .unused, |
| 28052 | }, | 48864 | }, |
| 28053 | .dst_temps = .{.mem}, | 48865 | .dst_temps = .{.mem}, |
| | 48866 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28054 | .each = .{ .once = &.{ | 48867 | .each = .{ .once = &.{ |
| 28055 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 48868 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28056 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, | 48869 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 28057 | .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, | 48870 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 48871 | .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ }, |
| | 48872 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 48873 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 48874 | .{ ._, .p_w, .insr, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 48875 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 48876 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| 28058 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 48877 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 28059 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48878 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28060 | } }, | 48879 | } }, |
| 28061 | }, .{ | | |
| 28062 | .required_features = .{ .avx, null, null, null }, | | |
| 28063 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any }, | | |
| 28064 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, | | |
| 28065 | .patterns = &.{ | | |
| 28066 | .{ .src = .{ .mem, .none } }, | | |
| 28067 | .{ .src = .{ .to_sse, .none } }, | | |
| 28068 | }, | | |
| 28069 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 28070 | .each = .{ .once = &.{ | | |
| 28071 | .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ }, | | |
| 28072 | .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ }, | | |
| 28073 | } }, | | |
| 28074 | }, .{ | | |
| 28075 | .required_features = .{ .avx, null, null, null }, | | |
| 28076 | .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any }, | | |
| 28077 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, | | |
| 28078 | .patterns = &.{ | | |
| 28079 | .{ .src = .{ .mem, .none } }, | | |
| 28080 | .{ .src = .{ .to_sse, .none } }, | | |
| 28081 | }, | | |
| 28082 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 28083 | .each = .{ .once = &.{ | | |
| 28084 | .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ }, | | |
| 28085 | .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ }, | | |
| 28086 | } }, | | |
| 28087 | }, .{ | | |
| 28088 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 28089 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any }, | | |
| 28090 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, | | |
| 28091 | .patterns = &.{ | | |
| 28092 | .{ .src = .{ .mem, .none } }, | | |
| 28093 | .{ .src = .{ .to_sse, .none } }, | | |
| 28094 | }, | | |
| 28095 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 28096 | .each = .{ .once = &.{ | | |
| 28097 | .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ }, | | |
| 28098 | .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ }, | | |
| 28099 | } }, | | |
| 28100 | }, .{ | | |
| 28101 | .required_features = .{ .sse4_1, null, null, null }, | | |
| 28102 | .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any }, | | |
| 28103 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, | | |
| 28104 | .patterns = &.{ | | |
| 28105 | .{ .src = .{ .mem, .none } }, | | |
| 28106 | .{ .src = .{ .to_sse, .none } }, | | |
| 28107 | }, | | |
| 28108 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 28109 | .each = .{ .once = &.{ | | |
| 28110 | .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ }, | | |
| 28111 | .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ }, | | |
| 28112 | } }, | | |
| 28113 | }, .{ | | |
| 28114 | .required_features = .{ .sse2, null, null, null }, | | |
| 28115 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any }, | | |
| 28116 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, | | |
| 28117 | .patterns = &.{ | | |
| 28118 | .{ .src = .{ .to_mut_sse, .none } }, | | |
| 28119 | }, | | |
| 28120 | .extra_temps = .{ | | |
| 28121 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, | | |
| 28122 | .unused, | | |
| 28123 | .unused, | | |
| 28124 | .unused, | | |
| 28125 | .unused, | | |
| 28126 | .unused, | | |
| 28127 | .unused, | | |
| 28128 | .unused, | | |
| 28129 | .unused, | | |
| 28130 | }, | | |
| 28131 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 28132 | .each = .{ .once = &.{ | | |
| 28133 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | | |
| 28134 | .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ }, | | |
| 28135 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, | | |
| 28136 | .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ }, | | |
| 28137 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, | | |
| 28138 | .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ }, | | |
| 28139 | .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ }, | | |
| 28140 | } }, | | |
| 28141 | }, .{ | 48880 | }, .{ |
| 28142 | .required_features = .{ .sse2, null, null, null }, | 48881 | .required_features = .{ .sse2, null, null, null }, |
| 28143 | .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any }, | 48882 | .src_constraints = .{ |
| 28144 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, | 48883 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 28145 | .patterns = &.{ | 48884 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 28146 | .{ .src = .{ .to_mut_sse, .none } }, | 48885 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 28147 | }, | | |
| 28148 | .extra_temps = .{ | | |
| 28149 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, | | |
| 28150 | .unused, | | |
| 28151 | .unused, | | |
| 28152 | .unused, | | |
| 28153 | .unused, | | |
| 28154 | .unused, | | |
| 28155 | .unused, | | |
| 28156 | .unused, | | |
| 28157 | .unused, | | |
| 28158 | }, | 48886 | }, |
| 28159 | .dst_temps = .{.{ .ref = .src0 }}, | | |
| 28160 | .each = .{ .once = &.{ | | |
| 28161 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | | |
| 28162 | .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ }, | | |
| 28163 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, | | |
| 28164 | .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ }, | | |
| 28165 | } }, | | |
| 28166 | }, .{ | | |
| 28167 | .required_features = .{ .@"64bit", null, null, null }, | | |
| 28168 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any }, | | |
| 28169 | .dst_constraints = .{.any_scalar_signed_int}, | | |
| 28170 | .patterns = &.{ | 48887 | .patterns = &.{ |
| 28171 | .{ .src = .{ .to_mem, .none } }, | 48888 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28172 | }, | 48889 | }, |
| | 48890 | .call_frame = .{ .alignment = .@"16" }, |
| 28173 | .extra_temps = .{ | 48891 | .extra_temps = .{ |
| 28174 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48892 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 28175 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 48893 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 28176 | .{ .type = .i64, .kind = .{ .reg = .rax } }, | 48894 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 28177 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 48895 | .{ .type = .f16, .kind = .{ .reg = .xmm2 } }, |
| 28178 | .unused, | 48896 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } }, |
| 28179 | .unused, | 48897 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| 28180 | .unused, | 48898 | .unused, |
| 28181 | .unused, | 48899 | .unused, |
| 28182 | .unused, | 48900 | .unused, |
| 28183 | }, | 48901 | }, |
| 28184 | .dst_temps = .{.mem}, | 48902 | .dst_temps = .{.mem}, |
| | 48903 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28185 | .each = .{ .once = &.{ | 48904 | .each = .{ .once = &.{ |
| 28186 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 48905 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28187 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, | 48906 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 28188 | .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, | 48907 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 28189 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 48908 | .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ }, |
| 28190 | .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ }, | 48909 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| 28191 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, | 48910 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| 28192 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 48911 | .{ ._, .p_w, .insr, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 48912 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 48913 | .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ }, |
| | 48914 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ }, |
| 28193 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 48915 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 28194 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48916 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28195 | } }, | 48917 | } }, |
| 28196 | }, .{ | 48918 | }, .{ |
| 28197 | .required_features = .{ .@"64bit", null, null, null }, | 48919 | .required_features = .{ .sse, null, null, null }, |
| 28198 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, | 48920 | .src_constraints = .{ |
| 28199 | .dst_constraints = .{.any_scalar_int}, | 48921 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 48922 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 48923 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| | 48924 | }, |
| 28200 | .patterns = &.{ | 48925 | .patterns = &.{ |
| 28201 | .{ .src = .{ .to_mem, .none } }, | 48926 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28202 | }, | 48927 | }, |
| | 48928 | .call_frame = .{ .alignment = .@"16" }, |
| 28203 | .extra_temps = .{ | 48929 | .extra_temps = .{ |
| 28204 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 48930 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 28205 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 48931 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| 28206 | .{ .type = .u64, .kind = .{ .reg = .rax } }, | 48932 | .{ .type = .f32, .kind = .mem }, |
| 28207 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 48933 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 28208 | .unused, | 48934 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 28209 | .unused, | 48935 | .{ .type = .f16, .kind = .{ .reg = .xmm2 } }, |
| 28210 | .unused, | 48936 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } }, |
| 28211 | .unused, | 48937 | .unused, |
| 28212 | .unused, | 48938 | .unused, |
| 28213 | }, | 48939 | }, |
| 28214 | .dst_temps = .{.mem}, | 48940 | .dst_temps = .{.mem}, |
| | 48941 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28215 | .each = .{ .once = &.{ | 48942 | .each = .{ .once = &.{ |
| 28216 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 48943 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28217 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, | 48944 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28218 | .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, | 48945 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| 28219 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 48946 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| 28220 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, | 48947 | .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28221 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, | 48948 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| 28222 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 48949 | .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, |
| | 48950 | .{ ._, ._, .movzx, .tmp1d, .memia(.src2w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 48951 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 48952 | .{ ._, ._ss, .mov, .tmp5x, .mem(.tmp2d), ._, ._ }, |
| | 48953 | .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, |
| | 48954 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| | 48955 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| | 48956 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 28223 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, | 48957 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 28224 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 48958 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28225 | } }, | 48959 | } }, |
| 28226 | }, .{ | 48960 | }, .{ |
| 28227 | .required_features = .{ .avx, null, null, null }, | 48961 | .required_features = .{ .fma, null, null, null }, |
| 28228 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any }, | 48962 | .src_constraints = .{ |
| 28229 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | 48963 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 28230 | .patterns = &.{ | 48964 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 28231 | .{ .src = .{ .mem, .none } }, | 48965 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 28232 | .{ .src = .{ .to_sse, .none } }, | | |
| 28233 | }, | 48966 | }, |
| 28234 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | | |
| 28235 | .each = .{ .once = &.{ | | |
| 28236 | .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ }, | | |
| 28237 | } }, | | |
| 28238 | }, .{ | | |
| 28239 | .required_features = .{ .avx, null, null, null }, | | |
| 28240 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any }, | | |
| 28241 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, | | |
| 28242 | .patterns = &.{ | 48967 | .patterns = &.{ |
| 28243 | .{ .src = .{ .mem, .none } }, | 48968 | .{ .src = .{ .to_mut_sse, .mem, .to_sse } }, |
| 28244 | .{ .src = .{ .to_sse, .none } }, | 48969 | .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } }, |
| | 48970 | .{ .src = .{ .mut_sse, .sse, .sse } }, |
| | 48971 | .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, |
| 28245 | }, | 48972 | }, |
| 28246 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 48973 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28247 | .each = .{ .once = &.{ | 48974 | .each = .{ .once = &.{ |
| 28248 | .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ }, | 48975 | .{ ._, .v_ss, .fmadd132, .dst0x, .src2x, .src1d, ._ }, |
| 28249 | } }, | 48976 | } }, |
| 28250 | }, .{ | 48977 | }, .{ |
| 28251 | .required_features = .{ .sse4_1, null, null, null }, | 48978 | .required_features = .{ .fma, null, null, null }, |
| 28252 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any }, | 48979 | .src_constraints = .{ |
| 28253 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | 48980 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 48981 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 48982 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 48983 | }, |
| 28254 | .patterns = &.{ | 48984 | .patterns = &.{ |
| 28255 | .{ .src = .{ .mem, .none } }, | 48985 | .{ .src = .{ .to_mut_sse, .to_sse, .mem } }, |
| 28256 | .{ .src = .{ .to_sse, .none } }, | 48986 | .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } }, |
| | 48987 | .{ .src = .{ .mut_sse, .sse, .sse } }, |
| | 48988 | .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, |
| 28257 | }, | 48989 | }, |
| 28258 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 48990 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28259 | .each = .{ .once = &.{ | 48991 | .each = .{ .once = &.{ |
| 28260 | .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ }, | 48992 | .{ ._, .v_ss, .fmadd213, .dst0x, .src1x, .src2d, ._ }, |
| 28261 | } }, | 48993 | } }, |
| 28262 | }, .{ | 48994 | }, .{ |
| 28263 | .required_features = .{ .sse4_1, null, null, null }, | 48995 | .required_features = .{ .fma, null, null, null }, |
| 28264 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any }, | 48996 | .src_constraints = .{ |
| 28265 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, | 48997 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 48998 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 48999 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 49000 | }, |
| 28266 | .patterns = &.{ | 49001 | .patterns = &.{ |
| 28267 | .{ .src = .{ .mem, .none } }, | 49002 | .{ .src = .{ .to_sse, .mem, .to_mut_sse } }, |
| 28268 | .{ .src = .{ .to_sse, .none } }, | 49003 | .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } }, |
| | 49004 | .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } }, |
| 28269 | }, | 49005 | }, |
| 28270 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 49006 | .dst_temps = .{.{ .ref = .src2 }}, |
| 28271 | .each = .{ .once = &.{ | 49007 | .each = .{ .once = &.{ |
| 28272 | .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ }, | 49008 | .{ ._, .v_ss, .fmadd231, .dst0x, .src0x, .src1d, ._ }, |
| 28273 | } }, | 49009 | } }, |
| 28274 | }, .{ | 49010 | }, .{ |
| 28275 | .required_features = .{ .sse2, null, null, null }, | 49011 | .required_features = .{ .sse, null, null, null }, |
| 28276 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any }, | 49012 | .src_constraints = .{ |
| 28277 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | 49013 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 49014 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 49015 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 49016 | }, |
| 28278 | .patterns = &.{ | 49017 | .patterns = &.{ |
| 28279 | .{ .src = .{ .to_mut_sse, .none } }, | 49018 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } }, |
| 28280 | }, | 49019 | }, |
| | 49020 | .call_frame = .{ .alignment = .@"16" }, |
| 28281 | .extra_temps = .{ | 49021 | .extra_temps = .{ |
| 28282 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, | 49022 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } }, |
| 28283 | .unused, | 49023 | .unused, |
| 28284 | .unused, | 49024 | .unused, |
| 28285 | .unused, | 49025 | .unused, |
| ... | @@ -28290,121 +49030,124 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -28290,121 +49030,124 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 28290 | .unused, | 49030 | .unused, |
| 28291 | }, | 49031 | }, |
| 28292 | .dst_temps = .{.{ .ref = .src0 }}, | 49032 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 49033 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28293 | .each = .{ .once = &.{ | 49034 | .each = .{ .once = &.{ |
| 28294 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 49035 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 28295 | .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ }, | | |
| 28296 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, | | |
| 28297 | } }, | 49036 | } }, |
| 28298 | }, .{ | 49037 | }, .{ |
| 28299 | .required_features = .{ .sse2, null, null, null }, | 49038 | .required_features = .{ .fma, null, null, null }, |
| 28300 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any }, | 49039 | .src_constraints = .{ |
| 28301 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, | 49040 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 28302 | .patterns = &.{ | 49041 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 28303 | .{ .src = .{ .to_mut_sse, .none } }, | 49042 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 28304 | }, | 49043 | }, |
| 28305 | .extra_temps = .{ | 49044 | .patterns = &.{ |
| 28306 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | 49045 | .{ .src = .{ .to_mut_sse, .mem, .to_sse } }, |
| 28307 | .unused, | 49046 | .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } }, |
| 28308 | .unused, | 49047 | .{ .src = .{ .mut_sse, .sse, .sse } }, |
| 28309 | .unused, | 49048 | .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, |
| 28310 | .unused, | | |
| 28311 | .unused, | | |
| 28312 | .unused, | | |
| 28313 | .unused, | | |
| 28314 | .unused, | | |
| 28315 | }, | 49049 | }, |
| 28316 | .dst_temps = .{.{ .ref = .src0 }}, | 49050 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28317 | .each = .{ .once = &.{ | 49051 | .each = .{ .once = &.{ |
| 28318 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 49052 | .{ ._, .v_ps, .fmadd132, .dst0x, .src2x, .src1x, ._ }, |
| 28319 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, | | |
| 28320 | } }, | 49053 | } }, |
| 28321 | }, .{ | 49054 | }, .{ |
| 28322 | .required_features = .{ .avx2, null, null, null }, | 49055 | .required_features = .{ .fma, null, null, null }, |
| 28323 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any }, | 49056 | .src_constraints = .{ |
| 28324 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }}, | 49057 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 49058 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 49059 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 49060 | }, |
| 28325 | .patterns = &.{ | 49061 | .patterns = &.{ |
| 28326 | .{ .src = .{ .mem, .none } }, | 49062 | .{ .src = .{ .to_mut_sse, .to_sse, .mem } }, |
| 28327 | .{ .src = .{ .to_sse, .none } }, | 49063 | .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } }, |
| | 49064 | .{ .src = .{ .mut_sse, .sse, .sse } }, |
| | 49065 | .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, |
| 28328 | }, | 49066 | }, |
| 28329 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 49067 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28330 | .each = .{ .once = &.{ | 49068 | .each = .{ .once = &.{ |
| 28331 | .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ }, | 49069 | .{ ._, .v_ps, .fmadd213, .dst0x, .src1x, .src2x, ._ }, |
| 28332 | } }, | 49070 | } }, |
| 28333 | }, .{ | 49071 | }, .{ |
| 28334 | .required_features = .{ .avx2, null, null, null }, | 49072 | .required_features = .{ .fma, null, null, null }, |
| 28335 | .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | 49073 | .src_constraints = .{ |
| 28336 | .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }}, | 49074 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 49075 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 49076 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| | 49077 | }, |
| 28337 | .patterns = &.{ | 49078 | .patterns = &.{ |
| 28338 | .{ .src = .{ .mem, .none } }, | 49079 | .{ .src = .{ .to_sse, .mem, .to_mut_sse } }, |
| 28339 | .{ .src = .{ .to_sse, .none } }, | 49080 | .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } }, |
| | 49081 | .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } }, |
| 28340 | }, | 49082 | }, |
| 28341 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 49083 | .dst_temps = .{.{ .ref = .src2 }}, |
| 28342 | .each = .{ .once = &.{ | 49084 | .each = .{ .once = &.{ |
| 28343 | .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ }, | 49085 | .{ ._, .v_ps, .fmadd231, .dst0x, .src0x, .src1x, ._ }, |
| 28344 | } }, | 49086 | } }, |
| 28345 | }, .{ | 49087 | }, .{ |
| 28346 | .required_features = .{ .avx2, null, null, null }, | 49088 | .required_features = .{ .fma, null, null, null }, |
| 28347 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any }, | 49089 | .src_constraints = .{ |
| 28348 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }}, | 49090 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 28349 | .patterns = &.{ | 49091 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 28350 | .{ .src = .{ .mem, .none } }, | 49092 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 28351 | }, | 49093 | }, |
| 28352 | .extra_temps = .{ | 49094 | .patterns = &.{ |
| 28353 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 49095 | .{ .src = .{ .to_mut_sse, .mem, .to_sse } }, |
| 28354 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, | 49096 | .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } }, |
| 28355 | .unused, | 49097 | .{ .src = .{ .mut_sse, .sse, .sse } }, |
| 28356 | .unused, | 49098 | .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, |
| 28357 | .unused, | | |
| 28358 | .unused, | | |
| 28359 | .unused, | | |
| 28360 | .unused, | | |
| 28361 | .unused, | | |
| 28362 | }, | 49099 | }, |
| 28363 | .dst_temps = .{.mem}, | 49100 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28364 | .each = .{ .once = &.{ | 49101 | .each = .{ .once = &.{ |
| 28365 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 49102 | .{ ._, .v_ps, .fmadd132, .dst0y, .src2y, .src1y, ._ }, |
| 28366 | .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | | |
| 28367 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, | | |
| 28368 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 28369 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 28370 | } }, | 49103 | } }, |
| 28371 | }, .{ | 49104 | }, .{ |
| 28372 | .required_features = .{ .avx2, null, null, null }, | 49105 | .required_features = .{ .fma, null, null, null }, |
| 28373 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any }, | 49106 | .src_constraints = .{ |
| 28374 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }}, | 49107 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 49108 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 49109 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 49110 | }, |
| 28375 | .patterns = &.{ | 49111 | .patterns = &.{ |
| 28376 | .{ .src = .{ .mem, .none } }, | 49112 | .{ .src = .{ .to_mut_sse, .to_sse, .mem } }, |
| | 49113 | .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } }, |
| | 49114 | .{ .src = .{ .mut_sse, .sse, .sse } }, |
| | 49115 | .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, |
| 28377 | }, | 49116 | }, |
| 28378 | .extra_temps = .{ | 49117 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28379 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 49118 | .each = .{ .once = &.{ |
| 28380 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, | 49119 | .{ ._, .v_ps, .fmadd213, .dst0y, .src1y, .src2y, ._ }, |
| 28381 | .unused, | 49120 | } }, |
| 28382 | .unused, | 49121 | }, .{ |
| 28383 | .unused, | 49122 | .required_features = .{ .fma, null, null, null }, |
| 28384 | .unused, | 49123 | .src_constraints = .{ |
| 28385 | .unused, | 49124 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 28386 | .unused, | 49125 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 28387 | .unused, | 49126 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 28388 | }, | 49127 | }, |
| 28389 | .dst_temps = .{.mem}, | 49128 | .patterns = &.{ |
| | 49129 | .{ .src = .{ .to_sse, .mem, .to_mut_sse } }, |
| | 49130 | .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } }, |
| | 49131 | .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } }, |
| | 49132 | }, |
| | 49133 | .dst_temps = .{.{ .ref = .src2 }}, |
| 28390 | .each = .{ .once = &.{ | 49134 | .each = .{ .once = &.{ |
| 28391 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 49135 | .{ ._, .v_ps, .fmadd231, .dst0y, .src0y, .src1y, ._ }, |
| 28392 | .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | | |
| 28393 | .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, | | |
| 28394 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | | |
| 28395 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 28396 | } }, | 49136 | } }, |
| 28397 | }, .{ | 49137 | }, .{ |
| 28398 | .required_features = .{ .avx, null, null, null }, | 49138 | .required_features = .{ .fma, null, null, null }, |
| 28399 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any }, | 49139 | .src_constraints = .{ |
| 28400 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | 49140 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 49141 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 49142 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| | 49143 | }, |
| 28401 | .patterns = &.{ | 49144 | .patterns = &.{ |
| 28402 | .{ .src = .{ .mem, .none } }, | 49145 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28403 | }, | 49146 | }, |
| 28404 | .extra_temps = .{ | 49147 | .extra_temps = .{ |
| 28405 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 49148 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 28406 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, | 49149 | .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 28407 | .unused, | 49150 | .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, |
| 28408 | .unused, | 49151 | .unused, |
| 28409 | .unused, | 49152 | .unused, |
| 28410 | .unused, | 49153 | .unused, |
| ... | @@ -28414,126 +49157,146 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -28414,126 +49157,146 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 28414 | }, | 49157 | }, |
| 28415 | .dst_temps = .{.mem}, | 49158 | .dst_temps = .{.mem}, |
| 28416 | .each = .{ .once = &.{ | 49159 | .each = .{ .once = &.{ |
| 28417 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 49160 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28418 | .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 49161 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28419 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | 49162 | .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28420 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 49163 | .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ }, |
| | 49164 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 49165 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 28421 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 49166 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28422 | } }, | 49167 | } }, |
| 28423 | }, .{ | 49168 | }, .{ |
| 28424 | .required_features = .{ .avx, null, null, null }, | 49169 | .required_features = .{ .avx, null, null, null }, |
| 28425 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any }, | 49170 | .src_constraints = .{ |
| 28426 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, | 49171 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 49172 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 49173 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 49174 | }, |
| 28427 | .patterns = &.{ | 49175 | .patterns = &.{ |
| 28428 | .{ .src = .{ .mem, .none } }, | 49176 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28429 | }, | 49177 | }, |
| | 49178 | .call_frame = .{ .alignment = .@"16" }, |
| 28430 | .extra_temps = .{ | 49179 | .extra_temps = .{ |
| 28431 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 49180 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 28432 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 49181 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| 28433 | .unused, | 49182 | .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, |
| 28434 | .unused, | 49183 | .{ .type = .f32, .kind = .{ .reg = .xmm2 } }, |
| 28435 | .unused, | 49184 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } }, |
| 28436 | .unused, | 49185 | .unused, |
| 28437 | .unused, | 49186 | .unused, |
| 28438 | .unused, | 49187 | .unused, |
| 28439 | .unused, | 49188 | .unused, |
| 28440 | }, | 49189 | }, |
| 28441 | .dst_temps = .{.mem}, | 49190 | .dst_temps = .{.mem}, |
| | 49191 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28442 | .each = .{ .once = &.{ | 49192 | .each = .{ .once = &.{ |
| 28443 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 49193 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28444 | .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 49194 | .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28445 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | 49195 | .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28446 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 49196 | .{ ._, .v_ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 49197 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 49198 | .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 49199 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 28447 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 49200 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28448 | } }, | 49201 | } }, |
| 28449 | }, .{ | 49202 | }, .{ |
| 28450 | .required_features = .{ .sse4_1, null, null, null }, | 49203 | .required_features = .{ .sse, null, null, null }, |
| 28451 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any }, | 49204 | .src_constraints = .{ |
| 28452 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, | 49205 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 49206 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 49207 | .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, |
| | 49208 | }, |
| 28453 | .patterns = &.{ | 49209 | .patterns = &.{ |
| 28454 | .{ .src = .{ .mem, .none } }, | 49210 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28455 | }, | 49211 | }, |
| | 49212 | .call_frame = .{ .alignment = .@"16" }, |
| 28456 | .extra_temps = .{ | 49213 | .extra_temps = .{ |
| 28457 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 49214 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 28458 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, | 49215 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| 28459 | .unused, | 49216 | .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, |
| 28460 | .unused, | 49217 | .{ .type = .f32, .kind = .{ .reg = .xmm2 } }, |
| 28461 | .unused, | 49218 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } }, |
| 28462 | .unused, | 49219 | .unused, |
| 28463 | .unused, | 49220 | .unused, |
| 28464 | .unused, | 49221 | .unused, |
| 28465 | .unused, | 49222 | .unused, |
| 28466 | }, | 49223 | }, |
| 28467 | .dst_temps = .{.mem}, | 49224 | .dst_temps = .{.mem}, |
| | 49225 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28468 | .each = .{ .once = &.{ | 49226 | .each = .{ .once = &.{ |
| 28469 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 49227 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28470 | .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 49228 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28471 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | 49229 | .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28472 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 49230 | .{ ._, ._ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 49231 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 49232 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 49233 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 28473 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 49234 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28474 | } }, | 49235 | } }, |
| 28475 | }, .{ | 49236 | }, .{ |
| 28476 | .required_features = .{ .sse4_1, null, null, null }, | 49237 | .required_features = .{ .fma, null, null, null }, |
| 28477 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any }, | 49238 | .src_constraints = .{ |
| 28478 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, | 49239 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 28479 | .patterns = &.{ | 49240 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 28480 | .{ .src = .{ .mem, .none } }, | 49241 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 28481 | }, | 49242 | }, |
| 28482 | .extra_temps = .{ | 49243 | .patterns = &.{ |
| 28483 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 49244 | .{ .src = .{ .to_mut_sse, .mem, .to_sse } }, |
| 28484 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, | 49245 | .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } }, |
| 28485 | .unused, | 49246 | .{ .src = .{ .mut_sse, .sse, .sse } }, |
| 28486 | .unused, | 49247 | .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, |
| 28487 | .unused, | | |
| 28488 | .unused, | | |
| 28489 | .unused, | | |
| 28490 | .unused, | | |
| 28491 | .unused, | | |
| 28492 | }, | 49248 | }, |
| 28493 | .dst_temps = .{.mem}, | 49249 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28494 | .each = .{ .once = &.{ | 49250 | .each = .{ .once = &.{ |
| 28495 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 49251 | .{ ._, .v_sd, .fmadd132, .dst0x, .src2x, .src1q, ._ }, |
| 28496 | .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | | |
| 28497 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, | | |
| 28498 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | | |
| 28499 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 28500 | } }, | 49252 | } }, |
| 28501 | }, .{ | 49253 | }, .{ |
| 28502 | .required_features = .{ .@"64bit", null, null, null }, | 49254 | .required_features = .{ .fma, null, null, null }, |
| 28503 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any }, | 49255 | .src_constraints = .{ |
| 28504 | .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, | 49256 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49257 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49258 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49259 | }, |
| 28505 | .patterns = &.{ | 49260 | .patterns = &.{ |
| 28506 | .{ .src = .{ .to_mem, .none } }, | 49261 | .{ .src = .{ .to_mut_sse, .to_sse, .mem } }, |
| | 49262 | .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } }, |
| | 49263 | .{ .src = .{ .mut_sse, .sse, .sse } }, |
| | 49264 | .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, |
| 28507 | }, | 49265 | }, |
| 28508 | .extra_temps = .{ | 49266 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28509 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 49267 | .each = .{ .once = &.{ |
| 28510 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, | 49268 | .{ ._, .v_sd, .fmadd213, .dst0x, .src1x, .src2q, ._ }, |
| 28511 | .unused, | 49269 | } }, |
| 28512 | .unused, | 49270 | }, .{ |
| 28513 | .unused, | 49271 | .required_features = .{ .fma, null, null, null }, |
| 28514 | .unused, | 49272 | .src_constraints = .{ |
| 28515 | .unused, | 49273 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 28516 | .unused, | 49274 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 28517 | .unused, | 49275 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 28518 | }, | 49276 | }, |
| 28519 | .dst_temps = .{.mem}, | 49277 | .patterns = &.{ |
| | 49278 | .{ .src = .{ .to_sse, .mem, .to_mut_sse } }, |
| | 49279 | .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } }, |
| | 49280 | .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } }, |
| | 49281 | }, |
| | 49282 | .dst_temps = .{.{ .ref = .src2 }}, |
| 28520 | .each = .{ .once = &.{ | 49283 | .each = .{ .once = &.{ |
| 28521 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 49284 | .{ ._, .v_sd, .fmadd231, .dst0x, .src0x, .src1q, ._ }, |
| 28522 | .{ .@"0:", ._, .movsxd, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, | | |
| 28523 | .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, | | |
| 28524 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 28525 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 28526 | } }, | 49285 | } }, |
| 28527 | }, .{ | 49286 | }, .{ |
| 28528 | .required_features = .{ .@"64bit", null, null, null }, | 49287 | .required_features = .{ .sse, null, null, null }, |
| 28529 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, | 49288 | .src_constraints = .{ |
| 28530 | .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, | 49289 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49290 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49291 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49292 | }, |
| 28531 | .patterns = &.{ | 49293 | .patterns = &.{ |
| 28532 | .{ .src = .{ .to_mem, .none } }, | 49294 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } }, |
| 28533 | }, | 49295 | }, |
| | 49296 | .call_frame = .{ .alignment = .@"16" }, |
| 28534 | .extra_temps = .{ | 49297 | .extra_temps = .{ |
| 28535 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 49298 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } }, |
| 28536 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 49299 | .unused, |
| 28537 | .unused, | 49300 | .unused, |
| 28538 | .unused, | 49301 | .unused, |
| 28539 | .unused, | 49302 | .unused, |
| ... | @@ -28542,103 +49305,125 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -28542,103 +49305,125 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 28542 | .unused, | 49305 | .unused, |
| 28543 | .unused, | 49306 | .unused, |
| 28544 | }, | 49307 | }, |
| 28545 | .dst_temps = .{.mem}, | 49308 | .dst_temps = .{.{ .ref = .src0 }}, |
| | 49309 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28546 | .each = .{ .once = &.{ | 49310 | .each = .{ .once = &.{ |
| 28547 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 49311 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 28548 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, | | |
| 28549 | .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, | | |
| 28550 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 28551 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | | |
| 28552 | } }, | 49312 | } }, |
| 28553 | }, .{ | 49313 | }, .{ |
| 28554 | .required_features = .{ .avx, null, null, null }, | 49314 | .required_features = .{ .fma, null, null, null }, |
| 28555 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any }, | 49315 | .src_constraints = .{ |
| 28556 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, | 49316 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 49317 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 49318 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 49319 | }, |
| 28557 | .patterns = &.{ | 49320 | .patterns = &.{ |
| 28558 | .{ .src = .{ .mem, .none } }, | 49321 | .{ .src = .{ .to_mut_sse, .mem, .to_sse } }, |
| 28559 | .{ .src = .{ .to_sse, .none } }, | 49322 | .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } }, |
| | 49323 | .{ .src = .{ .mut_sse, .sse, .sse } }, |
| | 49324 | .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, |
| 28560 | }, | 49325 | }, |
| 28561 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 49326 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28562 | .each = .{ .once = &.{ | 49327 | .each = .{ .once = &.{ |
| 28563 | .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ }, | 49328 | .{ ._, .v_pd, .fmadd132, .dst0x, .src2x, .src1x, ._ }, |
| 28564 | .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ }, | | |
| 28565 | } }, | 49329 | } }, |
| 28566 | }, .{ | 49330 | }, .{ |
| 28567 | .required_features = .{ .avx, null, null, null }, | 49331 | .required_features = .{ .fma, null, null, null }, |
| 28568 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any }, | 49332 | .src_constraints = .{ |
| 28569 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, | 49333 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 49334 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 49335 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 49336 | }, |
| 28570 | .patterns = &.{ | 49337 | .patterns = &.{ |
| 28571 | .{ .src = .{ .mem, .none } }, | 49338 | .{ .src = .{ .to_mut_sse, .to_sse, .mem } }, |
| 28572 | .{ .src = .{ .to_sse, .none } }, | 49339 | .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } }, |
| | 49340 | .{ .src = .{ .mut_sse, .sse, .sse } }, |
| | 49341 | .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, |
| 28573 | }, | 49342 | }, |
| 28574 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 49343 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28575 | .each = .{ .once = &.{ | 49344 | .each = .{ .once = &.{ |
| 28576 | .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ }, | 49345 | .{ ._, .v_pd, .fmadd213, .dst0x, .src1x, .src2x, ._ }, |
| 28577 | .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ }, | | |
| 28578 | } }, | 49346 | } }, |
| 28579 | }, .{ | 49347 | }, .{ |
| 28580 | .required_features = .{ .sse4_1, null, null, null }, | 49348 | .required_features = .{ .fma, null, null, null }, |
| 28581 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any }, | 49349 | .src_constraints = .{ |
| 28582 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, | 49350 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 49351 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 49352 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| | 49353 | }, |
| 28583 | .patterns = &.{ | 49354 | .patterns = &.{ |
| 28584 | .{ .src = .{ .mem, .none } }, | 49355 | .{ .src = .{ .to_sse, .mem, .to_mut_sse } }, |
| 28585 | .{ .src = .{ .to_sse, .none } }, | 49356 | .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } }, |
| | 49357 | .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } }, |
| 28586 | }, | 49358 | }, |
| 28587 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 49359 | .dst_temps = .{.{ .ref = .src2 }}, |
| 28588 | .each = .{ .once = &.{ | 49360 | .each = .{ .once = &.{ |
| 28589 | .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ }, | 49361 | .{ ._, .v_pd, .fmadd231, .dst0x, .src0x, .src1x, ._ }, |
| 28590 | .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ }, | | |
| 28591 | } }, | 49362 | } }, |
| 28592 | }, .{ | 49363 | }, .{ |
| 28593 | .required_features = .{ .sse4_1, null, null, null }, | 49364 | .required_features = .{ .fma, null, null, null }, |
| 28594 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any }, | 49365 | .src_constraints = .{ |
| 28595 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, | 49366 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 49367 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 49368 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 49369 | }, |
| 28596 | .patterns = &.{ | 49370 | .patterns = &.{ |
| 28597 | .{ .src = .{ .mem, .none } }, | 49371 | .{ .src = .{ .to_mut_sse, .mem, .to_sse } }, |
| 28598 | .{ .src = .{ .to_sse, .none } }, | 49372 | .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } }, |
| | 49373 | .{ .src = .{ .mut_sse, .sse, .sse } }, |
| | 49374 | .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, |
| 28599 | }, | 49375 | }, |
| 28600 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 49376 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28601 | .each = .{ .once = &.{ | 49377 | .each = .{ .once = &.{ |
| 28602 | .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ }, | 49378 | .{ ._, .v_pd, .fmadd132, .dst0y, .src2y, .src1y, ._ }, |
| 28603 | .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ }, | | |
| 28604 | } }, | 49379 | } }, |
| 28605 | }, .{ | 49380 | }, .{ |
| 28606 | .required_features = .{ .sse2, null, null, null }, | 49381 | .required_features = .{ .fma, null, null, null }, |
| 28607 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any }, | 49382 | .src_constraints = .{ |
| 28608 | .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, | 49383 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| 28609 | .patterns = &.{ | 49384 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| 28610 | .{ .src = .{ .to_mut_sse, .none } }, | 49385 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| 28611 | }, | 49386 | }, |
| 28612 | .extra_temps = .{ | 49387 | .patterns = &.{ |
| 28613 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, | 49388 | .{ .src = .{ .to_mut_sse, .to_sse, .mem } }, |
| 28614 | .unused, | 49389 | .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } }, |
| 28615 | .unused, | 49390 | .{ .src = .{ .mut_sse, .sse, .sse } }, |
| 28616 | .unused, | 49391 | .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, |
| 28617 | .unused, | | |
| 28618 | .unused, | | |
| 28619 | .unused, | | |
| 28620 | .unused, | | |
| 28621 | .unused, | | |
| 28622 | }, | 49392 | }, |
| 28623 | .dst_temps = .{.{ .ref = .src0 }}, | 49393 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28624 | .each = .{ .once = &.{ | 49394 | .each = .{ .once = &.{ |
| 28625 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 49395 | .{ ._, .v_pd, .fmadd213, .dst0y, .src1y, .src2y, ._ }, |
| 28626 | .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ }, | | |
| 28627 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, | | |
| 28628 | .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ }, | | |
| 28629 | .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ }, | | |
| 28630 | } }, | 49396 | } }, |
| 28631 | }, .{ | 49397 | }, .{ |
| 28632 | .required_features = .{ .sse2, null, null, null }, | 49398 | .required_features = .{ .fma, null, null, null }, |
| 28633 | .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any }, | 49399 | .src_constraints = .{ |
| 28634 | .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, | 49400 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 49401 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 49402 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 49403 | }, |
| | 49404 | .patterns = &.{ |
| | 49405 | .{ .src = .{ .to_sse, .mem, .to_mut_sse } }, |
| | 49406 | .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } }, |
| | 49407 | .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } }, |
| | 49408 | }, |
| | 49409 | .dst_temps = .{.{ .ref = .src2 }}, |
| | 49410 | .each = .{ .once = &.{ |
| | 49411 | .{ ._, .v_pd, .fmadd231, .dst0y, .src0y, .src1y, ._ }, |
| | 49412 | } }, |
| | 49413 | }, .{ |
| | 49414 | .required_features = .{ .fma, null, null, null }, |
| | 49415 | .src_constraints = .{ |
| | 49416 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 49417 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 49418 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| | 49419 | }, |
| 28635 | .patterns = &.{ | 49420 | .patterns = &.{ |
| 28636 | .{ .src = .{ .to_mut_sse, .none } }, | 49421 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28637 | }, | 49422 | }, |
| 28638 | .extra_temps = .{ | 49423 | .extra_temps = .{ |
| 28639 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, | 49424 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 28640 | .unused, | 49425 | .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, |
| 28641 | .unused, | 49426 | .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, |
| 28642 | .unused, | 49427 | .unused, |
| 28643 | .unused, | 49428 | .unused, |
| 28644 | .unused, | 49429 | .unused, |
| ... | @@ -28646,592 +49431,332 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -28646,592 +49431,332 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 28646 | .unused, | 49431 | .unused, |
| 28647 | .unused, | 49432 | .unused, |
| 28648 | }, | 49433 | }, |
| 28649 | .dst_temps = .{.{ .ref = .src0 }}, | 49434 | .dst_temps = .{.mem}, |
| 28650 | .each = .{ .once = &.{ | 49435 | .each = .{ .once = &.{ |
| 28651 | .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ }, | 49436 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28652 | .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ }, | 49437 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28653 | .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ }, | 49438 | .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 49439 | .{ ._, .v_pd, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ }, |
| | 49440 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 49441 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 49442 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28654 | } }, | 49443 | } }, |
| 28655 | }, .{ | 49444 | }, .{ |
| 28656 | .required_features = .{ .@"64bit", null, null, null }, | 49445 | .required_features = .{ .avx, null, null, null }, |
| 28657 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any }, | 49446 | .src_constraints = .{ |
| 28658 | .dst_constraints = .{.any_scalar_signed_int}, | 49447 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49448 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49449 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49450 | }, |
| 28659 | .patterns = &.{ | 49451 | .patterns = &.{ |
| 28660 | .{ .src = .{ .to_mem, .none } }, | 49452 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28661 | }, | 49453 | }, |
| | 49454 | .call_frame = .{ .alignment = .@"16" }, |
| 28662 | .extra_temps = .{ | 49455 | .extra_temps = .{ |
| 28663 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 49456 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 28664 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 49457 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| 28665 | .{ .type = .i64, .kind = .{ .reg = .rax } }, | 49458 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, |
| 28666 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 49459 | .{ .type = .f64, .kind = .{ .reg = .xmm2 } }, |
| 28667 | .unused, | 49460 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } }, |
| 28668 | .unused, | 49461 | .unused, |
| 28669 | .unused, | 49462 | .unused, |
| 28670 | .unused, | 49463 | .unused, |
| 28671 | .unused, | 49464 | .unused, |
| 28672 | }, | 49465 | }, |
| 28673 | .dst_temps = .{.mem}, | 49466 | .dst_temps = .{.mem}, |
| | 49467 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28674 | .each = .{ .once = &.{ | 49468 | .each = .{ .once = &.{ |
| 28675 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 49469 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28676 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, | 49470 | .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28677 | .{ .@"0:", ._, .movsxd, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, | 49471 | .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28678 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 49472 | .{ ._, .v_sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28679 | .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ }, | 49473 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 28680 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, | 49474 | .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 28681 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 49475 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 28682 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 28683 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 49476 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28684 | } }, | 49477 | } }, |
| 28685 | }, .{ | 49478 | }, .{ |
| 28686 | .required_features = .{ .@"64bit", null, null, null }, | 49479 | .required_features = .{ .sse2, null, null, null }, |
| 28687 | .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, | 49480 | .src_constraints = .{ |
| 28688 | .dst_constraints = .{.any_scalar_int}, | 49481 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49482 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49483 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49484 | }, |
| 28689 | .patterns = &.{ | 49485 | .patterns = &.{ |
| 28690 | .{ .src = .{ .to_mem, .none } }, | 49486 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28691 | }, | 49487 | }, |
| | 49488 | .call_frame = .{ .alignment = .@"16" }, |
| 28692 | .extra_temps = .{ | 49489 | .extra_temps = .{ |
| 28693 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 49490 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 28694 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 49491 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| 28695 | .{ .type = .u64, .kind = .{ .reg = .rax } }, | 49492 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, |
| 28696 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 49493 | .{ .type = .f64, .kind = .{ .reg = .xmm2 } }, |
| 28697 | .unused, | 49494 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } }, |
| 28698 | .unused, | 49495 | .unused, |
| 28699 | .unused, | 49496 | .unused, |
| 28700 | .unused, | 49497 | .unused, |
| 28701 | .unused, | 49498 | .unused, |
| 28702 | }, | 49499 | }, |
| 28703 | .dst_temps = .{.mem}, | 49500 | .dst_temps = .{.mem}, |
| | 49501 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28704 | .each = .{ .once = &.{ | 49502 | .each = .{ .once = &.{ |
| 28705 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 49503 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28706 | .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, | 49504 | .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28707 | .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, | 49505 | .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28708 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 49506 | .{ ._, ._sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28709 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, | 49507 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 28710 | .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, | 49508 | .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 28711 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 49509 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 28712 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | | |
| 28713 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 49510 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28714 | } }, | 49511 | } }, |
| 28715 | }, .{ | 49512 | }, .{ |
| 28716 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, | 49513 | .required_features = .{ .sse, null, null, null }, |
| 28717 | .src_constraints = .{ .any_scalar_signed_int, .any }, | 49514 | .src_constraints = .{ |
| 28718 | .dst_constraints = .{.any_scalar_signed_int}, | 49515 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49516 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49517 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| | 49518 | }, |
| 28719 | .patterns = &.{ | 49519 | .patterns = &.{ |
| 28720 | .{ .src = .{ .to_mem, .none } }, | 49520 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28721 | }, | 49521 | }, |
| | 49522 | .call_frame = .{ .alignment = .@"16" }, |
| 28722 | .extra_temps = .{ | 49523 | .extra_temps = .{ |
| 28723 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 49524 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 28724 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, | 49525 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| 28725 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 49526 | .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, |
| 28726 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 49527 | .{ .type = .f64, .kind = .{ .reg = .xmm2 } }, |
| 28727 | .{ .type = .i64, .kind = .{ .reg = .rax } }, | 49528 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } }, |
| 28728 | .unused, | 49529 | .unused, |
| 28729 | .unused, | 49530 | .unused, |
| 28730 | .unused, | 49531 | .unused, |
| 28731 | .unused, | 49532 | .unused, |
| 28732 | }, | 49533 | }, |
| 28733 | .dst_temps = .{.mem}, | 49534 | .dst_temps = .{.mem}, |
| 28734 | .clobbers = .{ .eflags = true }, | 49535 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28735 | .each = .{ .once = &.{ | 49536 | .each = .{ .once = &.{ |
| 28736 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, | 49537 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28737 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, | 49538 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 28738 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, | 49539 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 28739 | .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, | 49540 | .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ }, |
| 28740 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 49541 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28741 | .{ ._, ._sq, .lod, ._, ._, ._, ._ }, | 49542 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28742 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 49543 | .{ ._, ._ps, .movl, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28743 | .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ }, | 49544 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 28744 | .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ }, | 49545 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 28745 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 49546 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 28746 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, | 49547 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28747 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, | | |
| 28748 | } }, | 49548 | } }, |
| 28749 | }, .{ | 49549 | }, .{ |
| 28750 | .required_features = .{ .@"64bit", null, null, null }, | 49550 | .required_features = .{ .sse, .x87, null, null }, |
| 28751 | .src_constraints = .{ .any_scalar_signed_int, .any }, | 49551 | .src_constraints = .{ |
| 28752 | .dst_constraints = .{.any_scalar_signed_int}, | 49552 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 49553 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 49554 | .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 49555 | }, |
| 28753 | .patterns = &.{ | 49556 | .patterns = &.{ |
| 28754 | .{ .src = .{ .to_mem, .none } }, | 49557 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28755 | }, | 49558 | }, |
| | 49559 | .call_frame = .{ .size = 16 * 3, .alignment = .@"16" }, |
| 28756 | .extra_temps = .{ | 49560 | .extra_temps = .{ |
| 28757 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 49561 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| 28758 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, | 49562 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| 28759 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 49563 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } }, |
| 28760 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 49564 | .unused, |
| 28761 | .{ .type = .i64, .kind = .{ .reg = .rax } }, | 49565 | .unused, |
| 28762 | .unused, | 49566 | .unused, |
| 28763 | .unused, | 49567 | .unused, |
| 28764 | .unused, | 49568 | .unused, |
| 28765 | .unused, | 49569 | .unused, |
| 28766 | }, | 49570 | }, |
| 28767 | .dst_temps = .{.mem}, | 49571 | .dst_temps = .{.{ .reg = .st0 }}, |
| 28768 | .clobbers = .{ .eflags = true }, | 49572 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28769 | .each = .{ .once = &.{ | 49573 | .each = .{ .once = &.{ |
| 28770 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, | 49574 | .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ }, |
| 28771 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, | 49575 | .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ }, |
| 28772 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, | 49576 | .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ }, |
| 28773 | .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, | 49577 | .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, |
| 28774 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 49578 | .{ ._, ._ps, .mova, .tmp0x, .mem(.src2x), ._, ._ }, |
| 28775 | .{ ._, ._sq, .lod, ._, ._, ._, ._ }, | 49579 | .{ ._, ._ps, .mova, .memd(.tmp1x, 16 * 2), .tmp0x, ._, ._ }, |
| 28776 | .{ ._, ._sq, .sto, ._, ._, ._, ._ }, | 49580 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| 28777 | .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ }, | | |
| 28778 | .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ }, | | |
| 28779 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | | |
| 28780 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, | | |
| 28781 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 28782 | } }, | 49581 | } }, |
| 28783 | }, .{ | 49582 | }, .{ |
| 28784 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, | 49583 | .required_features = .{ .sse, .x87, null, null }, |
| 28785 | .src_constraints = .{ .any_scalar_int, .any }, | 49584 | .src_constraints = .{ |
| 28786 | .dst_constraints = .{.any_scalar_int}, | 49585 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 49586 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 49587 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| | 49588 | }, |
| 28787 | .patterns = &.{ | 49589 | .patterns = &.{ |
| 28788 | .{ .src = .{ .to_mem, .none } }, | 49590 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 28789 | }, | 49591 | }, |
| | 49592 | .call_frame = .{ .size = 16 * 3, .alignment = .@"16" }, |
| 28790 | .extra_temps = .{ | 49593 | .extra_temps = .{ |
| 28791 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 49594 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 28792 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, | 49595 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| 28793 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 49596 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| 28794 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 49597 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } }, |
| 28795 | .{ .type = .u64, .kind = .{ .reg = .rax } }, | 49598 | .unused, |
| 28796 | .unused, | 49599 | .unused, |
| 28797 | .unused, | 49600 | .unused, |
| 28798 | .unused, | 49601 | .unused, |
| 28799 | .unused, | 49602 | .unused, |
| 28800 | }, | 49603 | }, |
| 28801 | .dst_temps = .{.mem}, | 49604 | .dst_temps = .{.mem}, |
| 28802 | .clobbers = .{ .eflags = true }, | 49605 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28803 | .each = .{ .once = &.{ | 49606 | .each = .{ .once = &.{ |
| 28804 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, | 49607 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 28805 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, | 49608 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28806 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, | 49609 | .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| 28807 | .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ }, | 49610 | .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28808 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 49611 | .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, |
| 28809 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, | 49612 | .{ ._, ._ps, .mova, .tmp1x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 28810 | .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ }, | 49613 | .{ ._, ._ps, .mova, .memd(.tmp2x, 16 * 2), .tmp1x, ._, ._ }, |
| 28811 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | 49614 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 28812 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, | 49615 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| 28813 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, | 49616 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 49617 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 49618 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 28814 | } }, | 49619 | } }, |
| 28815 | }, .{ | 49620 | }, .{ |
| 28816 | .required_features = .{ .@"64bit", null, null, null }, | 49621 | .required_features = .{ .sse, null, null, null }, |
| 28817 | .src_constraints = .{ .any_scalar_int, .any }, | 49622 | .src_constraints = .{ |
| 28818 | .dst_constraints = .{.any_scalar_int}, | 49623 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 49624 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 49625 | .{ .scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 49626 | }, |
| 28819 | .patterns = &.{ | 49627 | .patterns = &.{ |
| 28820 | .{ .src = .{ .to_mem, .none } }, | 49628 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } }, |
| 28821 | }, | 49629 | }, |
| | 49630 | .call_frame = .{ .alignment = .@"16" }, |
| 28822 | .extra_temps = .{ | 49631 | .extra_temps = .{ |
| 28823 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 49632 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } }, |
| 28824 | .{ .type = .usize, .kind = .{ .reg = .rsi } }, | 49633 | .unused, |
| 28825 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, | 49634 | .unused, |
| 28826 | .{ .type = .u32, .kind = .{ .reg = .ecx } }, | 49635 | .unused, |
| 28827 | .{ .type = .u64, .kind = .{ .reg = .rax } }, | 49636 | .unused, |
| 28828 | .unused, | 49637 | .unused, |
| 28829 | .unused, | 49638 | .unused, |
| 28830 | .unused, | 49639 | .unused, |
| 28831 | .unused, | 49640 | .unused, |
| 28832 | }, | 49641 | }, |
| 28833 | .dst_temps = .{.mem}, | 49642 | .dst_temps = .{.{ .ref = .src0 }}, |
| 28834 | .clobbers = .{ .eflags = true }, | 49643 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 28835 | .each = .{ .once = &.{ | 49644 | .each = .{ .once = &.{ |
| 28836 | .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, | 49645 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 28837 | .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, | | |
| 28838 | .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, | | |
| 28839 | .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ }, | | |
| 28840 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | | |
| 28841 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, | | |
| 28842 | .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ }, | | |
| 28843 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, | | |
| 28844 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, | | |
| 28845 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 28846 | } }, | 49646 | } }, |
| 28847 | } }) catch |err| switch (err) { | 49647 | }, .{ |
| 28848 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ | 49648 | .required_features = .{ .avx, null, null, null }, |
| 28849 | @tagName(air_tag), | 49649 | .src_constraints = .{ |
| 28850 | dst_ty.fmt(pt), | 49650 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 28851 | src_ty.fmt(pt), | 49651 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 28852 | ops[0].tracking(cg), | 49652 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 28853 | }), | | |
| 28854 | else => |e| return e, | | |
| 28855 | }; | | |
| 28856 | try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 28857 | }, | | |
| 28858 | .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else { | | |
| 28859 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 28860 | const ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 28861 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 28862 | }, | | |
| 28863 | .optional_payload_ptr_set => if (use_old) try cg.airOptionalPayloadPtrSet(inst) else { | | |
| 28864 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 28865 | const opt_ty = cg.typeOf(ty_op.operand).childType(zcu); | | |
| 28866 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 28867 | if (!opt_ty.optionalReprIsPayload(zcu)) { | | |
| 28868 | const opt_child_ty = opt_ty.optionalChild(zcu); | | |
| 28869 | const opt_child_abi_size: i32 = @intCast(opt_child_ty.abiSize(zcu)); | | |
| 28870 | try ops[0].toOffset(opt_child_abi_size, cg); | | |
| 28871 | var has_value = try cg.tempInit(.bool, .{ .immediate = 1 }); | | |
| 28872 | try ops[0].store(&has_value, .{}, cg); | | |
| 28873 | try has_value.die(cg); | | |
| 28874 | try ops[0].toOffset(-opt_child_abi_size, cg); | | |
| 28875 | } | | |
| 28876 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 28877 | }, | | |
| 28878 | .unwrap_errunion_payload_ptr => if (use_old) try cg.airUnwrapErrUnionPayloadPtr(inst) else { | | |
| 28879 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 28880 | const eu_ty = cg.typeOf(ty_op.operand).childType(zcu); | | |
| 28881 | const eu_pl_ty = eu_ty.errorUnionPayload(zcu); | | |
| 28882 | const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu)); | | |
| 28883 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 28884 | try ops[0].toOffset(eu_pl_off, cg); | | |
| 28885 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 28886 | }, | | |
| 28887 | .unwrap_errunion_err_ptr => if (use_old) try cg.airUnwrapErrUnionErrPtr(inst) else { | | |
| 28888 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 28889 | const eu_ty = cg.typeOf(ty_op.operand).childType(zcu); | | |
| 28890 | const eu_pl_ty = eu_ty.errorUnionPayload(zcu); | | |
| 28891 | const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu)); | | |
| 28892 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 28893 | try ops[0].toOffset(eu_err_off, cg); | | |
| 28894 | const err = try ops[0].load(eu_ty.errorUnionSet(zcu), .{}, cg); | | |
| 28895 | try err.finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 28896 | }, | | |
| 28897 | .errunion_payload_ptr_set => if (use_old) try cg.airErrUnionPayloadPtrSet(inst) else { | | |
| 28898 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 28899 | const eu_ty = cg.typeOf(ty_op.operand).childType(zcu); | | |
| 28900 | const eu_err_ty = eu_ty.errorUnionSet(zcu); | | |
| 28901 | const eu_pl_ty = eu_ty.errorUnionPayload(zcu); | | |
| 28902 | const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu)); | | |
| 28903 | const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu)); | | |
| 28904 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 28905 | try ops[0].toOffset(eu_err_off, cg); | | |
| 28906 | var no_err = try cg.tempInit(eu_err_ty, .{ .immediate = 0 }); | | |
| 28907 | try ops[0].store(&no_err, .{}, cg); | | |
| 28908 | try no_err.die(cg); | | |
| 28909 | try ops[0].toOffset(eu_pl_off - eu_err_off, cg); | | |
| 28910 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 28911 | }, | | |
| 28912 | .struct_field_ptr => if (use_old) try cg.airStructFieldPtr(inst) else { | | |
| 28913 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; | | |
| 28914 | const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data; | | |
| 28915 | var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand}); | | |
| 28916 | try ops[0].toOffset(cg.fieldOffset( | | |
| 28917 | cg.typeOf(extra.struct_operand), | | |
| 28918 | ty_pl.ty.toType(), | | |
| 28919 | extra.field_index, | | |
| 28920 | ), cg); | | |
| 28921 | try ops[0].finish(inst, &.{extra.struct_operand}, &ops, cg); | | |
| 28922 | }, | | |
| 28923 | .struct_field_ptr_index_0, | | |
| 28924 | .struct_field_ptr_index_1, | | |
| 28925 | .struct_field_ptr_index_2, | | |
| 28926 | .struct_field_ptr_index_3, | | |
| 28927 | => |air_tag| if (use_old) try cg.airStructFieldPtrIndex(inst, switch (air_tag) { | | |
| 28928 | else => unreachable, | | |
| 28929 | .struct_field_ptr_index_0 => 0, | | |
| 28930 | .struct_field_ptr_index_1 => 1, | | |
| 28931 | .struct_field_ptr_index_2 => 2, | | |
| 28932 | .struct_field_ptr_index_3 => 3, | | |
| 28933 | }) else { | | |
| 28934 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 28935 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 28936 | try ops[0].toOffset(cg.fieldOffset( | | |
| 28937 | cg.typeOf(ty_op.operand), | | |
| 28938 | ty_op.ty.toType(), | | |
| 28939 | switch (air_tag) { | | |
| 28940 | else => unreachable, | | |
| 28941 | .struct_field_ptr_index_0 => 0, | | |
| 28942 | .struct_field_ptr_index_1 => 1, | | |
| 28943 | .struct_field_ptr_index_2 => 2, | | |
| 28944 | .struct_field_ptr_index_3 => 3, | | |
| 28945 | }, | 49653 | }, |
| 28946 | ), cg); | | |
| 28947 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 28948 | }, | | |
| 28949 | .struct_field_val => if (use_old) try cg.airStructFieldVal(inst) else fallback: { | | |
| 28950 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; | | |
| 28951 | const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data; | | |
| 28952 | const agg_ty = cg.typeOf(extra.struct_operand); | | |
| 28953 | const field_ty = ty_pl.ty.toType(); | | |
| 28954 | const field_off: u31 = switch (agg_ty.containerLayout(zcu)) { | | |
| 28955 | .auto, .@"extern" => @intCast(agg_ty.structFieldOffset(extra.field_index, zcu)), | | |
| 28956 | .@"packed" => break :fallback try cg.airStructFieldVal(inst), | | |
| 28957 | }; | | |
| 28958 | var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand}); | | |
| 28959 | // hack around Sema OPV bugs | | |
| 28960 | var res = if (field_ty.hasRuntimeBitsIgnoreComptime(zcu)) | | |
| 28961 | try ops[0].read(field_ty, .{ .disp = field_off }, cg) | | |
| 28962 | else | | |
| 28963 | try cg.tempInit(field_ty, .none); | | |
| 28964 | try res.finish(inst, &.{extra.struct_operand}, &ops, cg); | | |
| 28965 | }, | | |
| 28966 | .set_union_tag => if (use_old) try cg.airSetUnionTag(inst) else { | | |
| 28967 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; | | |
| 28968 | const union_ty = cg.typeOf(bin_op.lhs).childType(zcu); | | |
| 28969 | const union_layout = union_ty.unionGetLayout(zcu); | | |
| 28970 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); | | |
| 28971 | // hack around Sema OPV bugs | | |
| 28972 | if (union_layout.tag_size > 0) try ops[0].store(&ops[1], .{ | | |
| 28973 | .disp = @intCast(union_layout.tagOffset()), | | |
| 28974 | }, cg); | | |
| 28975 | const res = try cg.tempInit(.void, .none); | | |
| 28976 | try res.finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); | | |
| 28977 | }, | | |
| 28978 | .get_union_tag => if (use_old) try cg.airGetUnionTag(inst) else { | | |
| 28979 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 28980 | const union_ty = cg.typeOf(ty_op.operand); | | |
| 28981 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 28982 | const union_layout = union_ty.unionGetLayout(zcu); | | |
| 28983 | assert(union_layout.tag_size > 0); | | |
| 28984 | const res = try ops[0].read(ty_op.ty.toType(), .{ | | |
| 28985 | .disp = @intCast(union_layout.tagOffset()), | | |
| 28986 | }, cg); | | |
| 28987 | try res.finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 28988 | }, | | |
| 28989 | .slice => if (use_old) try cg.airSlice(inst) else { | | |
| 28990 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; | | |
| 28991 | const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data; | | |
| 28992 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); | | |
| 28993 | try ops[0].toPair(&ops[1], cg); | | |
| 28994 | try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); | | |
| 28995 | }, | | |
| 28996 | .slice_len => if (use_old) try cg.airSliceLen(inst) else { | | |
| 28997 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 28998 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 28999 | try ops[0].toSliceLen(cg); | | |
| 29000 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 29001 | }, | | |
| 29002 | .slice_ptr => if (use_old) try cg.airSlicePtr(inst) else { | | |
| 29003 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 29004 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 29005 | try ops[0].toSlicePtr(cg); | | |
| 29006 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 29007 | }, | | |
| 29008 | .ptr_slice_len_ptr => if (use_old) try cg.airPtrSliceLenPtr(inst) else { | | |
| 29009 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 29010 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 29011 | try ops[0].toOffset(8, cg); | | |
| 29012 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 29013 | }, | | |
| 29014 | .ptr_slice_ptr_ptr => if (use_old) try cg.airPtrSlicePtrPtr(inst) else { | | |
| 29015 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 29016 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 29017 | try ops[0].toOffset(0, cg); | | |
| 29018 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 29019 | }, | | |
| 29020 | .slice_elem_val, .ptr_elem_val => |air_tag| if (use_old) switch (air_tag) { | | |
| 29021 | else => unreachable, | | |
| 29022 | .slice_elem_val => try cg.airSliceElemVal(inst), | | |
| 29023 | .ptr_elem_val => try cg.airPtrElemVal(inst), | | |
| 29024 | } else { | | |
| 29025 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; | | |
| 29026 | const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu); | | |
| 29027 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); | | |
| 29028 | try ops[0].toSlicePtr(cg); | | |
| 29029 | var res: [1]Temp = undefined; | | |
| 29030 | if (res_ty.hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{res_ty}, &ops, comptime &.{ .{ | | |
| 29031 | .dst_constraints = .{.{ .int = .byte }}, | | |
| 29032 | .patterns = &.{ | 49654 | .patterns = &.{ |
| 29033 | .{ .src = .{ .to_gpr, .simm32 } }, | 49655 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 29034 | }, | 49656 | }, |
| 29035 | .dst_temps = .{.{ .rc = .general_purpose }}, | 49657 | .call_frame = .{ .alignment = .@"16" }, |
| 29036 | .each = .{ .once = &.{ | 49658 | .extra_temps = .{ |
| 29037 | .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_times_src1), ._, ._ }, | 49659 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 29038 | } }, | 49660 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 29039 | }, .{ | 49661 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 29040 | .dst_constraints = .{.{ .int = .byte }}, | 49662 | .{ .type = .f128, .kind = .{ .reg = .xmm2 } }, |
| 29041 | .patterns = &.{ | 49663 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } }, |
| 29042 | .{ .src = .{ .to_gpr, .to_gpr } }, | 49664 | .unused, |
| | 49665 | .unused, |
| | 49666 | .unused, |
| | 49667 | .unused, |
| 29043 | }, | 49668 | }, |
| 29044 | .dst_temps = .{.{ .rc = .general_purpose }}, | 49669 | .dst_temps = .{.mem}, |
| | 49670 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 29045 | .each = .{ .once = &.{ | 49671 | .each = .{ .once = &.{ |
| 29046 | .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ }, | 49672 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 49673 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 49674 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 49675 | .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 49676 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 49677 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 49678 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 49679 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 29047 | } }, | 49680 | } }, |
| 29048 | }, .{ | 49681 | }, .{ |
| 29049 | .dst_constraints = .{.{ .int = .word }}, | 49682 | .required_features = .{ .sse2, null, null, null }, |
| 29050 | .patterns = &.{ | 49683 | .src_constraints = .{ |
| 29051 | .{ .src = .{ .to_gpr, .simm32 } }, | 49684 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 49685 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 49686 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 29052 | }, | 49687 | }, |
| 29053 | .dst_temps = .{.{ .rc = .general_purpose }}, | | |
| 29054 | .each = .{ .once = &.{ | | |
| 29055 | .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_times_src1), ._, ._ }, | | |
| 29056 | } }, | | |
| 29057 | }, .{ | | |
| 29058 | .dst_constraints = .{.{ .int = .word }}, | | |
| 29059 | .patterns = &.{ | 49688 | .patterns = &.{ |
| 29060 | .{ .src = .{ .to_gpr, .to_gpr } }, | 49689 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 29061 | }, | 49690 | }, |
| 29062 | .dst_temps = .{.{ .rc = .general_purpose }}, | 49691 | .call_frame = .{ .alignment = .@"16" }, |
| 29063 | .each = .{ .once = &.{ | 49692 | .extra_temps = .{ |
| 29064 | .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ }, | 49693 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 29065 | } }, | 49694 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 29066 | }, .{ | 49695 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 29067 | .dst_constraints = .{.{ .int = .dword }}, | 49696 | .{ .type = .f128, .kind = .{ .reg = .xmm2 } }, |
| 29068 | .patterns = &.{ | 49697 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } }, |
| 29069 | .{ .src = .{ .to_gpr, .simm32 } }, | 49698 | .unused, |
| | 49699 | .unused, |
| | 49700 | .unused, |
| | 49701 | .unused, |
| 29070 | }, | 49702 | }, |
| 29071 | .dst_temps = .{.{ .rc = .general_purpose }}, | 49703 | .dst_temps = .{.mem}, |
| | 49704 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 29072 | .each = .{ .once = &.{ | 49705 | .each = .{ .once = &.{ |
| 29073 | .{ ._, ._, .mov, .dst0d, .leaa(.src0d, .add_src0_elem_size_times_src1), ._, ._ }, | 49706 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 49707 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 49708 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 49709 | .{ ._, ._dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 49710 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 49711 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 49712 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 49713 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 29074 | } }, | 49714 | } }, |
| 29075 | }, .{ | 49715 | }, .{ |
| 29076 | .dst_constraints = .{.{ .int = .dword }}, | 49716 | .required_features = .{ .sse, null, null, null }, |
| 29077 | .patterns = &.{ | 49717 | .src_constraints = .{ |
| 29078 | .{ .src = .{ .to_gpr, .to_gpr } }, | 49718 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 49719 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| | 49720 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 29079 | }, | 49721 | }, |
| 29080 | .dst_temps = .{.{ .rc = .general_purpose }}, | | |
| 29081 | .each = .{ .once = &.{ | | |
| 29082 | .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ }, | | |
| 29083 | } }, | | |
| 29084 | }, .{ | | |
| 29085 | .dst_constraints = .{.{ .int = .qword }}, | | |
| 29086 | .patterns = &.{ | 49722 | .patterns = &.{ |
| 29087 | .{ .src = .{ .to_gpr, .simm32 } }, | 49723 | .{ .src = .{ .to_mem, .to_mem, .to_mem } }, |
| 29088 | }, | 49724 | }, |
| 29089 | .dst_temps = .{.{ .rc = .general_purpose }}, | 49725 | .call_frame = .{ .alignment = .@"16" }, |
| 29090 | .each = .{ .once = &.{ | 49726 | .extra_temps = .{ |
| 29091 | .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_times_src1), ._, ._ }, | 49727 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 29092 | } }, | 49728 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 29093 | }, .{ | 49729 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 29094 | .required_features = .{ .@"64bit", null, null, null }, | 49730 | .{ .type = .f128, .kind = .{ .reg = .xmm2 } }, |
| 29095 | .dst_constraints = .{.{ .int = .qword }}, | 49731 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } }, |
| 29096 | .patterns = &.{ | 49732 | .unused, |
| 29097 | .{ .src = .{ .to_gpr, .to_gpr } }, | 49733 | .unused, |
| | 49734 | .unused, |
| | 49735 | .unused, |
| 29098 | }, | 49736 | }, |
| 29099 | .dst_temps = .{.{ .rc = .general_purpose }}, | 49737 | .dst_temps = .{.mem}, |
| | 49738 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 29100 | .each = .{ .once = &.{ | 49739 | .each = .{ .once = &.{ |
| 29101 | .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ }, | 49740 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 49741 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 49742 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 49743 | .{ ._, ._ps, .mova, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 49744 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 49745 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 49746 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 49747 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 29102 | } }, | 49748 | } }, |
| 29103 | } }) catch |err| switch (err) { | 49749 | } }) catch |err| switch (err) { |
| 29104 | error.SelectFailed => { | 49750 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{ |
| 29105 | const elem_size = res_ty.abiSize(zcu); | 49751 | @tagName(air_tag), |
| 29106 | while (true) for (&ops) |*op| { | 49752 | cg.typeOf(bin_op.lhs).fmt(pt), |
| 29107 | if (try op.toRegClass(true, .general_purpose, cg)) break; | 49753 | ops[0].tracking(cg), |
| 29108 | } else break; | 49754 | ops[1].tracking(cg), |
| 29109 | const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64(); | 49755 | ops[2].tracking(cg), |
| 29110 | const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64(); | 49756 | }), |
| 29111 | if (!std.math.isPowerOfTwo(elem_size)) { | | |
| 29112 | try cg.spillEflagsIfOccupied(); | | |
| 29113 | try cg.asmRegisterRegisterImmediate( | | |
| 29114 | .{ .i_, .mul }, | | |
| 29115 | rhs_reg, | | |
| 29116 | rhs_reg, | | |
| 29117 | .u(elem_size), | | |
| 29118 | ); | | |
| 29119 | try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{ | | |
| 29120 | .base = .{ .reg = lhs_reg }, | | |
| 29121 | .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } }, | | |
| 29122 | }); | | |
| 29123 | } else if (elem_size > 8) { | | |
| 29124 | try cg.spillEflagsIfOccupied(); | | |
| 29125 | try cg.asmRegisterImmediate( | | |
| 29126 | .{ ._l, .sh }, | | |
| 29127 | rhs_reg, | | |
| 29128 | .u(std.math.log2_int(u64, elem_size)), | | |
| 29129 | ); | | |
| 29130 | try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{ | | |
| 29131 | .base = .{ .reg = lhs_reg }, | | |
| 29132 | .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } }, | | |
| 29133 | }); | | |
| 29134 | } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{ | | |
| 29135 | .base = .{ .reg = lhs_reg }, | | |
| 29136 | .mod = .{ .rm = .{ | | |
| 29137 | .size = .qword, | | |
| 29138 | .index = rhs_reg, | | |
| 29139 | .scale = .fromFactor(@intCast(elem_size)), | | |
| 29140 | } }, | | |
| 29141 | }); | | |
| 29142 | res[0] = try ops[0].load(res_ty, .{}, cg); | | |
| 29143 | }, | | |
| 29144 | else => |e| return e, | 49757 | else => |e| return e, |
| 29145 | } else { | 49758 | }; |
| 29146 | // hack around Sema OPV bugs | 49759 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs, pl_op.operand }, &ops, cg); |
| 29147 | res[0] = try cg.tempInit(res_ty, .none); | | |
| 29148 | } | | |
| 29149 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); | | |
| 29150 | }, | | |
| 29151 | .slice_elem_ptr, .ptr_elem_ptr => |air_tag| if (use_old) switch (air_tag) { | | |
| 29152 | else => unreachable, | | |
| 29153 | .slice_elem_ptr => try cg.airSliceElemPtr(inst), | | |
| 29154 | .ptr_elem_ptr => try cg.airPtrElemPtr(inst), | | |
| 29155 | } else { | | |
| 29156 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; | | |
| 29157 | const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data; | | |
| 29158 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); | | |
| 29159 | try ops[0].toSlicePtr(cg); | | |
| 29160 | const dst_ty = ty_pl.ty.toType(); | | |
| 29161 | if (dst_ty.ptrInfo(zcu).flags.vector_index == .none) zero_offset: { | | |
| 29162 | const elem_size = dst_ty.childType(zcu).abiSize(zcu); | | |
| 29163 | // hack around Sema OPV bugs | | |
| 29164 | if (elem_size == 0) break :zero_offset; | | |
| 29165 | while (true) for (&ops) |*op| { | | |
| 29166 | if (try op.toRegClass(true, .general_purpose, cg)) break; | | |
| 29167 | } else break; | | |
| 29168 | const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64(); | | |
| 29169 | const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64(); | | |
| 29170 | if (!std.math.isPowerOfTwo(elem_size)) { | | |
| 29171 | try cg.spillEflagsIfOccupied(); | | |
| 29172 | try cg.asmRegisterRegisterImmediate( | | |
| 29173 | .{ .i_, .mul }, | | |
| 29174 | rhs_reg, | | |
| 29175 | rhs_reg, | | |
| 29176 | .u(elem_size), | | |
| 29177 | ); | | |
| 29178 | try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{ | | |
| 29179 | .base = .{ .reg = lhs_reg }, | | |
| 29180 | .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } }, | | |
| 29181 | }); | | |
| 29182 | } else if (elem_size > 8) { | | |
| 29183 | try cg.spillEflagsIfOccupied(); | | |
| 29184 | try cg.asmRegisterImmediate( | | |
| 29185 | .{ ._l, .sh }, | | |
| 29186 | rhs_reg, | | |
| 29187 | .u(std.math.log2_int(u64, elem_size)), | | |
| 29188 | ); | | |
| 29189 | try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{ | | |
| 29190 | .base = .{ .reg = lhs_reg }, | | |
| 29191 | .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } }, | | |
| 29192 | }); | | |
| 29193 | } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{ | | |
| 29194 | .base = .{ .reg = lhs_reg }, | | |
| 29195 | .mod = .{ .rm = .{ | | |
| 29196 | .size = .qword, | | |
| 29197 | .index = rhs_reg, | | |
| 29198 | .scale = .fromFactor(@intCast(elem_size)), | | |
| 29199 | } }, | | |
| 29200 | }); | | |
| 29201 | } | | |
| 29202 | try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); | | |
| 29203 | }, | | |
| 29204 | .array_to_slice => if (use_old) try cg.airArrayToSlice(inst) else { | | |
| 29205 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | | |
| 29206 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | | |
| 29207 | var len = try cg.tempInit(.usize, .{ | | |
| 29208 | .immediate = cg.typeOf(ty_op.operand).childType(zcu).arrayLen(zcu), | | |
| 29209 | }); | | |
| 29210 | try ops[0].toPair(&len, cg); | | |
| 29211 | try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); | | |
| 29212 | }, | | |
| 29213 | .error_set_has_value => return cg.fail("TODO implement error_set_has_value", .{}), | | |
| 29214 | .union_init => if (use_old) try cg.airUnionInit(inst) else { | | |
| 29215 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; | | |
| 29216 | const extra = cg.air.extraData(Air.UnionInit, ty_pl.payload).data; | | |
| 29217 | const union_ty = ty_pl.ty.toType(); | | |
| 29218 | var ops = try cg.tempsFromOperands(inst, .{extra.init}); | | |
| 29219 | var res = try cg.tempAllocMem(union_ty); | | |
| 29220 | const union_layout = union_ty.unionGetLayout(zcu); | | |
| 29221 | if (union_layout.tag_size > 0) { | | |
| 29222 | var tag_temp = try cg.tempFromValue(try pt.enumValueFieldIndex( | | |
| 29223 | union_ty.unionTagTypeSafety(zcu).?, | | |
| 29224 | extra.field_index, | | |
| 29225 | )); | | |
| 29226 | try res.write(&tag_temp, .{ | | |
| 29227 | .disp = @intCast(union_layout.tagOffset()), | | |
| 29228 | }, cg); | | |
| 29229 | try tag_temp.die(cg); | | |
| 29230 | } | | |
| 29231 | try res.write(&ops[0], .{ | | |
| 29232 | .disp = @intCast(union_layout.payloadOffset()), | | |
| 29233 | }, cg); | | |
| 29234 | try res.finish(inst, &.{extra.init}, &ops, cg); | | |
| 29235 | }, | 49760 | }, |
| 29236 | .field_parent_ptr => if (use_old) try cg.airFieldParentPtr(inst) else { | 49761 | .field_parent_ptr => if (use_old) try cg.airFieldParentPtr(inst) else { |
| 29237 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; | 49762 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; |
| ... | @@ -34169,7 +54694,7 @@ fn genRoundLibcall(self: *CodeGen, ty: Type, src_mcv: MCValue, mode: bits.RoundM | ... | @@ -34169,7 +54694,7 @@ fn genRoundLibcall(self: *CodeGen, ty: Type, src_mcv: MCValue, mode: bits.RoundM |
| 34169 | .param_types = &.{ty.toIntern()}, | 54694 | .param_types = &.{ty.toIntern()}, |
| 34170 | .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{ | 54695 | .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{ |
| 34171 | floatLibcAbiPrefix(ty), | 54696 | floatLibcAbiPrefix(ty), |
| 34172 | switch (mode.mode) { | 54697 | switch (mode.direction) { |
| 34173 | .down => "floor", | 54698 | .down => "floor", |
| 34174 | .up => "ceil", | 54699 | .up => "ceil", |
| 34175 | .zero => "trunc", | 54700 | .zero => "trunc", |
| ... | @@ -36813,7 +57338,7 @@ fn genBinOp( | ... | @@ -36813,7 +57338,7 @@ fn genBinOp( |
| 36813 | } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{}); | 57338 | } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{}); |
| 36814 | }, | 57339 | }, |
| 36815 | .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{ | 57340 | .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{ |
| 36816 | .mode = switch (air_tag) { | 57341 | .direction = switch (air_tag) { |
| 36817 | .div_trunc => .zero, | 57342 | .div_trunc => .zero, |
| 36818 | .div_floor => .down, | 57343 | .div_floor => .down, |
| 36819 | else => unreachable, | 57344 | else => unreachable, |
| ... | @@ -37271,7 +57796,7 @@ fn genBinOp( | ... | @@ -37271,7 +57796,7 @@ fn genBinOp( |
| 37271 | dst_reg, | 57796 | dst_reg, |
| 37272 | dst_reg, | 57797 | dst_reg, |
| 37273 | bits.RoundMode.imm(.{ | 57798 | bits.RoundMode.imm(.{ |
| 37274 | .mode = switch (air_tag) { | 57799 | .direction = switch (air_tag) { |
| 37275 | .div_trunc => .zero, | 57800 | .div_trunc => .zero, |
| 37276 | .div_floor => .down, | 57801 | .div_floor => .down, |
| 37277 | else => unreachable, | 57802 | else => unreachable, |
| ... | @@ -38073,7 +58598,7 @@ fn genBinOp( | ... | @@ -38073,7 +58598,7 @@ fn genBinOp( |
| 38073 | switch (air_tag) { | 58598 | switch (air_tag) { |
| 38074 | .add, .add_wrap, .sub, .sub_wrap, .mul, .mul_wrap, .div_float, .div_exact => {}, | 58599 | .add, .add_wrap, .sub, .sub_wrap, .mul, .mul_wrap, .div_float, .div_exact => {}, |
| 38075 | .div_trunc, .div_floor => try self.genRound(lhs_ty, dst_reg, .{ .register = dst_reg }, .{ | 58600 | .div_trunc, .div_floor => try self.genRound(lhs_ty, dst_reg, .{ .register = dst_reg }, .{ |
| 38076 | .mode = switch (air_tag) { | 58601 | .direction = switch (air_tag) { |
| 38077 | .div_trunc => .zero, | 58602 | .div_trunc => .zero, |
| 38078 | .div_floor => .down, | 58603 | .div_floor => .down, |
| 38079 | else => unreachable, | 58604 | else => unreachable, |
| ... | @@ -45841,10 +66366,17 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void { | ... | @@ -45841,10 +66366,17 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void { |
| 45841 | const acc_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp); | 66366 | const acc_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp); |
| 45842 | const acc_lock = self.register_manager.lockRegAssumeUnused(acc_reg); | 66367 | const acc_lock = self.register_manager.lockRegAssumeUnused(acc_reg); |
| 45843 | defer self.register_manager.unlockReg(acc_lock); | 66368 | defer self.register_manager.unlockReg(acc_lock); |
| 45844 | var limb_offset: i31 = 0; | 66369 | var limb_offset: i31 = @intCast((mask_len - 1) / 64 * 8); |
| 45845 | while (limb_offset < abi_size) : (limb_offset += 8) { | 66370 | const need_mask = mask_len % 64 != 0; |
| | 66371 | if (need_mask) try self.asmRegisterImmediate( |
| | 66372 | .{ ._, .mov }, |
| | 66373 | if (mask_len % 64 <= 32) acc_reg.to32() else acc_reg.to64(), |
| | 66374 | .u((@as(u64, std.math.maxInt(u64)) >> @truncate(-%mask_len))), |
| | 66375 | ); |
| | 66376 | var first = true; |
| | 66377 | while (true) : (limb_offset -= 8) { |
| 45846 | try self.asmRegisterMemory( | 66378 | try self.asmRegisterMemory( |
| 45847 | .{ ._, if (limb_offset == 0) .mov else switch (reduce.operation) { | 66379 | .{ ._, if (first) if (need_mask) .@"and" else .mov else switch (reduce.operation) { |
| 45848 | .Or => .@"or", | 66380 | .Or => .@"or", |
| 45849 | .And => .@"and", | 66381 | .And => .@"and", |
| 45850 | else => return self.fail("TODO implement airReduce for {}", .{operand_ty.fmt(pt)}), | 66382 | else => return self.fail("TODO implement airReduce for {}", .{operand_ty.fmt(pt)}), |
| ... | @@ -45855,6 +66387,8 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void { | ... | @@ -45855,6 +66387,8 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void { |
| 45855 | .disp = limb_offset, | 66387 | .disp = limb_offset, |
| 45856 | }), | 66388 | }), |
| 45857 | ); | 66389 | ); |
| | 66390 | if (limb_offset == 0) break; |
| | 66391 | first = false; |
| 45858 | } | 66392 | } |
| 45859 | switch (reduce.operation) { | 66393 | switch (reduce.operation) { |
| 45860 | .Or => { | 66394 | .Or => { |
| ... | @@ -48345,11 +68879,11 @@ const Temp = struct { | ... | @@ -48345,11 +68879,11 @@ const Temp = struct { |
| 48345 | }; | 68879 | }; |
| 48346 | if (commute) std.mem.swap(Temp, &ops[0], &ops[1]); | 68880 | if (commute) std.mem.swap(Temp, &ops[0], &ops[1]); |
| 48347 | try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ | 68881 | try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ |
| 48348 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } }, | 68882 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| 48349 | .patterns = &.{ | 68883 | .patterns = &.{ |
| 48350 | .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } }, | 68884 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| 48351 | .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } }, | 68885 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48352 | .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, | 68886 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48353 | }, | 68887 | }, |
| 48354 | .dst_temps = .{.{ .cc = .g }}, | 68888 | .dst_temps = .{.{ .cc = .g }}, |
| 48355 | .clobbers = .{ .eflags = true }, | 68889 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48357,12 +68891,12 @@ const Temp = struct { | ... | @@ -48357,12 +68891,12 @@ const Temp = struct { |
| 48357 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 68891 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 48358 | } }, | 68892 | } }, |
| 48359 | }, .{ | 68893 | }, .{ |
| 48360 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } }, | 68894 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| 48361 | .patterns = &.{ | 68895 | .patterns = &.{ |
| 48362 | .{ .src = .{ .mem, .imm8 } }, | 68896 | .{ .src = .{ .mem, .imm8, .none } }, |
| 48363 | .{ .src = .{ .to_gpr, .imm8 } }, | 68897 | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| 48364 | .{ .src = .{ .to_gpr, .mem } }, | 68898 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 48365 | .{ .src = .{ .to_gpr, .to_gpr } }, | 68899 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 48366 | }, | 68900 | }, |
| 48367 | .dst_temps = .{.{ .cc = .l }}, | 68901 | .dst_temps = .{.{ .cc = .l }}, |
| 48368 | .clobbers = .{ .eflags = true }, | 68902 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48370,11 +68904,11 @@ const Temp = struct { | ... | @@ -48370,11 +68904,11 @@ const Temp = struct { |
| 48370 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 68904 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 48371 | } }, | 68905 | } }, |
| 48372 | }, .{ | 68906 | }, .{ |
| 48373 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } }, | 68907 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| 48374 | .patterns = &.{ | 68908 | .patterns = &.{ |
| 48375 | .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } }, | 68909 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| 48376 | .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } }, | 68910 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48377 | .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, | 68911 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48378 | }, | 68912 | }, |
| 48379 | .dst_temps = .{.{ .cc = .a }}, | 68913 | .dst_temps = .{.{ .cc = .a }}, |
| 48380 | .clobbers = .{ .eflags = true }, | 68914 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48382,12 +68916,12 @@ const Temp = struct { | ... | @@ -48382,12 +68916,12 @@ const Temp = struct { |
| 48382 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 68916 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 48383 | } }, | 68917 | } }, |
| 48384 | }, .{ | 68918 | }, .{ |
| 48385 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } }, | 68919 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| 48386 | .patterns = &.{ | 68920 | .patterns = &.{ |
| 48387 | .{ .src = .{ .mem, .imm8 } }, | 68921 | .{ .src = .{ .mem, .imm8, .none } }, |
| 48388 | .{ .src = .{ .to_gpr, .imm8 } }, | 68922 | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| 48389 | .{ .src = .{ .to_gpr, .mem } }, | 68923 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 48390 | .{ .src = .{ .to_gpr, .to_gpr } }, | 68924 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 48391 | }, | 68925 | }, |
| 48392 | .dst_temps = .{.{ .cc = .b }}, | 68926 | .dst_temps = .{.{ .cc = .b }}, |
| 48393 | .clobbers = .{ .eflags = true }, | 68927 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48395,11 +68929,11 @@ const Temp = struct { | ... | @@ -48395,11 +68929,11 @@ const Temp = struct { |
| 48395 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 68929 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 48396 | } }, | 68930 | } }, |
| 48397 | }, .{ | 68931 | }, .{ |
| 48398 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } }, | 68932 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 48399 | .patterns = &.{ | 68933 | .patterns = &.{ |
| 48400 | .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } }, | 68934 | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, |
| 48401 | .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } }, | 68935 | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48402 | .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, | 68936 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48403 | }, | 68937 | }, |
| 48404 | .dst_temps = .{.{ .cc = .g }}, | 68938 | .dst_temps = .{.{ .cc = .g }}, |
| 48405 | .clobbers = .{ .eflags = true }, | 68939 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48407,12 +68941,12 @@ const Temp = struct { | ... | @@ -48407,12 +68941,12 @@ const Temp = struct { |
| 48407 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 68941 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 48408 | } }, | 68942 | } }, |
| 48409 | }, .{ | 68943 | }, .{ |
| 48410 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } }, | 68944 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 48411 | .patterns = &.{ | 68945 | .patterns = &.{ |
| 48412 | .{ .src = .{ .mem, .imm16 } }, | 68946 | .{ .src = .{ .mem, .imm16, .none } }, |
| 48413 | .{ .src = .{ .to_gpr, .imm16 } }, | 68947 | .{ .src = .{ .to_gpr, .imm16, .none } }, |
| 48414 | .{ .src = .{ .to_gpr, .mem } }, | 68948 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 48415 | .{ .src = .{ .to_gpr, .to_gpr } }, | 68949 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 48416 | }, | 68950 | }, |
| 48417 | .dst_temps = .{.{ .cc = .l }}, | 68951 | .dst_temps = .{.{ .cc = .l }}, |
| 48418 | .clobbers = .{ .eflags = true }, | 68952 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48420,11 +68954,11 @@ const Temp = struct { | ... | @@ -48420,11 +68954,11 @@ const Temp = struct { |
| 48420 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 68954 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 48421 | } }, | 68955 | } }, |
| 48422 | }, .{ | 68956 | }, .{ |
| 48423 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } }, | 68957 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| 48424 | .patterns = &.{ | 68958 | .patterns = &.{ |
| 48425 | .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } }, | 68959 | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, |
| 48426 | .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } }, | 68960 | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48427 | .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, | 68961 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48428 | }, | 68962 | }, |
| 48429 | .dst_temps = .{.{ .cc = .a }}, | 68963 | .dst_temps = .{.{ .cc = .a }}, |
| 48430 | .clobbers = .{ .eflags = true }, | 68964 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48432,12 +68966,12 @@ const Temp = struct { | ... | @@ -48432,12 +68966,12 @@ const Temp = struct { |
| 48432 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 68966 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 48433 | } }, | 68967 | } }, |
| 48434 | }, .{ | 68968 | }, .{ |
| 48435 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } }, | 68969 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| 48436 | .patterns = &.{ | 68970 | .patterns = &.{ |
| 48437 | .{ .src = .{ .mem, .imm16 } }, | 68971 | .{ .src = .{ .mem, .imm16, .none } }, |
| 48438 | .{ .src = .{ .to_gpr, .imm16 } }, | 68972 | .{ .src = .{ .to_gpr, .imm16, .none } }, |
| 48439 | .{ .src = .{ .to_gpr, .mem } }, | 68973 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 48440 | .{ .src = .{ .to_gpr, .to_gpr } }, | 68974 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 48441 | }, | 68975 | }, |
| 48442 | .dst_temps = .{.{ .cc = .b }}, | 68976 | .dst_temps = .{.{ .cc = .b }}, |
| 48443 | .clobbers = .{ .eflags = true }, | 68977 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48445,11 +68979,11 @@ const Temp = struct { | ... | @@ -48445,11 +68979,11 @@ const Temp = struct { |
| 48445 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 68979 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 48446 | } }, | 68980 | } }, |
| 48447 | }, .{ | 68981 | }, .{ |
| 48448 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } }, | 68982 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| 48449 | .patterns = &.{ | 68983 | .patterns = &.{ |
| 48450 | .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } }, | 68984 | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 48451 | .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } }, | 68985 | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48452 | .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, | 68986 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48453 | }, | 68987 | }, |
| 48454 | .dst_temps = .{.{ .cc = .g }}, | 68988 | .dst_temps = .{.{ .cc = .g }}, |
| 48455 | .clobbers = .{ .eflags = true }, | 68989 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48457,12 +68991,12 @@ const Temp = struct { | ... | @@ -48457,12 +68991,12 @@ const Temp = struct { |
| 48457 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | 68991 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 48458 | } }, | 68992 | } }, |
| 48459 | }, .{ | 68993 | }, .{ |
| 48460 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } }, | 68994 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| 48461 | .patterns = &.{ | 68995 | .patterns = &.{ |
| 48462 | .{ .src = .{ .mem, .imm32 } }, | 68996 | .{ .src = .{ .mem, .imm32, .none } }, |
| 48463 | .{ .src = .{ .to_gpr, .imm32 } }, | 68997 | .{ .src = .{ .to_gpr, .imm32, .none } }, |
| 48464 | .{ .src = .{ .to_gpr, .mem } }, | 68998 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 48465 | .{ .src = .{ .to_gpr, .to_gpr } }, | 68999 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 48466 | }, | 69000 | }, |
| 48467 | .dst_temps = .{.{ .cc = .l }}, | 69001 | .dst_temps = .{.{ .cc = .l }}, |
| 48468 | .clobbers = .{ .eflags = true }, | 69002 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48470,11 +69004,11 @@ const Temp = struct { | ... | @@ -48470,11 +69004,11 @@ const Temp = struct { |
| 48470 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | 69004 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 48471 | } }, | 69005 | } }, |
| 48472 | }, .{ | 69006 | }, .{ |
| 48473 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } }, | 69007 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| 48474 | .patterns = &.{ | 69008 | .patterns = &.{ |
| 48475 | .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } }, | 69009 | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 48476 | .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } }, | 69010 | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48477 | .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, | 69011 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48478 | }, | 69012 | }, |
| 48479 | .dst_temps = .{.{ .cc = .a }}, | 69013 | .dst_temps = .{.{ .cc = .a }}, |
| 48480 | .clobbers = .{ .eflags = true }, | 69014 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48482,12 +69016,12 @@ const Temp = struct { | ... | @@ -48482,12 +69016,12 @@ const Temp = struct { |
| 48482 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | 69016 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 48483 | } }, | 69017 | } }, |
| 48484 | }, .{ | 69018 | }, .{ |
| 48485 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } }, | 69019 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| 48486 | .patterns = &.{ | 69020 | .patterns = &.{ |
| 48487 | .{ .src = .{ .mem, .imm32 } }, | 69021 | .{ .src = .{ .mem, .imm32, .none } }, |
| 48488 | .{ .src = .{ .to_gpr, .imm32 } }, | 69022 | .{ .src = .{ .to_gpr, .imm32, .none } }, |
| 48489 | .{ .src = .{ .to_gpr, .mem } }, | 69023 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 48490 | .{ .src = .{ .to_gpr, .to_gpr } }, | 69024 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 48491 | }, | 69025 | }, |
| 48492 | .dst_temps = .{.{ .cc = .b }}, | 69026 | .dst_temps = .{.{ .cc = .b }}, |
| 48493 | .clobbers = .{ .eflags = true }, | 69027 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48496,11 +69030,11 @@ const Temp = struct { | ... | @@ -48496,11 +69030,11 @@ const Temp = struct { |
| 48496 | } }, | 69030 | } }, |
| 48497 | }, .{ | 69031 | }, .{ |
| 48498 | .required_features = .{ .@"64bit", null, null, null }, | 69032 | .required_features = .{ .@"64bit", null, null, null }, |
| 48499 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } }, | 69033 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| 48500 | .patterns = &.{ | 69034 | .patterns = &.{ |
| 48501 | .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } }, | 69035 | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 48502 | .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } }, | 69036 | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48503 | .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, | 69037 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48504 | }, | 69038 | }, |
| 48505 | .dst_temps = .{.{ .cc = .g }}, | 69039 | .dst_temps = .{.{ .cc = .g }}, |
| 48506 | .clobbers = .{ .eflags = true }, | 69040 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48509,12 +69043,12 @@ const Temp = struct { | ... | @@ -48509,12 +69043,12 @@ const Temp = struct { |
| 48509 | } }, | 69043 | } }, |
| 48510 | }, .{ | 69044 | }, .{ |
| 48511 | .required_features = .{ .@"64bit", null, null, null }, | 69045 | .required_features = .{ .@"64bit", null, null, null }, |
| 48512 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } }, | 69046 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| 48513 | .patterns = &.{ | 69047 | .patterns = &.{ |
| 48514 | .{ .src = .{ .mem, .simm32 } }, | 69048 | .{ .src = .{ .mem, .simm32, .none } }, |
| 48515 | .{ .src = .{ .to_gpr, .simm32 } }, | 69049 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 48516 | .{ .src = .{ .to_gpr, .mem } }, | 69050 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 48517 | .{ .src = .{ .to_gpr, .to_gpr } }, | 69051 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 48518 | }, | 69052 | }, |
| 48519 | .dst_temps = .{.{ .cc = .l }}, | 69053 | .dst_temps = .{.{ .cc = .l }}, |
| 48520 | .clobbers = .{ .eflags = true }, | 69054 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48523,11 +69057,11 @@ const Temp = struct { | ... | @@ -48523,11 +69057,11 @@ const Temp = struct { |
| 48523 | } }, | 69057 | } }, |
| 48524 | }, .{ | 69058 | }, .{ |
| 48525 | .required_features = .{ .@"64bit", null, null, null }, | 69059 | .required_features = .{ .@"64bit", null, null, null }, |
| 48526 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } }, | 69060 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| 48527 | .patterns = &.{ | 69061 | .patterns = &.{ |
| 48528 | .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } }, | 69062 | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 48529 | .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } }, | 69063 | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48530 | .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, | 69064 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48531 | }, | 69065 | }, |
| 48532 | .dst_temps = .{.{ .cc = .a }}, | 69066 | .dst_temps = .{.{ .cc = .a }}, |
| 48533 | .clobbers = .{ .eflags = true }, | 69067 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48536,12 +69070,12 @@ const Temp = struct { | ... | @@ -48536,12 +69070,12 @@ const Temp = struct { |
| 48536 | } }, | 69070 | } }, |
| 48537 | }, .{ | 69071 | }, .{ |
| 48538 | .required_features = .{ .@"64bit", null, null, null }, | 69072 | .required_features = .{ .@"64bit", null, null, null }, |
| 48539 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } }, | 69073 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| 48540 | .patterns = &.{ | 69074 | .patterns = &.{ |
| 48541 | .{ .src = .{ .mem, .simm32 } }, | 69075 | .{ .src = .{ .mem, .simm32, .none } }, |
| 48542 | .{ .src = .{ .to_gpr, .simm32 } }, | 69076 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 48543 | .{ .src = .{ .to_gpr, .mem } }, | 69077 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 48544 | .{ .src = .{ .to_gpr, .to_gpr } }, | 69078 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 48545 | }, | 69079 | }, |
| 48546 | .dst_temps = .{.{ .cc = .b }}, | 69080 | .dst_temps = .{.{ .cc = .b }}, |
| 48547 | .clobbers = .{ .eflags = true }, | 69081 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48551,11 +69085,12 @@ const Temp = struct { | ... | @@ -48551,11 +69085,12 @@ const Temp = struct { |
| 48551 | }, .{ | 69085 | }, .{ |
| 48552 | .required_features = .{ .@"64bit", null, null, null }, | 69086 | .required_features = .{ .@"64bit", null, null, null }, |
| 48553 | .src_constraints = .{ | 69087 | .src_constraints = .{ |
| 48554 | .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }, | 69088 | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| 48555 | .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }, | 69089 | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| | 69090 | .any, |
| 48556 | }, | 69091 | }, |
| 48557 | .patterns = &.{ | 69092 | .patterns = &.{ |
| 48558 | .{ .src = .{ .to_mem, .to_mem } }, | 69093 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 48559 | }, | 69094 | }, |
| 48560 | .extra_temps = .{ | 69095 | .extra_temps = .{ |
| 48561 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69096 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -48583,11 +69118,12 @@ const Temp = struct { | ... | @@ -48583,11 +69118,12 @@ const Temp = struct { |
| 48583 | }, .{ | 69118 | }, .{ |
| 48584 | .required_features = .{ .@"64bit", null, null, null }, | 69119 | .required_features = .{ .@"64bit", null, null, null }, |
| 48585 | .src_constraints = .{ | 69120 | .src_constraints = .{ |
| 48586 | .{ .unsigned_remainder_int = .{ .of = .qword, .is = .qword } }, | 69121 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 48587 | .{ .unsigned_remainder_int = .{ .of = .qword, .is = .qword } }, | 69122 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| | 69123 | .any, |
| 48588 | }, | 69124 | }, |
| 48589 | .patterns = &.{ | 69125 | .patterns = &.{ |
| 48590 | .{ .src = .{ .to_mem, .to_mem } }, | 69126 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 48591 | }, | 69127 | }, |
| 48592 | .extra_temps = .{ | 69128 | .extra_temps = .{ |
| 48593 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69129 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -48612,11 +69148,12 @@ const Temp = struct { | ... | @@ -48612,11 +69148,12 @@ const Temp = struct { |
| 48612 | } }, | 69148 | } }, |
| 48613 | }, .{ | 69149 | }, .{ |
| 48614 | .src_constraints = .{ | 69150 | .src_constraints = .{ |
| 48615 | .{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }, | 69151 | .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, |
| 48616 | .{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }, | 69152 | .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, |
| | 69153 | .any, |
| 48617 | }, | 69154 | }, |
| 48618 | .patterns = &.{ | 69155 | .patterns = &.{ |
| 48619 | .{ .src = .{ .to_mem, .to_mem } }, | 69156 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 48620 | }, | 69157 | }, |
| 48621 | .extra_temps = .{ | 69158 | .extra_temps = .{ |
| 48622 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69159 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -48643,11 +69180,12 @@ const Temp = struct { | ... | @@ -48643,11 +69180,12 @@ const Temp = struct { |
| 48643 | } }, | 69180 | } }, |
| 48644 | }, .{ | 69181 | }, .{ |
| 48645 | .src_constraints = .{ | 69182 | .src_constraints = .{ |
| 48646 | .{ .unsigned_remainder_int = .{ .of = .dword, .is = .dword } }, | 69183 | .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| 48647 | .{ .unsigned_remainder_int = .{ .of = .dword, .is = .dword } }, | 69184 | .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| | 69185 | .any, |
| 48648 | }, | 69186 | }, |
| 48649 | .patterns = &.{ | 69187 | .patterns = &.{ |
| 48650 | .{ .src = .{ .to_mem, .to_mem } }, | 69188 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 48651 | }, | 69189 | }, |
| 48652 | .extra_temps = .{ | 69190 | .extra_temps = .{ |
| 48653 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69191 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -48675,15 +69213,15 @@ const Temp = struct { | ... | @@ -48675,15 +69213,15 @@ const Temp = struct { |
| 48675 | }, | 69213 | }, |
| 48676 | .eq, .neq => { | 69214 | .eq, .neq => { |
| 48677 | try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ | 69215 | try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ |
| 48678 | .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte } }, | 69216 | .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte }, .any }, |
| 48679 | .patterns = &.{ | 69217 | .patterns = &.{ |
| 48680 | .{ .src = .{ .mem, .imm8 } }, | 69218 | .{ .src = .{ .mem, .imm8, .none } }, |
| 48681 | .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } }, | 69219 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| 48682 | .{ .src = .{ .to_gpr, .imm8 } }, | 69220 | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| 48683 | .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } }, | 69221 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48684 | .{ .src = .{ .to_gpr, .mem } }, | 69222 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 48685 | .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, | 69223 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48686 | .{ .src = .{ .to_gpr, .to_gpr } }, | 69224 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 48687 | }, | 69225 | }, |
| 48688 | .dst_temps = .{.{ .cc = .e }}, | 69226 | .dst_temps = .{.{ .cc = .e }}, |
| 48689 | .clobbers = .{ .eflags = true }, | 69227 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48691,15 +69229,15 @@ const Temp = struct { | ... | @@ -48691,15 +69229,15 @@ const Temp = struct { |
| 48691 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 69229 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 48692 | } }, | 69230 | } }, |
| 48693 | }, .{ | 69231 | }, .{ |
| 48694 | .src_constraints = .{ .{ .int = .word }, .{ .int = .word } }, | 69232 | .src_constraints = .{ .{ .int = .word }, .{ .int = .word }, .any }, |
| 48695 | .patterns = &.{ | 69233 | .patterns = &.{ |
| 48696 | .{ .src = .{ .mem, .imm16 } }, | 69234 | .{ .src = .{ .mem, .imm16, .none } }, |
| 48697 | .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } }, | 69235 | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, |
| 48698 | .{ .src = .{ .to_gpr, .imm16 } }, | 69236 | .{ .src = .{ .to_gpr, .imm16, .none } }, |
| 48699 | .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } }, | 69237 | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48700 | .{ .src = .{ .to_gpr, .mem } }, | 69238 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 48701 | .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, | 69239 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48702 | .{ .src = .{ .to_gpr, .to_gpr } }, | 69240 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 48703 | }, | 69241 | }, |
| 48704 | .dst_temps = .{.{ .cc = .e }}, | 69242 | .dst_temps = .{.{ .cc = .e }}, |
| 48705 | .clobbers = .{ .eflags = true }, | 69243 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48707,15 +69245,15 @@ const Temp = struct { | ... | @@ -48707,15 +69245,15 @@ const Temp = struct { |
| 48707 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 69245 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 48708 | } }, | 69246 | } }, |
| 48709 | }, .{ | 69247 | }, .{ |
| 48710 | .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword } }, | 69248 | .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword }, .any }, |
| 48711 | .patterns = &.{ | 69249 | .patterns = &.{ |
| 48712 | .{ .src = .{ .mem, .imm32 } }, | 69250 | .{ .src = .{ .mem, .imm32, .none } }, |
| 48713 | .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } }, | 69251 | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 48714 | .{ .src = .{ .to_gpr, .imm32 } }, | 69252 | .{ .src = .{ .to_gpr, .imm32, .none } }, |
| 48715 | .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } }, | 69253 | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48716 | .{ .src = .{ .to_gpr, .mem } }, | 69254 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 48717 | .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, | 69255 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48718 | .{ .src = .{ .to_gpr, .to_gpr } }, | 69256 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 48719 | }, | 69257 | }, |
| 48720 | .dst_temps = .{.{ .cc = .e }}, | 69258 | .dst_temps = .{.{ .cc = .e }}, |
| 48721 | .clobbers = .{ .eflags = true }, | 69259 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48724,15 +69262,15 @@ const Temp = struct { | ... | @@ -48724,15 +69262,15 @@ const Temp = struct { |
| 48724 | } }, | 69262 | } }, |
| 48725 | }, .{ | 69263 | }, .{ |
| 48726 | .required_features = .{ .@"64bit", null, null, null }, | 69264 | .required_features = .{ .@"64bit", null, null, null }, |
| 48727 | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword } }, | 69265 | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, |
| 48728 | .patterns = &.{ | 69266 | .patterns = &.{ |
| 48729 | .{ .src = .{ .mem, .simm32 } }, | 69267 | .{ .src = .{ .mem, .simm32, .none } }, |
| 48730 | .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } }, | 69268 | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 48731 | .{ .src = .{ .to_gpr, .simm32 } }, | 69269 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 48732 | .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } }, | 69270 | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48733 | .{ .src = .{ .to_gpr, .mem } }, | 69271 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 48734 | .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, | 69272 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 48735 | .{ .src = .{ .to_gpr, .to_gpr } }, | 69273 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 48736 | }, | 69274 | }, |
| 48737 | .dst_temps = .{.{ .cc = .e }}, | 69275 | .dst_temps = .{.{ .cc = .e }}, |
| 48738 | .clobbers = .{ .eflags = true }, | 69276 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48741,11 +69279,11 @@ const Temp = struct { | ... | @@ -48741,11 +69279,11 @@ const Temp = struct { |
| 48741 | } }, | 69279 | } }, |
| 48742 | }, .{ | 69280 | }, .{ |
| 48743 | .required_features = .{ .sse, .mmx, null, null }, | 69281 | .required_features = .{ .sse, .mmx, null, null }, |
| 48744 | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword } }, | 69282 | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, |
| 48745 | .patterns = &.{ | 69283 | .patterns = &.{ |
| 48746 | .{ .src = .{ .to_mut_mm, .mem } }, | 69284 | .{ .src = .{ .to_mut_mm, .mem, .none } }, |
| 48747 | .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } }, | 69285 | .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, |
| 48748 | .{ .src = .{ .to_mut_mm, .to_mm } }, | 69286 | .{ .src = .{ .to_mut_mm, .to_mm, .none } }, |
| 48749 | }, | 69287 | }, |
| 48750 | .extra_temps = .{ | 69288 | .extra_temps = .{ |
| 48751 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 69289 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -48769,11 +69307,11 @@ const Temp = struct { | ... | @@ -48769,11 +69307,11 @@ const Temp = struct { |
| 48769 | } }, | 69307 | } }, |
| 48770 | }, .{ | 69308 | }, .{ |
| 48771 | .required_features = .{ .avx, null, null, null }, | 69309 | .required_features = .{ .avx, null, null, null }, |
| 48772 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } }, | 69310 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, |
| 48773 | .patterns = &.{ | 69311 | .patterns = &.{ |
| 48774 | .{ .src = .{ .to_xmm, .mem } }, | 69312 | .{ .src = .{ .to_xmm, .mem, .none } }, |
| 48775 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, | 69313 | .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, |
| 48776 | .{ .src = .{ .to_xmm, .to_xmm } }, | 69314 | .{ .src = .{ .to_xmm, .to_xmm, .none } }, |
| 48777 | }, | 69315 | }, |
| 48778 | .extra_temps = .{ | 69316 | .extra_temps = .{ |
| 48779 | .{ .kind = .{ .rc = .sse } }, | 69317 | .{ .kind = .{ .rc = .sse } }, |
| ... | @@ -48794,11 +69332,11 @@ const Temp = struct { | ... | @@ -48794,11 +69332,11 @@ const Temp = struct { |
| 48794 | } }, | 69332 | } }, |
| 48795 | }, .{ | 69333 | }, .{ |
| 48796 | .required_features = .{ .sse4_1, null, null, null }, | 69334 | .required_features = .{ .sse4_1, null, null, null }, |
| 48797 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } }, | 69335 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, |
| 48798 | .patterns = &.{ | 69336 | .patterns = &.{ |
| 48799 | .{ .src = .{ .to_mut_xmm, .mem } }, | 69337 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, |
| 48800 | .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, | 69338 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, |
| 48801 | .{ .src = .{ .to_mut_xmm, .to_xmm } }, | 69339 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, |
| 48802 | }, | 69340 | }, |
| 48803 | .dst_temps = .{.{ .cc = .z }}, | 69341 | .dst_temps = .{.{ .cc = .z }}, |
| 48804 | .clobbers = .{ .eflags = true }, | 69342 | .clobbers = .{ .eflags = true }, |
| ... | @@ -48808,11 +69346,11 @@ const Temp = struct { | ... | @@ -48808,11 +69346,11 @@ const Temp = struct { |
| 48808 | } }, | 69346 | } }, |
| 48809 | }, .{ | 69347 | }, .{ |
| 48810 | .required_features = .{ .sse2, .fast_imm16, null, null }, | 69348 | .required_features = .{ .sse2, .fast_imm16, null, null }, |
| 48811 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } }, | 69349 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, |
| 48812 | .patterns = &.{ | 69350 | .patterns = &.{ |
| 48813 | .{ .src = .{ .to_mut_xmm, .mem } }, | 69351 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, |
| 48814 | .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, | 69352 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, |
| 48815 | .{ .src = .{ .to_mut_xmm, .to_xmm } }, | 69353 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, |
| 48816 | }, | 69354 | }, |
| 48817 | .extra_temps = .{ | 69355 | .extra_temps = .{ |
| 48818 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 69356 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -48836,11 +69374,11 @@ const Temp = struct { | ... | @@ -48836,11 +69374,11 @@ const Temp = struct { |
| 48836 | } }, | 69374 | } }, |
| 48837 | }, .{ | 69375 | }, .{ |
| 48838 | .required_features = .{ .sse2, null, null, null }, | 69376 | .required_features = .{ .sse2, null, null, null }, |
| 48839 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } }, | 69377 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, |
| 48840 | .patterns = &.{ | 69378 | .patterns = &.{ |
| 48841 | .{ .src = .{ .to_mut_xmm, .mem } }, | 69379 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, |
| 48842 | .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, | 69380 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, |
| 48843 | .{ .src = .{ .to_mut_xmm, .to_xmm } }, | 69381 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, |
| 48844 | }, | 69382 | }, |
| 48845 | .extra_temps = .{ | 69383 | .extra_temps = .{ |
| 48846 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 69384 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -48864,11 +69402,11 @@ const Temp = struct { | ... | @@ -48864,11 +69402,11 @@ const Temp = struct { |
| 48864 | } }, | 69402 | } }, |
| 48865 | }, .{ | 69403 | }, .{ |
| 48866 | .required_features = .{ .avx2, null, null, null }, | 69404 | .required_features = .{ .avx2, null, null, null }, |
| 48867 | .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword } }, | 69405 | .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any }, |
| 48868 | .patterns = &.{ | 69406 | .patterns = &.{ |
| 48869 | .{ .src = .{ .to_ymm, .mem } }, | 69407 | .{ .src = .{ .to_ymm, .mem, .none } }, |
| 48870 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, | 69408 | .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, |
| 48871 | .{ .src = .{ .to_ymm, .to_ymm } }, | 69409 | .{ .src = .{ .to_ymm, .to_ymm, .none } }, |
| 48872 | }, | 69410 | }, |
| 48873 | .extra_temps = .{ | 69411 | .extra_temps = .{ |
| 48874 | .{ .kind = .{ .rc = .sse } }, | 69412 | .{ .kind = .{ .rc = .sse } }, |
| ... | @@ -48889,11 +69427,11 @@ const Temp = struct { | ... | @@ -48889,11 +69427,11 @@ const Temp = struct { |
| 48889 | } }, | 69427 | } }, |
| 48890 | }, .{ | 69428 | }, .{ |
| 48891 | .required_features = .{ .avx, null, null, null }, | 69429 | .required_features = .{ .avx, null, null, null }, |
| 48892 | .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword } }, | 69430 | .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any }, |
| 48893 | .patterns = &.{ | 69431 | .patterns = &.{ |
| 48894 | .{ .src = .{ .to_ymm, .mem } }, | 69432 | .{ .src = .{ .to_ymm, .mem, .none } }, |
| 48895 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, | 69433 | .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, |
| 48896 | .{ .src = .{ .to_ymm, .to_ymm } }, | 69434 | .{ .src = .{ .to_ymm, .to_ymm, .none } }, |
| 48897 | }, | 69435 | }, |
| 48898 | .extra_temps = .{ | 69436 | .extra_temps = .{ |
| 48899 | .{ .kind = .{ .rc = .sse } }, | 69437 | .{ .kind = .{ .rc = .sse } }, |
| ... | @@ -48917,9 +69455,10 @@ const Temp = struct { | ... | @@ -48917,9 +69455,10 @@ const Temp = struct { |
| 48917 | .src_constraints = .{ | 69455 | .src_constraints = .{ |
| 48918 | .{ .remainder_int = .{ .of = .yword, .is = .xword } }, | 69456 | .{ .remainder_int = .{ .of = .yword, .is = .xword } }, |
| 48919 | .{ .remainder_int = .{ .of = .yword, .is = .xword } }, | 69457 | .{ .remainder_int = .{ .of = .yword, .is = .xword } }, |
| | 69458 | .any, |
| 48920 | }, | 69459 | }, |
| 48921 | .patterns = &.{ | 69460 | .patterns = &.{ |
| 48922 | .{ .src = .{ .to_mem, .to_mem } }, | 69461 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 48923 | }, | 69462 | }, |
| 48924 | .extra_temps = .{ | 69463 | .extra_temps = .{ |
| 48925 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69464 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -48951,9 +69490,10 @@ const Temp = struct { | ... | @@ -48951,9 +69490,10 @@ const Temp = struct { |
| 48951 | .src_constraints = .{ | 69490 | .src_constraints = .{ |
| 48952 | .{ .remainder_int = .{ .of = .yword, .is = .xword } }, | 69491 | .{ .remainder_int = .{ .of = .yword, .is = .xword } }, |
| 48953 | .{ .remainder_int = .{ .of = .yword, .is = .xword } }, | 69492 | .{ .remainder_int = .{ .of = .yword, .is = .xword } }, |
| | 69493 | .any, |
| 48954 | }, | 69494 | }, |
| 48955 | .patterns = &.{ | 69495 | .patterns = &.{ |
| 48956 | .{ .src = .{ .to_mem, .to_mem } }, | 69496 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 48957 | }, | 69497 | }, |
| 48958 | .extra_temps = .{ | 69498 | .extra_temps = .{ |
| 48959 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69499 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -48985,9 +69525,10 @@ const Temp = struct { | ... | @@ -48985,9 +69525,10 @@ const Temp = struct { |
| 48985 | .src_constraints = .{ | 69525 | .src_constraints = .{ |
| 48986 | .{ .remainder_int = .{ .of = .yword, .is = .yword } }, | 69526 | .{ .remainder_int = .{ .of = .yword, .is = .yword } }, |
| 48987 | .{ .remainder_int = .{ .of = .yword, .is = .yword } }, | 69527 | .{ .remainder_int = .{ .of = .yword, .is = .yword } }, |
| | 69528 | .any, |
| 48988 | }, | 69529 | }, |
| 48989 | .patterns = &.{ | 69530 | .patterns = &.{ |
| 48990 | .{ .src = .{ .to_mem, .to_mem } }, | 69531 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 48991 | }, | 69532 | }, |
| 48992 | .extra_temps = .{ | 69533 | .extra_temps = .{ |
| 48993 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69534 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -49016,9 +69557,10 @@ const Temp = struct { | ... | @@ -49016,9 +69557,10 @@ const Temp = struct { |
| 49016 | .src_constraints = .{ | 69557 | .src_constraints = .{ |
| 49017 | .{ .remainder_int = .{ .of = .yword, .is = .yword } }, | 69558 | .{ .remainder_int = .{ .of = .yword, .is = .yword } }, |
| 49018 | .{ .remainder_int = .{ .of = .yword, .is = .yword } }, | 69559 | .{ .remainder_int = .{ .of = .yword, .is = .yword } }, |
| | 69560 | .any, |
| 49019 | }, | 69561 | }, |
| 49020 | .patterns = &.{ | 69562 | .patterns = &.{ |
| 49021 | .{ .src = .{ .to_mem, .to_mem } }, | 69563 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 49022 | }, | 69564 | }, |
| 49023 | .extra_temps = .{ | 69565 | .extra_temps = .{ |
| 49024 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69566 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -49047,9 +69589,10 @@ const Temp = struct { | ... | @@ -49047,9 +69589,10 @@ const Temp = struct { |
| 49047 | .src_constraints = .{ | 69589 | .src_constraints = .{ |
| 49048 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, | 69590 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, |
| 49049 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, | 69591 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, |
| | 69592 | .any, |
| 49050 | }, | 69593 | }, |
| 49051 | .patterns = &.{ | 69594 | .patterns = &.{ |
| 49052 | .{ .src = .{ .to_mem, .to_mem } }, | 69595 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 49053 | }, | 69596 | }, |
| 49054 | .extra_temps = .{ | 69597 | .extra_temps = .{ |
| 49055 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69598 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -49078,9 +69621,10 @@ const Temp = struct { | ... | @@ -49078,9 +69621,10 @@ const Temp = struct { |
| 49078 | .src_constraints = .{ | 69621 | .src_constraints = .{ |
| 49079 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, | 69622 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, |
| 49080 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, | 69623 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, |
| | 69624 | .any, |
| 49081 | }, | 69625 | }, |
| 49082 | .patterns = &.{ | 69626 | .patterns = &.{ |
| 49083 | .{ .src = .{ .to_mem, .to_mem } }, | 69627 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 49084 | }, | 69628 | }, |
| 49085 | .extra_temps = .{ | 69629 | .extra_temps = .{ |
| 49086 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69630 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -49109,9 +69653,10 @@ const Temp = struct { | ... | @@ -49109,9 +69653,10 @@ const Temp = struct { |
| 49109 | .src_constraints = .{ | 69653 | .src_constraints = .{ |
| 49110 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, | 69654 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, |
| 49111 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, | 69655 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, |
| | 69656 | .any, |
| 49112 | }, | 69657 | }, |
| 49113 | .patterns = &.{ | 69658 | .patterns = &.{ |
| 49114 | .{ .src = .{ .to_mem, .to_mem } }, | 69659 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 49115 | }, | 69660 | }, |
| 49116 | .extra_temps = .{ | 69661 | .extra_temps = .{ |
| 49117 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69662 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -49141,9 +69686,10 @@ const Temp = struct { | ... | @@ -49141,9 +69686,10 @@ const Temp = struct { |
| 49141 | .src_constraints = .{ | 69686 | .src_constraints = .{ |
| 49142 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, | 69687 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, |
| 49143 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, | 69688 | .{ .remainder_int = .{ .of = .xword, .is = .xword } }, |
| | 69689 | .any, |
| 49144 | }, | 69690 | }, |
| 49145 | .patterns = &.{ | 69691 | .patterns = &.{ |
| 49146 | .{ .src = .{ .to_mem, .to_mem } }, | 69692 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 49147 | }, | 69693 | }, |
| 49148 | .extra_temps = .{ | 69694 | .extra_temps = .{ |
| 49149 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69695 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -49173,9 +69719,10 @@ const Temp = struct { | ... | @@ -49173,9 +69719,10 @@ const Temp = struct { |
| 49173 | .src_constraints = .{ | 69719 | .src_constraints = .{ |
| 49174 | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, | 69720 | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, |
| 49175 | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, | 69721 | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, |
| | 69722 | .any, |
| 49176 | }, | 69723 | }, |
| 49177 | .patterns = &.{ | 69724 | .patterns = &.{ |
| 49178 | .{ .src = .{ .to_mem, .to_mem } }, | 69725 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 49179 | }, | 69726 | }, |
| 49180 | .extra_temps = .{ | 69727 | .extra_temps = .{ |
| 49181 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69728 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -49205,9 +69752,10 @@ const Temp = struct { | ... | @@ -49205,9 +69752,10 @@ const Temp = struct { |
| 49205 | .src_constraints = .{ | 69752 | .src_constraints = .{ |
| 49206 | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, | 69753 | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, |
| 49207 | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, | 69754 | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, |
| | 69755 | .any, |
| 49208 | }, | 69756 | }, |
| 49209 | .patterns = &.{ | 69757 | .patterns = &.{ |
| 49210 | .{ .src = .{ .to_mem, .to_mem } }, | 69758 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 49211 | }, | 69759 | }, |
| 49212 | .extra_temps = .{ | 69760 | .extra_temps = .{ |
| 49213 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69761 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -49234,9 +69782,10 @@ const Temp = struct { | ... | @@ -49234,9 +69782,10 @@ const Temp = struct { |
| 49234 | .src_constraints = .{ | 69782 | .src_constraints = .{ |
| 49235 | .{ .remainder_int = .{ .of = .dword, .is = .dword } }, | 69783 | .{ .remainder_int = .{ .of = .dword, .is = .dword } }, |
| 49236 | .{ .remainder_int = .{ .of = .dword, .is = .dword } }, | 69784 | .{ .remainder_int = .{ .of = .dword, .is = .dword } }, |
| | 69785 | .any, |
| 49237 | }, | 69786 | }, |
| 49238 | .patterns = &.{ | 69787 | .patterns = &.{ |
| 49239 | .{ .src = .{ .to_mem, .to_mem } }, | 69788 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 49240 | }, | 69789 | }, |
| 49241 | .extra_temps = .{ | 69790 | .extra_temps = .{ |
| 49242 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 69791 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -49536,6 +70085,7 @@ const Operand = union(enum) { | ... | @@ -49536,6 +70085,7 @@ const Operand = union(enum) { |
| 49536 | | 70085 | |
| 49537 | const Select = struct { | 70086 | const Select = struct { |
| 49538 | cg: *CodeGen, | 70087 | cg: *CodeGen, |
| | 70088 | types: [@intFromEnum(Select.Operand.Ref.none)]Type, |
| 49539 | temps: [@intFromEnum(Select.Operand.Ref.none)]Temp, | 70089 | temps: [@intFromEnum(Select.Operand.Ref.none)]Temp, |
| 49540 | labels: [@intFromEnum(Label._)]struct { | 70090 | labels: [@intFromEnum(Label._)]struct { |
| 49541 | backward: ?Mir.Inst.Index, | 70091 | backward: ?Mir.Inst.Index, |
| ... | @@ -49747,7 +70297,15 @@ const Select = struct { | ... | @@ -49747,7 +70297,15 @@ const Select = struct { |
| 49747 | multiple_scalar_int: OfIsSizes, | 70297 | multiple_scalar_int: OfIsSizes, |
| 49748 | multiple_scalar_signed_int: OfIsSizes, | 70298 | multiple_scalar_signed_int: OfIsSizes, |
| 49749 | multiple_scalar_unsigned_int: OfIsSizes, | 70299 | multiple_scalar_unsigned_int: OfIsSizes, |
| | 70300 | multiple_scalar_exact_int: struct { of: Memory.Size, is: u16 }, |
| | 70301 | multiple_scalar_exact_signed_int: struct { of: Memory.Size, is: u16 }, |
| | 70302 | multiple_scalar_exact_unsigned_int: struct { of: Memory.Size, is: u16 }, |
| 49750 | scalar_remainder_int: OfIsSizes, | 70303 | scalar_remainder_int: OfIsSizes, |
| | 70304 | scalar_remainder_signed_int: OfIsSizes, |
| | 70305 | scalar_remainder_unsigned_int: OfIsSizes, |
| | 70306 | scalar_exact_remainder_int: OfIsSizes, |
| | 70307 | scalar_exact_remainder_signed_int: OfIsSizes, |
| | 70308 | scalar_exact_remainder_unsigned_int: OfIsSizes, |
| 49751 | float: Memory.Size, | 70309 | float: Memory.Size, |
| 49752 | scalar_any_float: Memory.Size, | 70310 | scalar_any_float: Memory.Size, |
| 49753 | scalar_float: OfIsSizes, | 70311 | scalar_float: OfIsSizes, |
| ... | @@ -49762,9 +70320,11 @@ const Select = struct { | ... | @@ -49762,9 +70320,11 @@ const Select = struct { |
| 49762 | signed_po2_int: Memory.Size, | 70320 | signed_po2_int: Memory.Size, |
| 49763 | unsigned_po2_or_exact_int: Memory.Size, | 70321 | unsigned_po2_or_exact_int: Memory.Size, |
| 49764 | remainder_int: OfIsSizes, | 70322 | remainder_int: OfIsSizes, |
| 49765 | signed_remainder_int: OfIsSizes, | 70323 | remainder_signed_int: OfIsSizes, |
| 49766 | unsigned_remainder_int: OfIsSizes, | 70324 | remainder_unsigned_int: OfIsSizes, |
| 49767 | exact_remainder_int: OfIsSizes, | 70325 | exact_remainder_int: OfIsSizes, |
| | 70326 | exact_remainder_signed_int: OfIsSizes, |
| | 70327 | exact_remainder_unsigned_int: OfIsSizes, |
| 49768 | signed_or_exact_remainder_int: OfIsSizes, | 70328 | signed_or_exact_remainder_int: OfIsSizes, |
| 49769 | unsigned_or_exact_remainder_int: OfIsSizes, | 70329 | unsigned_or_exact_remainder_int: OfIsSizes, |
| 49770 | signed_int: Memory.Size, | 70330 | signed_int: Memory.Size, |
| ... | @@ -49832,10 +70392,30 @@ const Select = struct { | ... | @@ -49832,10 +70392,30 @@ const Select = struct { |
| 49832 | .multiple_scalar_unsigned_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and | 70392 | .multiple_scalar_unsigned_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| 49833 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and | 70393 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and |
| 49834 | of_is.is.bitSize(cg.target) >= int_info.bits else false, | 70394 | of_is.is.bitSize(cg.target) >= int_info.bits else false, |
| | 70395 | .multiple_scalar_exact_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| | 70396 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is == int_info.bits else false, |
| | 70397 | .multiple_scalar_exact_signed_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| | 70398 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed and |
| | 70399 | of_is.is == int_info.bits else false, |
| | 70400 | .multiple_scalar_exact_unsigned_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| | 70401 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and |
| | 70402 | of_is.is == int_info.bits else false, |
| 49835 | .scalar_remainder_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| | 70403 | .scalar_remainder_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| |
| 49836 | of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 | 70404 | of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 |
| 49837 | else | 70405 | else |
| 49838 | false, | 70406 | false, |
| | 70407 | .scalar_remainder_signed_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed and |
| | 70408 | of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, |
| | 70409 | .scalar_remainder_unsigned_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and |
| | 70410 | of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, |
| | 70411 | .scalar_exact_remainder_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| |
| | 70412 | of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 |
| | 70413 | else |
| | 70414 | false, |
| | 70415 | .scalar_exact_remainder_signed_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed and |
| | 70416 | of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, |
| | 70417 | .scalar_exact_remainder_unsigned_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and |
| | 70418 | of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, |
| 49839 | .float => |size| if (cg.floatBits(ty)) |float_bits| size.bitSize(cg.target) == float_bits else false, | 70419 | .float => |size| if (cg.floatBits(ty)) |float_bits| size.bitSize(cg.target) == float_bits else false, |
| 49840 | .scalar_any_float => |size| @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and | 70420 | .scalar_any_float => |size| @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and |
| 49841 | cg.floatBits(ty.scalarType(zcu)) != null, | 70421 | cg.floatBits(ty.scalarType(zcu)) != null, |
| ... | @@ -49878,14 +70458,18 @@ const Select = struct { | ... | @@ -49878,14 +70458,18 @@ const Select = struct { |
| 49878 | of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 | 70458 | of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 |
| 49879 | else | 70459 | else |
| 49880 | false, | 70460 | false, |
| 49881 | .signed_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .signed and | 70461 | .remainder_signed_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .signed and |
| 49882 | of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, | 70462 | of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, |
| 49883 | .unsigned_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .unsigned and | 70463 | .remainder_unsigned_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .unsigned and |
| 49884 | of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, | 70464 | of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, |
| 49885 | .exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| | 70465 | .exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| |
| 49886 | of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 | 70466 | of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 |
| 49887 | else | 70467 | else |
| 49888 | false, | 70468 | false, |
| | 70469 | .exact_remainder_signed_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .signed and |
| | 70470 | of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, |
| | 70471 | .exact_remainder_unsigned_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .unsigned and |
| | 70472 | of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, |
| 49889 | .signed_or_exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) { | 70473 | .signed_or_exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) { |
| 49890 | .signed => of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1, | 70474 | .signed => of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1, |
| 49891 | .unsigned => of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1, | 70475 | .unsigned => of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1, |
| ... | @@ -49913,7 +70497,7 @@ const Select = struct { | ... | @@ -49913,7 +70497,7 @@ const Select = struct { |
| 49913 | }; | 70497 | }; |
| 49914 | | 70498 | |
| 49915 | const Pattern = struct { | 70499 | const Pattern = struct { |
| 49916 | src: [2]Src, | 70500 | src: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Src, |
| 49917 | commute: struct { u8, u8 } = .{ 0, 0 }, | 70501 | commute: struct { u8, u8 } = .{ 0, 0 }, |
| 49918 | | 70502 | |
| 49919 | const Src = union(enum) { | 70503 | const Src = union(enum) { |
| ... | @@ -50105,7 +70689,11 @@ const Select = struct { | ... | @@ -50105,7 +70689,11 @@ const Select = struct { |
| 50105 | frame: FrameIndex, | 70689 | frame: FrameIndex, |
| 50106 | symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 }, | 70690 | symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 }, |
| 50107 | | 70691 | |
| 50108 | const ConstInfo = struct { ref: Select.Operand.Ref, vectorize_to: ?Memory.Size = null }; | 70692 | const ConstInfo = struct { |
| | 70693 | ref: Select.Operand.Ref, |
| | 70694 | to_signedness: ?std.builtin.Signedness = null, |
| | 70695 | vectorize_to: ?Memory.Size = null, |
| | 70696 | }; |
| 50109 | | 70697 | |
| 50110 | fn finish(kind: Kind, temp: Temp, s: *const Select) void { | 70698 | fn finish(kind: Kind, temp: Temp, s: *const Select) void { |
| 50111 | switch (kind) { | 70699 | switch (kind) { |
| ... | @@ -50129,11 +70717,11 @@ const Select = struct { | ... | @@ -50129,11 +70717,11 @@ const Select = struct { |
| 50129 | .unused => unreachable, | 70717 | .unused => unreachable, |
| 50130 | .any => .{ try cg.tempAlloc(spec.type), true }, | 70718 | .any => .{ try cg.tempAlloc(spec.type), true }, |
| 50131 | .cc => |cc| .{ try cg.tempInit(spec.type, .{ .eflags = cc }), true }, | 70719 | .cc => |cc| .{ try cg.tempInit(spec.type, .{ .eflags = cc }), true }, |
| 50132 | .ref => |ref| .{ ref.deref(s), false }, | 70720 | .ref => |ref| .{ ref.tempOf(s), false }, |
| 50133 | .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true }, | 70721 | .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true }, |
| 50134 | .rc => |rc| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc)), true }, | 70722 | .rc => |rc| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc)), true }, |
| 50135 | .mut_rc => |ref_rc| { | 70723 | .mut_rc => |ref_rc| { |
| 50136 | const temp = ref_rc.ref.deref(s); | 70724 | const temp = ref_rc.ref.tempOf(s); |
| 50137 | if (temp.isMut(cg)) switch (temp.tracking(cg).short) { | 70725 | if (temp.isMut(cg)) switch (temp.tracking(cg).short) { |
| 50138 | .register => |reg| if (reg.class() == ref_rc.rc) return .{ temp, false }, | 70726 | .register => |reg| if (reg.class() == ref_rc.rc) return .{ temp, false }, |
| 50139 | .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc.rc) return .{ temp, false }, | 70727 | .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc.rc) return .{ temp, false }, |
| ... | @@ -50141,10 +70729,10 @@ const Select = struct { | ... | @@ -50141,10 +70729,10 @@ const Select = struct { |
| 50141 | }; | 70729 | }; |
| 50142 | return .{ try cg.tempAllocReg(spec.type, regSetForRegClass(ref_rc.rc)), true }; | 70730 | return .{ try cg.tempAllocReg(spec.type, regSetForRegClass(ref_rc.rc)), true }; |
| 50143 | }, | 70731 | }, |
| 50144 | .ref_mask => |ref_mask| .{ ref_mask.ref.deref(s), false }, | 70732 | .ref_mask => |ref_mask| .{ ref_mask.ref.tempOf(s), false }, |
| 50145 | .rc_mask => |rc_mask| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc_mask.rc)), true }, | 70733 | .rc_mask => |rc_mask| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc_mask.rc)), true }, |
| 50146 | .mut_rc_mask => |ref_rc_mask| { | 70734 | .mut_rc_mask => |ref_rc_mask| { |
| 50147 | const temp = ref_rc_mask.ref.deref(s); | 70735 | const temp = ref_rc_mask.ref.tempOf(s); |
| 50148 | if (temp.isMut(cg)) switch (temp.tracking(cg).short) { | 70736 | if (temp.isMut(cg)) switch (temp.tracking(cg).short) { |
| 50149 | .register => |reg| if (reg.class() == ref_rc_mask.rc) return .{ temp, false }, | 70737 | .register => |reg| if (reg.class() == ref_rc_mask.rc) return .{ temp, false }, |
| 50150 | .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc_mask.rc) return .{ temp, false }, | 70738 | .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc_mask.rc) return .{ temp, false }, |
| ... | @@ -50157,7 +70745,7 @@ const Select = struct { | ... | @@ -50157,7 +70745,7 @@ const Select = struct { |
| 50157 | const pt = cg.pt; | 70745 | const pt = cg.pt; |
| 50158 | const zcu = pt.zcu; | 70746 | const zcu = pt.zcu; |
| 50159 | const ip = &zcu.intern_pool; | 70747 | const ip = &zcu.intern_pool; |
| 50160 | const ty = const_info.ref.deref(s).typeOf(cg); | 70748 | const ty = const_info.ref.typeOf(s); |
| 50161 | const vector_len, const scalar_ty: Type = switch (ip.indexToKey(ty.toIntern())) { | 70749 | const vector_len, const scalar_ty: Type = switch (ip.indexToKey(ty.toIntern())) { |
| 50162 | else => .{ null, ty }, | 70750 | else => .{ null, ty }, |
| 50163 | .vector_type => |vector_type| .{ vector_type.len, .fromInterned(vector_type.child) }, | 70751 | .vector_type => |vector_type| .{ vector_type.len, .fromInterned(vector_type.child) }, |
| ... | @@ -50180,7 +70768,8 @@ const Select = struct { | ... | @@ -50180,7 +70768,8 @@ const Select = struct { |
| 50180 | .signedness = .signed, | 70768 | .signedness = .signed, |
| 50181 | .bits = cg.floatBits(scalar_ty).?, | 70769 | .bits = cg.floatBits(scalar_ty).?, |
| 50182 | }; | 70770 | }; |
| 50183 | const scalar_int_ty = try pt.intType(scalar_info.signedness, scalar_info.bits); | 70771 | const scalar_signedness = const_info.to_signedness orelse scalar_info.signedness; |
| | 70772 | const scalar_int_ty = try pt.intType(scalar_signedness, scalar_info.bits); |
| 50184 | if (scalar_info.bits <= 64) { | 70773 | if (scalar_info.bits <= 64) { |
| 50185 | const int_val: i64 = switch (spec.kind) { | 70774 | const int_val: i64 = switch (spec.kind) { |
| 50186 | else => unreachable, | 70775 | else => unreachable, |
| ... | @@ -50190,7 +70779,7 @@ const Select = struct { | ... | @@ -50190,7 +70779,7 @@ const Select = struct { |
| 50190 | .umax_mem => -1, | 70779 | .umax_mem => -1, |
| 50191 | }; | 70780 | }; |
| 50192 | const shift: u6 = @intCast(64 - scalar_info.bits); | 70781 | const shift: u6 = @intCast(64 - scalar_info.bits); |
| 50193 | break :res_scalar .{ scalar_int_ty, switch (scalar_info.signedness) { | 70782 | break :res_scalar .{ scalar_int_ty, switch (scalar_signedness) { |
| 50194 | .signed => try pt.intValue_i64(scalar_int_ty, int_val >> shift), | 70783 | .signed => try pt.intValue_i64(scalar_int_ty, int_val >> shift), |
| 50195 | .unsigned => try pt.intValue_u64(scalar_int_ty, @as(u64, @bitCast(int_val)) >> shift), | 70784 | .unsigned => try pt.intValue_u64(scalar_int_ty, @as(u64, @bitCast(int_val)) >> shift), |
| 50196 | } }; | 70785 | } }; |
| ... | @@ -50206,7 +70795,7 @@ const Select = struct { | ... | @@ -50206,7 +70795,7 @@ const Select = struct { |
| 50206 | .smin_mem, .smax_mem => .signed, | 70795 | .smin_mem, .smax_mem => .signed, |
| 50207 | .umin_mem, .umax_mem => .unsigned, | 70796 | .umin_mem, .umax_mem => .unsigned, |
| 50208 | }, scalar_info.bits); | 70797 | }, scalar_info.bits); |
| 50209 | try big_int.truncate(&big_int, scalar_info.signedness, scalar_info.bits); | 70798 | try big_int.truncate(&big_int, scalar_signedness, scalar_info.bits); |
| 50210 | break :res_scalar .{ scalar_int_ty, try pt.intValue_big(scalar_int_ty, big_int.toConst()) }; | 70799 | break :res_scalar .{ scalar_int_ty, try pt.intValue_big(scalar_int_ty, big_int.toConst()) }; |
| 50211 | }, | 70800 | }, |
| 50212 | }; | 70801 | }; |
| ... | @@ -50246,7 +70835,7 @@ const Select = struct { | ... | @@ -50246,7 +70835,7 @@ const Select = struct { |
| 50246 | flags: packed struct(u16) { | 70835 | flags: packed struct(u16) { |
| 50247 | tag: Tag, | 70836 | tag: Tag, |
| 50248 | adjust: Adjust = .none, | 70837 | adjust: Adjust = .none, |
| 50249 | unused: u4 = 0, | 70838 | unused: u3 = 0, |
| 50250 | }, | 70839 | }, |
| 50251 | base: Ref.Sized = .none, | 70840 | base: Ref.Sized = .none, |
| 50252 | index: packed struct(u6) { | 70841 | index: packed struct(u6) { |
| ... | @@ -50265,7 +70854,7 @@ const Select = struct { | ... | @@ -50265,7 +70854,7 @@ const Select = struct { |
| 50265 | lea, | 70854 | lea, |
| 50266 | mem, | 70855 | mem, |
| 50267 | }; | 70856 | }; |
| 50268 | const Adjust = packed struct(u9) { | 70857 | const Adjust = packed struct(u10) { |
| 50269 | sign: enum(u1) { neg, pos }, | 70858 | sign: enum(u1) { neg, pos }, |
| 50270 | lhs: enum(u5) { | 70859 | lhs: enum(u5) { |
| 50271 | none, | 70860 | none, |
| ... | @@ -50288,7 +70877,7 @@ const Select = struct { | ... | @@ -50288,7 +70877,7 @@ const Select = struct { |
| 50288 | smax, | 70877 | smax, |
| 50289 | umax, | 70878 | umax, |
| 50290 | }, | 70879 | }, |
| 50291 | op: enum(u1) { mul, div }, | 70880 | op: enum(u2) { mul, div, rem_8_mul }, |
| 50292 | rhs: Memory.Scale, | 70881 | rhs: Memory.Scale, |
| 50293 | | 70882 | |
| 50294 | const none: Adjust = .{ .sign = .pos, .lhs = .none, .op = .mul, .rhs = .@"1" }; | 70883 | const none: Adjust = .{ .sign = .pos, .lhs = .none, .op = .mul, .rhs = .@"1" }; |
| ... | @@ -50308,6 +70897,8 @@ const Select = struct { | ... | @@ -50308,6 +70897,8 @@ const Select = struct { |
| 50308 | const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; | 70897 | const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; |
| 50309 | const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" }; | 70898 | const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" }; |
| 50310 | const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; | 70899 | const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; |
| | 70900 | const add_bit_size_rem_64: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .rem_8_mul, .rhs = .@"8" }; |
| | 70901 | const sub_bit_size_rem_64: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .rem_8_mul, .rhs = .@"8" }; |
| 50311 | const sub_bit_size: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; | 70902 | const sub_bit_size: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; |
| 50312 | const add_src0_bit_size: Adjust = .{ .sign = .pos, .lhs = .src0_bit_size, .op = .mul, .rhs = .@"1" }; | 70903 | const add_src0_bit_size: Adjust = .{ .sign = .pos, .lhs = .src0_bit_size, .op = .mul, .rhs = .@"1" }; |
| 50313 | const sub_src0_bit_size: Adjust = .{ .sign = .neg, .lhs = .src0_bit_size, .op = .mul, .rhs = .@"1" }; | 70904 | const sub_src0_bit_size: Adjust = .{ .sign = .neg, .lhs = .src0_bit_size, .op = .mul, .rhs = .@"1" }; |
| ... | @@ -50328,6 +70919,7 @@ const Select = struct { | ... | @@ -50328,6 +70919,7 @@ const Select = struct { |
| 50328 | const sub_src0_elem_size_times_src1: Adjust = .{ .sign = .neg, .lhs = .src0_elem_size_times_src1, .op = .mul, .rhs = .@"1" }; | 70919 | const sub_src0_elem_size_times_src1: Adjust = .{ .sign = .neg, .lhs = .src0_elem_size_times_src1, .op = .mul, .rhs = .@"1" }; |
| 50329 | const add_log2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .log2_src0_elem_size, .op = .mul, .rhs = .@"1" }; | 70920 | const add_log2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .log2_src0_elem_size, .op = .mul, .rhs = .@"1" }; |
| 50330 | const add_elem_limbs: Adjust = .{ .sign = .pos, .lhs = .elem_limbs, .op = .mul, .rhs = .@"1" }; | 70921 | const add_elem_limbs: Adjust = .{ .sign = .pos, .lhs = .elem_limbs, .op = .mul, .rhs = .@"1" }; |
| | 70922 | const add_smin: Adjust = .{ .sign = .pos, .lhs = .smin, .op = .mul, .rhs = .@"1" }; |
| 50331 | const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" }; | 70923 | const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" }; |
| 50332 | }; | 70924 | }; |
| 50333 | const Ref = enum(u4) { | 70925 | const Ref = enum(u4) { |
| ... | @@ -50343,6 +70935,7 @@ const Select = struct { | ... | @@ -50343,6 +70935,7 @@ const Select = struct { |
| 50343 | dst0, | 70935 | dst0, |
| 50344 | src0, | 70936 | src0, |
| 50345 | src1, | 70937 | src1, |
| | 70938 | src2, |
| 50346 | none, | 70939 | none, |
| 50347 | | 70940 | |
| 50348 | const Sized = packed struct(u8) { | 70941 | const Sized = packed struct(u8) { |
| ... | @@ -50356,6 +70949,7 @@ const Select = struct { | ... | @@ -50356,6 +70949,7 @@ const Select = struct { |
| 50356 | const tmp0w: Sized = .{ .ref = .tmp0, .size = .word }; | 70949 | const tmp0w: Sized = .{ .ref = .tmp0, .size = .word }; |
| 50357 | const tmp0d: Sized = .{ .ref = .tmp0, .size = .dword }; | 70950 | const tmp0d: Sized = .{ .ref = .tmp0, .size = .dword }; |
| 50358 | const tmp0p: Sized = .{ .ref = .tmp0, .size = .ptr }; | 70951 | const tmp0p: Sized = .{ .ref = .tmp0, .size = .ptr }; |
| | 70952 | const tmp0g: Sized = .{ .ref = .tmp0, .size = .gpr }; |
| 50359 | const tmp0q: Sized = .{ .ref = .tmp0, .size = .qword }; | 70953 | const tmp0q: Sized = .{ .ref = .tmp0, .size = .qword }; |
| 50360 | const tmp0t: Sized = .{ .ref = .tmp0, .size = .tbyte }; | 70954 | const tmp0t: Sized = .{ .ref = .tmp0, .size = .tbyte }; |
| 50361 | const tmp0x: Sized = .{ .ref = .tmp0, .size = .xword }; | 70955 | const tmp0x: Sized = .{ .ref = .tmp0, .size = .xword }; |
| ... | @@ -50366,6 +70960,7 @@ const Select = struct { | ... | @@ -50366,6 +70960,7 @@ const Select = struct { |
| 50366 | const tmp1w: Sized = .{ .ref = .tmp1, .size = .word }; | 70960 | const tmp1w: Sized = .{ .ref = .tmp1, .size = .word }; |
| 50367 | const tmp1d: Sized = .{ .ref = .tmp1, .size = .dword }; | 70961 | const tmp1d: Sized = .{ .ref = .tmp1, .size = .dword }; |
| 50368 | const tmp1p: Sized = .{ .ref = .tmp1, .size = .ptr }; | 70962 | const tmp1p: Sized = .{ .ref = .tmp1, .size = .ptr }; |
| | 70963 | const tmp1g: Sized = .{ .ref = .tmp1, .size = .gpr }; |
| 50369 | const tmp1q: Sized = .{ .ref = .tmp1, .size = .qword }; | 70964 | const tmp1q: Sized = .{ .ref = .tmp1, .size = .qword }; |
| 50370 | const tmp1t: Sized = .{ .ref = .tmp1, .size = .tbyte }; | 70965 | const tmp1t: Sized = .{ .ref = .tmp1, .size = .tbyte }; |
| 50371 | const tmp1x: Sized = .{ .ref = .tmp1, .size = .xword }; | 70966 | const tmp1x: Sized = .{ .ref = .tmp1, .size = .xword }; |
| ... | @@ -50376,6 +70971,7 @@ const Select = struct { | ... | @@ -50376,6 +70971,7 @@ const Select = struct { |
| 50376 | const tmp2w: Sized = .{ .ref = .tmp2, .size = .word }; | 70971 | const tmp2w: Sized = .{ .ref = .tmp2, .size = .word }; |
| 50377 | const tmp2d: Sized = .{ .ref = .tmp2, .size = .dword }; | 70972 | const tmp2d: Sized = .{ .ref = .tmp2, .size = .dword }; |
| 50378 | const tmp2p: Sized = .{ .ref = .tmp2, .size = .ptr }; | 70973 | const tmp2p: Sized = .{ .ref = .tmp2, .size = .ptr }; |
| | 70974 | const tmp2g: Sized = .{ .ref = .tmp2, .size = .gpr }; |
| 50379 | const tmp2q: Sized = .{ .ref = .tmp2, .size = .qword }; | 70975 | const tmp2q: Sized = .{ .ref = .tmp2, .size = .qword }; |
| 50380 | const tmp2t: Sized = .{ .ref = .tmp2, .size = .tbyte }; | 70976 | const tmp2t: Sized = .{ .ref = .tmp2, .size = .tbyte }; |
| 50381 | const tmp2x: Sized = .{ .ref = .tmp2, .size = .xword }; | 70977 | const tmp2x: Sized = .{ .ref = .tmp2, .size = .xword }; |
| ... | @@ -50386,6 +70982,7 @@ const Select = struct { | ... | @@ -50386,6 +70982,7 @@ const Select = struct { |
| 50386 | const tmp3w: Sized = .{ .ref = .tmp3, .size = .word }; | 70982 | const tmp3w: Sized = .{ .ref = .tmp3, .size = .word }; |
| 50387 | const tmp3d: Sized = .{ .ref = .tmp3, .size = .dword }; | 70983 | const tmp3d: Sized = .{ .ref = .tmp3, .size = .dword }; |
| 50388 | const tmp3p: Sized = .{ .ref = .tmp3, .size = .ptr }; | 70984 | const tmp3p: Sized = .{ .ref = .tmp3, .size = .ptr }; |
| | 70985 | const tmp3g: Sized = .{ .ref = .tmp3, .size = .gpr }; |
| 50389 | const tmp3q: Sized = .{ .ref = .tmp3, .size = .qword }; | 70986 | const tmp3q: Sized = .{ .ref = .tmp3, .size = .qword }; |
| 50390 | const tmp3t: Sized = .{ .ref = .tmp3, .size = .tbyte }; | 70987 | const tmp3t: Sized = .{ .ref = .tmp3, .size = .tbyte }; |
| 50391 | const tmp3x: Sized = .{ .ref = .tmp3, .size = .xword }; | 70988 | const tmp3x: Sized = .{ .ref = .tmp3, .size = .xword }; |
| ... | @@ -50396,6 +70993,7 @@ const Select = struct { | ... | @@ -50396,6 +70993,7 @@ const Select = struct { |
| 50396 | const tmp4w: Sized = .{ .ref = .tmp4, .size = .word }; | 70993 | const tmp4w: Sized = .{ .ref = .tmp4, .size = .word }; |
| 50397 | const tmp4d: Sized = .{ .ref = .tmp4, .size = .dword }; | 70994 | const tmp4d: Sized = .{ .ref = .tmp4, .size = .dword }; |
| 50398 | const tmp4p: Sized = .{ .ref = .tmp4, .size = .ptr }; | 70995 | const tmp4p: Sized = .{ .ref = .tmp4, .size = .ptr }; |
| | 70996 | const tmp4g: Sized = .{ .ref = .tmp4, .size = .gpr }; |
| 50399 | const tmp4q: Sized = .{ .ref = .tmp4, .size = .qword }; | 70997 | const tmp4q: Sized = .{ .ref = .tmp4, .size = .qword }; |
| 50400 | const tmp4t: Sized = .{ .ref = .tmp4, .size = .tbyte }; | 70998 | const tmp4t: Sized = .{ .ref = .tmp4, .size = .tbyte }; |
| 50401 | const tmp4x: Sized = .{ .ref = .tmp4, .size = .xword }; | 70999 | const tmp4x: Sized = .{ .ref = .tmp4, .size = .xword }; |
| ... | @@ -50406,6 +71004,7 @@ const Select = struct { | ... | @@ -50406,6 +71004,7 @@ const Select = struct { |
| 50406 | const tmp5w: Sized = .{ .ref = .tmp5, .size = .word }; | 71004 | const tmp5w: Sized = .{ .ref = .tmp5, .size = .word }; |
| 50407 | const tmp5d: Sized = .{ .ref = .tmp5, .size = .dword }; | 71005 | const tmp5d: Sized = .{ .ref = .tmp5, .size = .dword }; |
| 50408 | const tmp5p: Sized = .{ .ref = .tmp5, .size = .ptr }; | 71006 | const tmp5p: Sized = .{ .ref = .tmp5, .size = .ptr }; |
| | 71007 | const tmp5g: Sized = .{ .ref = .tmp5, .size = .gpr }; |
| 50409 | const tmp5q: Sized = .{ .ref = .tmp5, .size = .qword }; | 71008 | const tmp5q: Sized = .{ .ref = .tmp5, .size = .qword }; |
| 50410 | const tmp5t: Sized = .{ .ref = .tmp5, .size = .tbyte }; | 71009 | const tmp5t: Sized = .{ .ref = .tmp5, .size = .tbyte }; |
| 50411 | const tmp5x: Sized = .{ .ref = .tmp5, .size = .xword }; | 71010 | const tmp5x: Sized = .{ .ref = .tmp5, .size = .xword }; |
| ... | @@ -50416,6 +71015,7 @@ const Select = struct { | ... | @@ -50416,6 +71015,7 @@ const Select = struct { |
| 50416 | const tmp6w: Sized = .{ .ref = .tmp6, .size = .word }; | 71015 | const tmp6w: Sized = .{ .ref = .tmp6, .size = .word }; |
| 50417 | const tmp6d: Sized = .{ .ref = .tmp6, .size = .dword }; | 71016 | const tmp6d: Sized = .{ .ref = .tmp6, .size = .dword }; |
| 50418 | const tmp6p: Sized = .{ .ref = .tmp6, .size = .ptr }; | 71017 | const tmp6p: Sized = .{ .ref = .tmp6, .size = .ptr }; |
| | 71018 | const tmp6g: Sized = .{ .ref = .tmp6, .size = .gpr }; |
| 50419 | const tmp6q: Sized = .{ .ref = .tmp6, .size = .qword }; | 71019 | const tmp6q: Sized = .{ .ref = .tmp6, .size = .qword }; |
| 50420 | const tmp6t: Sized = .{ .ref = .tmp6, .size = .tbyte }; | 71020 | const tmp6t: Sized = .{ .ref = .tmp6, .size = .tbyte }; |
| 50421 | const tmp6x: Sized = .{ .ref = .tmp6, .size = .xword }; | 71021 | const tmp6x: Sized = .{ .ref = .tmp6, .size = .xword }; |
| ... | @@ -50426,6 +71026,7 @@ const Select = struct { | ... | @@ -50426,6 +71026,7 @@ const Select = struct { |
| 50426 | const tmp7w: Sized = .{ .ref = .tmp7, .size = .word }; | 71026 | const tmp7w: Sized = .{ .ref = .tmp7, .size = .word }; |
| 50427 | const tmp7d: Sized = .{ .ref = .tmp7, .size = .dword }; | 71027 | const tmp7d: Sized = .{ .ref = .tmp7, .size = .dword }; |
| 50428 | const tmp7p: Sized = .{ .ref = .tmp7, .size = .ptr }; | 71028 | const tmp7p: Sized = .{ .ref = .tmp7, .size = .ptr }; |
| | 71029 | const tmp7g: Sized = .{ .ref = .tmp7, .size = .gpr }; |
| 50429 | const tmp7q: Sized = .{ .ref = .tmp7, .size = .qword }; | 71030 | const tmp7q: Sized = .{ .ref = .tmp7, .size = .qword }; |
| 50430 | const tmp7t: Sized = .{ .ref = .tmp7, .size = .tbyte }; | 71031 | const tmp7t: Sized = .{ .ref = .tmp7, .size = .tbyte }; |
| 50431 | const tmp7x: Sized = .{ .ref = .tmp7, .size = .xword }; | 71032 | const tmp7x: Sized = .{ .ref = .tmp7, .size = .xword }; |
| ... | @@ -50436,6 +71037,7 @@ const Select = struct { | ... | @@ -50436,6 +71037,7 @@ const Select = struct { |
| 50436 | const tmp8w: Sized = .{ .ref = .tmp8, .size = .word }; | 71037 | const tmp8w: Sized = .{ .ref = .tmp8, .size = .word }; |
| 50437 | const tmp8d: Sized = .{ .ref = .tmp8, .size = .dword }; | 71038 | const tmp8d: Sized = .{ .ref = .tmp8, .size = .dword }; |
| 50438 | const tmp8p: Sized = .{ .ref = .tmp8, .size = .ptr }; | 71039 | const tmp8p: Sized = .{ .ref = .tmp8, .size = .ptr }; |
| | 71040 | const tmp8g: Sized = .{ .ref = .tmp8, .size = .gpr }; |
| 50439 | const tmp8q: Sized = .{ .ref = .tmp8, .size = .qword }; | 71041 | const tmp8q: Sized = .{ .ref = .tmp8, .size = .qword }; |
| 50440 | const tmp8t: Sized = .{ .ref = .tmp8, .size = .tbyte }; | 71042 | const tmp8t: Sized = .{ .ref = .tmp8, .size = .tbyte }; |
| 50441 | const tmp8x: Sized = .{ .ref = .tmp8, .size = .xword }; | 71043 | const tmp8x: Sized = .{ .ref = .tmp8, .size = .xword }; |
| ... | @@ -50446,6 +71048,7 @@ const Select = struct { | ... | @@ -50446,6 +71048,7 @@ const Select = struct { |
| 50446 | const dst0w: Sized = .{ .ref = .dst0, .size = .word }; | 71048 | const dst0w: Sized = .{ .ref = .dst0, .size = .word }; |
| 50447 | const dst0d: Sized = .{ .ref = .dst0, .size = .dword }; | 71049 | const dst0d: Sized = .{ .ref = .dst0, .size = .dword }; |
| 50448 | const dst0p: Sized = .{ .ref = .dst0, .size = .ptr }; | 71050 | const dst0p: Sized = .{ .ref = .dst0, .size = .ptr }; |
| | 71051 | const dst0g: Sized = .{ .ref = .dst0, .size = .gpr }; |
| 50449 | const dst0q: Sized = .{ .ref = .dst0, .size = .qword }; | 71052 | const dst0q: Sized = .{ .ref = .dst0, .size = .qword }; |
| 50450 | const dst0t: Sized = .{ .ref = .dst0, .size = .tbyte }; | 71053 | const dst0t: Sized = .{ .ref = .dst0, .size = .tbyte }; |
| 50451 | const dst0x: Sized = .{ .ref = .dst0, .size = .xword }; | 71054 | const dst0x: Sized = .{ .ref = .dst0, .size = .xword }; |
| ... | @@ -50456,6 +71059,7 @@ const Select = struct { | ... | @@ -50456,6 +71059,7 @@ const Select = struct { |
| 50456 | const src0w: Sized = .{ .ref = .src0, .size = .word }; | 71059 | const src0w: Sized = .{ .ref = .src0, .size = .word }; |
| 50457 | const src0d: Sized = .{ .ref = .src0, .size = .dword }; | 71060 | const src0d: Sized = .{ .ref = .src0, .size = .dword }; |
| 50458 | const src0p: Sized = .{ .ref = .src0, .size = .ptr }; | 71061 | const src0p: Sized = .{ .ref = .src0, .size = .ptr }; |
| | 71062 | const src0g: Sized = .{ .ref = .src0, .size = .gpr }; |
| 50459 | const src0q: Sized = .{ .ref = .src0, .size = .qword }; | 71063 | const src0q: Sized = .{ .ref = .src0, .size = .qword }; |
| 50460 | const src0t: Sized = .{ .ref = .src0, .size = .tbyte }; | 71064 | const src0t: Sized = .{ .ref = .src0, .size = .tbyte }; |
| 50461 | const src0x: Sized = .{ .ref = .src0, .size = .xword }; | 71065 | const src0x: Sized = .{ .ref = .src0, .size = .xword }; |
| ... | @@ -50466,15 +71070,35 @@ const Select = struct { | ... | @@ -50466,15 +71070,35 @@ const Select = struct { |
| 50466 | const src1w: Sized = .{ .ref = .src1, .size = .word }; | 71070 | const src1w: Sized = .{ .ref = .src1, .size = .word }; |
| 50467 | const src1d: Sized = .{ .ref = .src1, .size = .dword }; | 71071 | const src1d: Sized = .{ .ref = .src1, .size = .dword }; |
| 50468 | const src1p: Sized = .{ .ref = .src1, .size = .ptr }; | 71072 | const src1p: Sized = .{ .ref = .src1, .size = .ptr }; |
| | 71073 | const src1g: Sized = .{ .ref = .src1, .size = .gpr }; |
| 50469 | const src1q: Sized = .{ .ref = .src1, .size = .qword }; | 71074 | const src1q: Sized = .{ .ref = .src1, .size = .qword }; |
| 50470 | const src1t: Sized = .{ .ref = .src1, .size = .tbyte }; | 71075 | const src1t: Sized = .{ .ref = .src1, .size = .tbyte }; |
| 50471 | const src1x: Sized = .{ .ref = .src1, .size = .xword }; | 71076 | const src1x: Sized = .{ .ref = .src1, .size = .xword }; |
| 50472 | const src1y: Sized = .{ .ref = .src1, .size = .yword }; | 71077 | const src1y: Sized = .{ .ref = .src1, .size = .yword }; |
| | 71078 | |
| | 71079 | const src2: Sized = .{ .ref = .src2, .size = .none }; |
| | 71080 | const src2b: Sized = .{ .ref = .src2, .size = .byte }; |
| | 71081 | const src2w: Sized = .{ .ref = .src2, .size = .word }; |
| | 71082 | const src2d: Sized = .{ .ref = .src2, .size = .dword }; |
| | 71083 | const src2p: Sized = .{ .ref = .src2, .size = .ptr }; |
| | 71084 | const src2g: Sized = .{ .ref = .src2, .size = .gpr }; |
| | 71085 | const src2q: Sized = .{ .ref = .src2, .size = .qword }; |
| | 71086 | const src2t: Sized = .{ .ref = .src2, .size = .tbyte }; |
| | 71087 | const src2x: Sized = .{ .ref = .src2, .size = .xword }; |
| | 71088 | const src2y: Sized = .{ .ref = .src2, .size = .yword }; |
| 50473 | }; | 71089 | }; |
| 50474 | | 71090 | |
| 50475 | fn deref(ref: Ref, s: *const Select) Temp { | 71091 | fn typeOf(ref: Ref, s: *const Select) Type { |
| | 71092 | return s.types[@intFromEnum(ref)]; |
| | 71093 | } |
| | 71094 | |
| | 71095 | fn tempOf(ref: Ref, s: *const Select) Temp { |
| 50476 | return s.temps[@intFromEnum(ref)]; | 71096 | return s.temps[@intFromEnum(ref)]; |
| 50477 | } | 71097 | } |
| | 71098 | |
| | 71099 | fn valueOf(ref: Ref, s: *const Select) MCValue { |
| | 71100 | return s.temps[@intFromEnum(ref)].tracking(s.cg).short; |
| | 71101 | } |
| 50478 | }; | 71102 | }; |
| 50479 | | 71103 | |
| 50480 | const @"_": Select.Operand = .{ .flags = .{ .tag = .none } }; | 71104 | const @"_": Select.Operand = .{ .flags = .{ .tag = .none } }; |
| ... | @@ -50490,6 +71114,7 @@ const Select = struct { | ... | @@ -50490,6 +71114,7 @@ const Select = struct { |
| 50490 | const tmp0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0w }; | 71114 | const tmp0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0w }; |
| 50491 | const tmp0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0d }; | 71115 | const tmp0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0d }; |
| 50492 | const tmp0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0p }; | 71116 | const tmp0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0p }; |
| | 71117 | const tmp0g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0g }; |
| 50493 | const tmp0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0q }; | 71118 | const tmp0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0q }; |
| 50494 | const tmp0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0t }; | 71119 | const tmp0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0t }; |
| 50495 | const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0x }; | 71120 | const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0x }; |
| ... | @@ -50499,6 +71124,7 @@ const Select = struct { | ... | @@ -50499,6 +71124,7 @@ const Select = struct { |
| 50499 | const tmp1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1w }; | 71124 | const tmp1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1w }; |
| 50500 | const tmp1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1d }; | 71125 | const tmp1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1d }; |
| 50501 | const tmp1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1p }; | 71126 | const tmp1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1p }; |
| | 71127 | const tmp1g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1g }; |
| 50502 | const tmp1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1q }; | 71128 | const tmp1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1q }; |
| 50503 | const tmp1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1t }; | 71129 | const tmp1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1t }; |
| 50504 | const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1x }; | 71130 | const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1x }; |
| ... | @@ -50508,6 +71134,7 @@ const Select = struct { | ... | @@ -50508,6 +71134,7 @@ const Select = struct { |
| 50508 | const tmp2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2w }; | 71134 | const tmp2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2w }; |
| 50509 | const tmp2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2d }; | 71135 | const tmp2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2d }; |
| 50510 | const tmp2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2p }; | 71136 | const tmp2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2p }; |
| | 71137 | const tmp2g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2g }; |
| 50511 | const tmp2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2q }; | 71138 | const tmp2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2q }; |
| 50512 | const tmp2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2t }; | 71139 | const tmp2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2t }; |
| 50513 | const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2x }; | 71140 | const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2x }; |
| ... | @@ -50517,6 +71144,7 @@ const Select = struct { | ... | @@ -50517,6 +71144,7 @@ const Select = struct { |
| 50517 | const tmp3w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3w }; | 71144 | const tmp3w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3w }; |
| 50518 | const tmp3d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3d }; | 71145 | const tmp3d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3d }; |
| 50519 | const tmp3p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3p }; | 71146 | const tmp3p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3p }; |
| | 71147 | const tmp3g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3g }; |
| 50520 | const tmp3q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3q }; | 71148 | const tmp3q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3q }; |
| 50521 | const tmp3t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3t }; | 71149 | const tmp3t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3t }; |
| 50522 | const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3x }; | 71150 | const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3x }; |
| ... | @@ -50526,6 +71154,7 @@ const Select = struct { | ... | @@ -50526,6 +71154,7 @@ const Select = struct { |
| 50526 | const tmp4w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4w }; | 71154 | const tmp4w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4w }; |
| 50527 | const tmp4d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4d }; | 71155 | const tmp4d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4d }; |
| 50528 | const tmp4p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4p }; | 71156 | const tmp4p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4p }; |
| | 71157 | const tmp4g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4g }; |
| 50529 | const tmp4q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4q }; | 71158 | const tmp4q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4q }; |
| 50530 | const tmp4t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4t }; | 71159 | const tmp4t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4t }; |
| 50531 | const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4x }; | 71160 | const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4x }; |
| ... | @@ -50535,6 +71164,7 @@ const Select = struct { | ... | @@ -50535,6 +71164,7 @@ const Select = struct { |
| 50535 | const tmp5w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5w }; | 71164 | const tmp5w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5w }; |
| 50536 | const tmp5d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5d }; | 71165 | const tmp5d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5d }; |
| 50537 | const tmp5p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5p }; | 71166 | const tmp5p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5p }; |
| | 71167 | const tmp5g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5g }; |
| 50538 | const tmp5q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5q }; | 71168 | const tmp5q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5q }; |
| 50539 | const tmp5t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5t }; | 71169 | const tmp5t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5t }; |
| 50540 | const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5x }; | 71170 | const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5x }; |
| ... | @@ -50544,6 +71174,7 @@ const Select = struct { | ... | @@ -50544,6 +71174,7 @@ const Select = struct { |
| 50544 | const tmp6w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6w }; | 71174 | const tmp6w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6w }; |
| 50545 | const tmp6d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6d }; | 71175 | const tmp6d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6d }; |
| 50546 | const tmp6p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6p }; | 71176 | const tmp6p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6p }; |
| | 71177 | const tmp6g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6g }; |
| 50547 | const tmp6q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6q }; | 71178 | const tmp6q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6q }; |
| 50548 | const tmp6t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6t }; | 71179 | const tmp6t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6t }; |
| 50549 | const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6x }; | 71180 | const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6x }; |
| ... | @@ -50553,6 +71184,7 @@ const Select = struct { | ... | @@ -50553,6 +71184,7 @@ const Select = struct { |
| 50553 | const tmp7w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7w }; | 71184 | const tmp7w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7w }; |
| 50554 | const tmp7d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7d }; | 71185 | const tmp7d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7d }; |
| 50555 | const tmp7p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7p }; | 71186 | const tmp7p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7p }; |
| | 71187 | const tmp7g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7g }; |
| 50556 | const tmp7q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7q }; | 71188 | const tmp7q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7q }; |
| 50557 | const tmp7t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7t }; | 71189 | const tmp7t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7t }; |
| 50558 | const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7x }; | 71190 | const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7x }; |
| ... | @@ -50562,6 +71194,7 @@ const Select = struct { | ... | @@ -50562,6 +71194,7 @@ const Select = struct { |
| 50562 | const tmp8w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8w }; | 71194 | const tmp8w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8w }; |
| 50563 | const tmp8d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8d }; | 71195 | const tmp8d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8d }; |
| 50564 | const tmp8p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8p }; | 71196 | const tmp8p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8p }; |
| | 71197 | const tmp8g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8g }; |
| 50565 | const tmp8q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8q }; | 71198 | const tmp8q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8q }; |
| 50566 | const tmp8t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8t }; | 71199 | const tmp8t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8t }; |
| 50567 | const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8x }; | 71200 | const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8x }; |
| ... | @@ -50571,6 +71204,7 @@ const Select = struct { | ... | @@ -50571,6 +71204,7 @@ const Select = struct { |
| 50571 | const dst0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0w }; | 71204 | const dst0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0w }; |
| 50572 | const dst0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0d }; | 71205 | const dst0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0d }; |
| 50573 | const dst0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0p }; | 71206 | const dst0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0p }; |
| | 71207 | const dst0g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0g }; |
| 50574 | const dst0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0q }; | 71208 | const dst0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0q }; |
| 50575 | const dst0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0t }; | 71209 | const dst0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0t }; |
| 50576 | const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0x }; | 71210 | const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0x }; |
| ... | @@ -50580,6 +71214,7 @@ const Select = struct { | ... | @@ -50580,6 +71214,7 @@ const Select = struct { |
| 50580 | const src0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0w }; | 71214 | const src0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0w }; |
| 50581 | const src0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0d }; | 71215 | const src0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0d }; |
| 50582 | const src0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0p }; | 71216 | const src0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0p }; |
| | 71217 | const src0g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0g }; |
| 50583 | const src0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0q }; | 71218 | const src0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0q }; |
| 50584 | const src0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0t }; | 71219 | const src0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0t }; |
| 50585 | const src0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0x }; | 71220 | const src0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0x }; |
| ... | @@ -50589,11 +71224,22 @@ const Select = struct { | ... | @@ -50589,11 +71224,22 @@ const Select = struct { |
| 50589 | const src1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1w }; | 71224 | const src1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1w }; |
| 50590 | const src1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1d }; | 71225 | const src1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1d }; |
| 50591 | const src1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1p }; | 71226 | const src1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1p }; |
| | 71227 | const src1g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1g }; |
| 50592 | const src1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1q }; | 71228 | const src1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1q }; |
| 50593 | const src1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1t }; | 71229 | const src1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1t }; |
| 50594 | const src1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1x }; | 71230 | const src1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1x }; |
| 50595 | const src1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1y }; | 71231 | const src1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1y }; |
| 50596 | | 71232 | |
| | 71233 | const src2b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2b }; |
| | 71234 | const src2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2w }; |
| | 71235 | const src2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2d }; |
| | 71236 | const src2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2p }; |
| | 71237 | const src2g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2g }; |
| | 71238 | const src2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2q }; |
| | 71239 | const src2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2t }; |
| | 71240 | const src2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2x }; |
| | 71241 | const src2y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2y }; |
| | 71242 | |
| 50597 | fn si(imm: i32) Select.Operand { | 71243 | fn si(imm: i32) Select.Operand { |
| 50598 | return .{ .flags = .{ .tag = .simm }, .imm = imm }; | 71244 | return .{ .flags = .{ .tag = .simm }, .imm = imm }; |
| 50599 | } | 71245 | } |
| ... | @@ -50606,6 +71252,9 @@ const Select = struct { | ... | @@ -50606,6 +71252,9 @@ const Select = struct { |
| 50606 | fn sia(imm: i32, base: Ref.Sized, adjust: Adjust) Select.Operand { | 71252 | fn sia(imm: i32, base: Ref.Sized, adjust: Adjust) Select.Operand { |
| 50607 | return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .imm = imm }; | 71253 | return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .imm = imm }; |
| 50608 | } | 71254 | } |
| | 71255 | fn sia2(imm: i32, base: Ref.Sized, index: Ref, adjust: Adjust) Select.Operand { |
| | 71256 | return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .index = .{ .ref = index }, .imm = imm }; |
| | 71257 | } |
| 50609 | fn ui(imm: u32) Select.Operand { | 71258 | fn ui(imm: u32) Select.Operand { |
| 50610 | return .{ .flags = .{ .tag = .uimm }, .imm = @bitCast(imm) }; | 71259 | return .{ .flags = .{ .tag = .uimm }, .imm = @bitCast(imm) }; |
| 50611 | } | 71260 | } |
| ... | @@ -50786,36 +71435,36 @@ const Select = struct { | ... | @@ -50786,36 +71435,36 @@ const Select = struct { |
| 50786 | .none => 0, | 71435 | .none => 0, |
| 50787 | .ptr_size => @divExact(s.cg.target.ptrBitWidth(), 8), | 71436 | .ptr_size => @divExact(s.cg.target.ptrBitWidth(), 8), |
| 50788 | .ptr_bit_size => s.cg.target.ptrBitWidth(), | 71437 | .ptr_bit_size => s.cg.target.ptrBitWidth(), |
| 50789 | .size => @intCast(op.base.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu)), | 71438 | .size => @intCast(op.base.ref.typeOf(s).abiSize(s.cg.pt.zcu)), |
| 50790 | .delta_size => @intCast(@as(SignedImm, @intCast(op.base.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu))) - | 71439 | .delta_size => @intCast(@as(SignedImm, @intCast(op.base.ref.typeOf(s).abiSize(s.cg.pt.zcu))) - |
| 50791 | @as(SignedImm, @intCast(op.index.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu)))), | 71440 | @as(SignedImm, @intCast(op.index.ref.typeOf(s).abiSize(s.cg.pt.zcu)))), |
| 50792 | .delta_elem_size => @intCast(@as(SignedImm, @intCast(op.base.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))) - | 71441 | .delta_elem_size => @intCast(@as(SignedImm, @intCast(op.base.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))) - |
| 50793 | @as(SignedImm, @intCast(op.index.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)))), | 71442 | @as(SignedImm, @intCast(op.index.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)))), |
| 50794 | .size_sub_elem_size => { | 71443 | .size_sub_elem_size => { |
| 50795 | const ty = op.base.ref.deref(s).typeOf(s.cg); | 71444 | const ty = op.base.ref.typeOf(s); |
| 50796 | break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); | 71445 | break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); |
| 50797 | }, | 71446 | }, |
| 50798 | .unaligned_size => @intCast(s.cg.unalignedSize(op.base.ref.deref(s).typeOf(s.cg))), | 71447 | .unaligned_size => @intCast(s.cg.unalignedSize(op.base.ref.typeOf(s))), |
| 50799 | .bit_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), | 71448 | .bit_size => @intCast(op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), |
| 50800 | .src0_bit_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), | 71449 | .src0_bit_size => @intCast(Select.Operand.Ref.src0.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), |
| 50801 | .len => @intCast(op.base.ref.deref(s).typeOf(s.cg).vectorLen(s.cg.pt.zcu)), | 71450 | .len => @intCast(op.base.ref.typeOf(s).vectorLen(s.cg.pt.zcu)), |
| 50802 | .elem_limbs => @intCast(@divExact( | 71451 | .elem_limbs => @intCast(@divExact( |
| 50803 | op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).abiSize(s.cg.pt.zcu), | 71452 | op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).abiSize(s.cg.pt.zcu), |
| 50804 | @divExact(op.base.size.bitSize(s.cg.target), 8), | 71453 | @divExact(op.base.size.bitSize(s.cg.target), 8), |
| 50805 | )), | 71454 | )), |
| 50806 | .elem_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)), | 71455 | .elem_size => @intCast(op.base.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)), |
| 50807 | .src0_elem_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)), | 71456 | .src0_elem_size => @intCast(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)), |
| 50808 | .src0_elem_size_times_src1 => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu) * | 71457 | .src0_elem_size_times_src1 => @intCast(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu) * |
| 50809 | Select.Operand.Ref.src1.deref(s).tracking(s.cg).short.immediate), | 71458 | Select.Operand.Ref.src1.valueOf(s).immediate), |
| 50810 | .log2_src0_elem_size => @intCast(std.math.log2(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))), | 71459 | .log2_src0_elem_size => @intCast(std.math.log2(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))), |
| 50811 | .smin => @as(SignedImm, std.math.minInt(SignedImm)) >> @truncate( | 71460 | .smin => @as(SignedImm, std.math.minInt(SignedImm)) >> @truncate( |
| 50812 | -%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), | 71461 | -%op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), |
| 50813 | ), | 71462 | ), |
| 50814 | .smax => @as(SignedImm, std.math.maxInt(SignedImm)) >> @truncate( | 71463 | .smax => @as(SignedImm, std.math.maxInt(SignedImm)) >> @truncate( |
| 50815 | -%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), | 71464 | -%op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), |
| 50816 | ), | 71465 | ), |
| 50817 | .umax => @bitCast(@as(UnsignedImm, std.math.maxInt(UnsignedImm)) >> @truncate( | 71466 | .umax => @bitCast(@as(UnsignedImm, std.math.maxInt(UnsignedImm)) >> @truncate( |
| 50818 | -%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), | 71467 | -%op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), |
| 50819 | )), | 71468 | )), |
| 50820 | }; | 71469 | }; |
| 50821 | const rhs = op.flags.adjust.rhs.toLog2(); | 71470 | const rhs = op.flags.adjust.rhs.toLog2(); |
| ... | @@ -50826,6 +71475,7 @@ const Select = struct { | ... | @@ -50826,6 +71475,7 @@ const Select = struct { |
| 50826 | break :res res[0]; | 71475 | break :res res[0]; |
| 50827 | }, | 71476 | }, |
| 50828 | .div => @shrExact(lhs, rhs), | 71477 | .div => @shrExact(lhs, rhs), |
| | 71478 | .rem_8_mul => lhs & (@as(SignedImm, 1) << @intCast(@as(u3, 3) + rhs)) - 1, |
| 50829 | }; | 71479 | }; |
| 50830 | return switch (op.flags.adjust.sign) { | 71480 | return switch (op.flags.adjust.sign) { |
| 50831 | .neg => op.imm - res, | 71481 | .neg => op.imm - res, |
| ... | @@ -50842,7 +71492,7 @@ const Select = struct { | ... | @@ -50842,7 +71492,7 @@ const Select = struct { |
| 50842 | label.* = @intCast(s.cg.mir_instructions.len); | 71492 | label.* = @intCast(s.cg.mir_instructions.len); |
| 50843 | break .{ .inst = undefined }; | 71493 | break .{ .inst = undefined }; |
| 50844 | } else unreachable, | 71494 | } else unreachable, |
| 50845 | .ref => switch (op.base.ref.deref(s).tracking(s.cg).short) { | 71495 | .ref => switch (op.base.ref.valueOf(s)) { |
| 50846 | .immediate => |imm| .{ .imm = switch (op.base.size) { | 71496 | .immediate => |imm| .{ .imm = switch (op.base.size) { |
| 50847 | .byte => if (std.math.cast(i8, @as(i64, @bitCast(imm)))) |simm| .s(simm) else .u(@as(u8, @intCast(imm))), | 71497 | .byte => if (std.math.cast(i8, @as(i64, @bitCast(imm)))) |simm| .s(simm) else .u(@as(u8, @intCast(imm))), |
| 50848 | .word => if (std.math.cast(i16, @as(i64, @bitCast(imm)))) |simm| .s(simm) else .u(@as(u16, @intCast(imm))), | 71498 | .word => if (std.math.cast(i16, @as(i64, @bitCast(imm)))) |simm| .s(simm) else .u(@as(u16, @intCast(imm))), |
| ... | @@ -50857,21 +71507,21 @@ const Select = struct { | ... | @@ -50857,21 +71507,21 @@ const Select = struct { |
| 50857 | .simm => .{ .imm = .s(op.adjustedImm(i32, s)) }, | 71507 | .simm => .{ .imm = .s(op.adjustedImm(i32, s)) }, |
| 50858 | .uimm => .{ .imm = .u(@bitCast(op.adjustedImm(i64, s))) }, | 71508 | .uimm => .{ .imm = .u(@bitCast(op.adjustedImm(i64, s))) }, |
| 50859 | .lea => .{ .mem = .{ | 71509 | .lea => .{ .mem = .{ |
| 50860 | .base = .{ .reg = registerAlias(op.base.ref.deref(s).tracking(s.cg).short.register, @divExact(s.cg.target.ptrBitWidth(), 8)) }, | 71510 | .base = .{ .reg = registerAlias(op.base.ref.valueOf(s).register, @divExact(s.cg.target.ptrBitWidth(), 8)) }, |
| 50861 | .mod = .{ .rm = .{ | 71511 | .mod = .{ .rm = .{ |
| 50862 | .size = op.base.size, | 71512 | .size = op.base.size, |
| 50863 | .index = switch (op.index.ref) { | 71513 | .index = switch (op.index.ref) { |
| 50864 | else => |ref| registerAlias(ref.deref(s).tracking(s.cg).short.register, @divExact(s.cg.target.ptrBitWidth(), 8)), | 71514 | else => |ref| registerAlias(ref.valueOf(s).register, @divExact(s.cg.target.ptrBitWidth(), 8)), |
| 50865 | .none => .none, | 71515 | .none => .none, |
| 50866 | }, | 71516 | }, |
| 50867 | .scale = op.index.scale, | 71517 | .scale = op.index.scale, |
| 50868 | .disp = op.adjustedImm(i32, s), | 71518 | .disp = op.adjustedImm(i32, s), |
| 50869 | } }, | 71519 | } }, |
| 50870 | } }, | 71520 | } }, |
| 50871 | .mem => .{ .mem = try op.base.ref.deref(s).tracking(s.cg).short.mem(s.cg, .{ | 71521 | .mem => .{ .mem = try op.base.ref.valueOf(s).mem(s.cg, .{ |
| 50872 | .size = op.base.size, | 71522 | .size = op.base.size, |
| 50873 | .index = switch (op.index.ref) { | 71523 | .index = switch (op.index.ref) { |
| 50874 | else => |ref| registerAlias(ref.deref(s).tracking(s.cg).short.register, @divExact(s.cg.target.ptrBitWidth(), 8)), | 71524 | else => |ref| registerAlias(ref.valueOf(s).register, @divExact(s.cg.target.ptrBitWidth(), 8)), |
| 50875 | .none => .none, | 71525 | .none => .none, |
| 50876 | }, | 71526 | }, |
| 50877 | .scale = op.index.scale, | 71527 | .scale = op.index.scale, |
| ... | @@ -50888,7 +71538,7 @@ fn select( | ... | @@ -50888,7 +71538,7 @@ fn select( |
| 50888 | src_temps: []Temp, | 71538 | src_temps: []Temp, |
| 50889 | cases: []const Select.Case, | 71539 | cases: []const Select.Case, |
| 50890 | ) !void { | 71540 | ) !void { |
| 50891 | @setEvalBranchQuota(33_600); | 71541 | @setEvalBranchQuota(33_500); |
| 50892 | cases: for (cases) |case| { | 71542 | cases: for (cases) |case| { |
| 50893 | for (case.required_features) |required_feature| if (required_feature) |feature| if (!cg.hasFeature(feature)) continue :cases; | 71543 | for (case.required_features) |required_feature| if (required_feature) |feature| if (!cg.hasFeature(feature)) continue :cases; |
| 50894 | for (case.src_constraints[0..src_temps.len], src_temps) |src_constraint, src_temp| if (!src_constraint.accepts(src_temp.typeOf(cg), cg)) continue :cases; | 71544 | for (case.src_constraints[0..src_temps.len], src_temps) |src_constraint, src_temp| if (!src_constraint.accepts(src_temp.typeOf(cg), cg)) continue :cases; |
| ... | @@ -50914,12 +71564,21 @@ fn select( | ... | @@ -50914,12 +71564,21 @@ fn select( |
| 50914 | var s: Select = .{ | 71564 | var s: Select = .{ |
| 50915 | .cg = cg, | 71565 | .cg = cg, |
| 50916 | .temps = undefined, | 71566 | .temps = undefined, |
| | 71567 | .types = undefined, |
| 50917 | .labels = @splat(.{ .forward = @splat(null), .backward = null }), | 71568 | .labels = @splat(.{ .forward = @splat(null), .backward = null }), |
| 50918 | .top = 0, | 71569 | .top = 0, |
| 50919 | }; | 71570 | }; |
| 50920 | const tmp_slots = s.temps[@intFromEnum(Select.Operand.Ref.tmp0)..@intFromEnum(Select.Operand.Ref.dst0)]; | 71571 | const s_tmp_types = s.types[@intFromEnum(Select.Operand.Ref.tmp0)..@intFromEnum(Select.Operand.Ref.dst0)]; |
| 50921 | const dst_slots = s.temps[@intFromEnum(Select.Operand.Ref.dst0)..@intFromEnum(Select.Operand.Ref.src0)]; | 71572 | const s_tmp_temps = s.temps[@intFromEnum(Select.Operand.Ref.tmp0)..@intFromEnum(Select.Operand.Ref.dst0)]; |
| 50922 | const src_slots = s.temps[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)]; | 71573 | const s_dst_types = s.types[@intFromEnum(Select.Operand.Ref.dst0)..@intFromEnum(Select.Operand.Ref.src0)]; |
| | 71574 | const s_dst_temps = s.temps[@intFromEnum(Select.Operand.Ref.dst0)..@intFromEnum(Select.Operand.Ref.src0)]; |
| | 71575 | const s_src_types = s.types[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)]; |
| | 71576 | const s_src_temps = s.temps[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)]; |
| | 71577 | |
| | 71578 | for (s_tmp_types, case.extra_temps) |*ty, spec| ty.* = spec.type; |
| | 71579 | @memcpy(s_dst_types[0..dst_tys.len], dst_tys); |
| | 71580 | for (s_src_types[0..src_temps.len], src_temps) |*ty, temp| ty.* = temp.typeOf(cg); |
| | 71581 | std.mem.swap(Type, &s_src_types[pattern.commute[0]], &s_src_types[pattern.commute[1]]); |
| 50923 | | 71582 | |
| 50924 | caller_preserved: { | 71583 | caller_preserved: { |
| 50925 | const cc = switch (case.clobbers.caller_preserved) { | 71584 | const cc = switch (case.clobbers.caller_preserved) { |
| ... | @@ -50943,23 +71602,23 @@ fn select( | ... | @@ -50943,23 +71602,23 @@ fn select( |
| 50943 | } | 71602 | } |
| 50944 | } | 71603 | } |
| 50945 | | 71604 | |
| 50946 | @memcpy(src_slots[0..src_temps.len], src_temps); | 71605 | @memcpy(s_src_temps[0..src_temps.len], src_temps); |
| 50947 | std.mem.swap(Temp, &src_slots[pattern.commute[0]], &src_slots[pattern.commute[1]]); | 71606 | std.mem.swap(Temp, &s_src_temps[pattern.commute[0]], &s_src_temps[pattern.commute[1]]); |
| 50948 | for (dst_temps, dst_tys, case.dst_temps[0..dst_temps.len]) |*dst_temp, dst_ty, dst_kind| { | 71607 | for (dst_temps, dst_tys, case.dst_temps[0..dst_temps.len]) |*dst_temp, dst_ty, dst_kind| { |
| 50949 | if (dst_kind.pass() != 1) continue; | 71608 | if (dst_kind.pass() != 1) continue; |
| 50950 | dst_temp.*, _ = try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s); | 71609 | dst_temp.*, _ = try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s); |
| 50951 | } | 71610 | } |
| 50952 | var tmp_owned: [tmp_slots.len]bool = @splat(false); | 71611 | var tmp_owned: [s_tmp_temps.len]bool = @splat(false); |
| 50953 | for (1..3) |pass| for (tmp_slots, &tmp_owned, case.extra_temps) |*slot, *owned, spec| { | 71612 | for (1..3) |pass| for (s_tmp_temps, &tmp_owned, case.extra_temps) |*temp, *owned, spec| { |
| 50954 | if (spec.kind.pass() != pass) continue; | 71613 | if (spec.kind.pass() != pass) continue; |
| 50955 | slot.*, owned.* = try spec.create(&s); | 71614 | temp.*, owned.* = try spec.create(&s); |
| 50956 | }; | 71615 | }; |
| 50957 | | 71616 | |
| 50958 | while (true) for (pattern.src[0..src_temps.len], src_temps) |src_pattern, *src_temp| { | 71617 | while (true) for (pattern.src[0..src_temps.len], src_temps) |src_pattern, *src_temp| { |
| 50959 | if (try src_pattern.convert(src_temp, cg)) break; | 71618 | if (try src_pattern.convert(src_temp, cg)) break; |
| 50960 | } else break; | 71619 | } else break; |
| 50961 | @memcpy(src_slots[0..src_temps.len], src_temps); | 71620 | @memcpy(s_src_temps[0..src_temps.len], src_temps); |
| 50962 | std.mem.swap(Temp, &src_slots[pattern.commute[0]], &src_slots[pattern.commute[1]]); | 71621 | std.mem.swap(Temp, &s_src_temps[pattern.commute[0]], &s_src_temps[pattern.commute[1]]); |
| 50963 | | 71622 | |
| 50964 | if (case.clobbers.eflags) try cg.spillEflagsIfOccupied(); | 71623 | if (case.clobbers.eflags) try cg.spillEflagsIfOccupied(); |
| 50965 | | 71624 | |
| ... | @@ -50967,7 +71626,7 @@ fn select( | ... | @@ -50967,7 +71626,7 @@ fn select( |
| 50967 | if (dst_kind.pass() != 2) continue; | 71626 | if (dst_kind.pass() != 2) continue; |
| 50968 | dst_temp.*, _ = try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s); | 71627 | dst_temp.*, _ = try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s); |
| 50969 | } | 71628 | } |
| 50970 | @memcpy(dst_slots[0..dst_temps.len], dst_temps); | 71629 | @memcpy(s_dst_temps[0..dst_temps.len], dst_temps); |
| 50971 | | 71630 | |
| 50972 | switch (case.each) { | 71631 | switch (case.each) { |
| 50973 | .once => |body| { | 71632 | .once => |body| { |
| ... | @@ -50996,7 +71655,7 @@ fn select( | ... | @@ -50996,7 +71655,7 @@ fn select( |
| 50996 | } | 71655 | } |
| 50997 | } | 71656 | } |
| 50998 | for (dst_temps, case.dst_temps[0..dst_temps.len]) |dst_temp, dst_kind| dst_kind.finish(dst_temp, &s); | 71657 | for (dst_temps, case.dst_temps[0..dst_temps.len]) |dst_temp, dst_kind| dst_kind.finish(dst_temp, &s); |
| 50999 | for (tmp_owned, tmp_slots) |owned, temp| if (owned) try temp.die(cg); | 71658 | for (tmp_owned, s_tmp_temps) |owned, temp| if (owned) try temp.die(cg); |
| 51000 | return; | 71659 | return; |
| 51001 | } | 71660 | } |
| 51002 | } | 71661 | } |